CN114503573A - 低复杂性增强视频编码 - Google Patents
低复杂性增强视频编码 Download PDFInfo
- Publication number
- CN114503573A CN114503573A CN202080036630.8A CN202080036630A CN114503573A CN 114503573 A CN114503573 A CN 114503573A CN 202080036630 A CN202080036630 A CN 202080036630A CN 114503573 A CN114503573 A CN 114503573A
- Authority
- CN
- China
- Prior art keywords
- level
- temporal
- residual
- video
- encoding
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 696
- 230000002123 temporal effect Effects 0.000 claims abstract description 554
- 238000013139 quantization Methods 0.000 claims abstract description 265
- 239000000872 buffer Substances 0.000 claims description 240
- 230000011664 signaling Effects 0.000 claims description 180
- 238000013528 artificial neural network Methods 0.000 claims description 41
- 238000005070 sampling Methods 0.000 claims description 40
- 238000001914 filtration Methods 0.000 claims description 36
- 238000004458 analytical method Methods 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 10
- 238000013527 convolutional neural network Methods 0.000 claims description 8
- 238000003860 storage Methods 0.000 claims description 6
- 230000001131 transforming effect Effects 0.000 claims description 6
- 230000003139 buffering effect Effects 0.000 abstract description 13
- 230000008569 process Effects 0.000 description 424
- 239000010410 layer Substances 0.000 description 358
- 238000012545 processing Methods 0.000 description 141
- 239000011159 matrix material Substances 0.000 description 109
- 239000000523 sample Substances 0.000 description 102
- 230000006870 function Effects 0.000 description 77
- 230000000875 corresponding effect Effects 0.000 description 60
- 241000023320 Luma <angiosperm> Species 0.000 description 52
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 52
- 230000009466 transformation Effects 0.000 description 32
- 238000004364 calculation method Methods 0.000 description 29
- 238000013459 approach Methods 0.000 description 24
- 238000000354 decomposition reaction Methods 0.000 description 24
- 239000003607 modifier Substances 0.000 description 24
- 238000003491 array Methods 0.000 description 22
- 238000006243 chemical reaction Methods 0.000 description 20
- 238000013507 mapping Methods 0.000 description 19
- 238000007906 compression Methods 0.000 description 16
- 230000006835 compression Effects 0.000 description 16
- 238000012937 correction Methods 0.000 description 16
- 238000004422 calculation algorithm Methods 0.000 description 15
- 238000007667 floating Methods 0.000 description 15
- 239000011229 interlayer Substances 0.000 description 15
- 230000000670 limiting effect Effects 0.000 description 15
- 230000008859 change Effects 0.000 description 13
- 230000000052 comparative effect Effects 0.000 description 13
- 230000036961 partial effect Effects 0.000 description 13
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 12
- 235000019557 luminance Nutrition 0.000 description 11
- 230000007704 transition Effects 0.000 description 11
- 230000002829 reductive effect Effects 0.000 description 10
- 230000008901 benefit Effects 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 9
- 238000009795 derivation Methods 0.000 description 9
- 238000009826 distribution Methods 0.000 description 9
- 230000014759 maintenance of location Effects 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 9
- 239000013598 vector Substances 0.000 description 9
- 238000012986 modification Methods 0.000 description 8
- 230000004048 modification Effects 0.000 description 8
- 230000003068 static effect Effects 0.000 description 8
- 238000012546 transfer Methods 0.000 description 8
- 230000003044 adaptive effect Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 7
- 230000000295 complement effect Effects 0.000 description 7
- 230000000694 effects Effects 0.000 description 7
- 239000002356 single layer Substances 0.000 description 7
- 238000012360 testing method Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000006872 improvement Effects 0.000 description 6
- 230000015654 memory Effects 0.000 description 6
- 229940075930 picrate Drugs 0.000 description 6
- OXNIZHLAWKMVMX-UHFFFAOYSA-M picrate anion Chemical compound [O-]C1=C([N+]([O-])=O)C=C([N+]([O-])=O)C=C1[N+]([O-])=O OXNIZHLAWKMVMX-UHFFFAOYSA-M 0.000 description 6
- 238000012805 post-processing Methods 0.000 description 6
- 230000000153 supplemental effect Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000001276 controlling effect Effects 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 4
- 239000000945 filler Substances 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 4
- 238000010606 normalization Methods 0.000 description 4
- 238000007781 pre-processing Methods 0.000 description 4
- 230000002265 prevention Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000012549 training Methods 0.000 description 4
- 230000000007 visual effect Effects 0.000 description 4
- 230000006978 adaptation Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 238000013075 data extraction Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 238000012886 linear function Methods 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 239000000203 mixture Substances 0.000 description 3
- 230000001537 neural effect Effects 0.000 description 3
- 239000012536 storage buffer Substances 0.000 description 3
- 108010076282 Factor IX Proteins 0.000 description 2
- 102100037812 Medium-wave-sensitive opsin 1 Human genes 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 238000012512 characterization method Methods 0.000 description 2
- 239000003086 colorant Substances 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013144 data compression Methods 0.000 description 2
- 230000006735 deficit Effects 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000009499 grossing Methods 0.000 description 2
- 238000007620 mathematical function Methods 0.000 description 2
- 230000001343 mnemonic effect Effects 0.000 description 2
- 230000002688 persistence Effects 0.000 description 2
- 230000000750 progressive effect Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 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 1
- 238000012935 Averaging Methods 0.000 description 1
- 239000004235 Orange GGN Substances 0.000 description 1
- 102100029469 WD repeat and HMG-box DNA-binding protein 1 Human genes 0.000 description 1
- 101710097421 WD repeat and HMG-box DNA-binding protein 1 Proteins 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000002508 compound effect Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000011049 filling Methods 0.000 description 1
- 102000054766 genetic haplotypes Human genes 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000000691 measurement method Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 239000002994 raw material Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000007480 spreading Effects 0.000 description 1
- 238000003892 spreading Methods 0.000 description 1
- 238000001356 surgical procedure Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000004148 unit process 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/90—Methods 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/93—Run-length coding
-
- 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/136—Incoming video signal characteristics or properties
-
- 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/124—Quantisation
-
- 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/176—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 block, e.g. a macroblock
-
- 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/18—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 set of transform coefficients
-
- 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/186—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 colour or a chrominance component
-
- 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/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
- H04N19/33—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the spatial domain
-
- 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/46—Embedding additional information in the video signal during the compression process
-
- 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/48—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using compressed domain processing techniques other than decoding, e.g. modification of transform coefficients, variable length coding [VLC] data or run-length data
-
- 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
-
- 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/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
-
- 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/90—Methods 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/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Image Processing (AREA)
- Color Television Systems (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
描述低复杂性增强视频编码的实例。描述编码和解码方法,以及相应的编码器和解码器。增强编码可在基础层上操作,所述基础层可提供基础编码和解码。可跨不同层应用空间缩放。仅所述基础层编码可能处于较低分辨率的完整视频。而所述增强编码在所计算的残差集合上操作。针对多个层计算所述残差集合,所述多个层可表示一个或多个维度中的不同缩放水平。描述若干编码和解码组件或工具,其可涉及变换、量化、熵编码和时间缓冲的应用。在实例解码器处,经编码基础流和一个或多个经编码增强流可独立地解码且组合以重建原始视频。
Description
技术领域
本发明涉及视频编码技术。确切地说,本发明涉及用于编码和解码视频数据的方法和系统。在特定实例中,所述方法和系统可用于生成经压缩表示以供流式传输和/或存储。
背景技术
典型的相当的视频编解码器使用单层基于块的方法操作,借此使用若干编码工具处理原始信号以便产生经编码信号,所述经编码信号可接着通过相应解码过程重建。为简单起见,编码和解码算法或过程常常被称作“编解码器”;术语“编解码器”用于涵盖根据共同框架结构设计的编码和解码过程中的一个或多个。此些典型的编解码器包含(但不限于)MPEG-2、AVC/H.264、HEVC/H.265、VP8、VP9、AV1。还存在当前由例如MPEG/ISO/ITU等国际标准组织以及例如开放媒体联盟(AoM)等行业联合体开发的其它编解码器。
近年来,已经提出对单层基于块的方法的调适。举例来说,存在使用多层基于块的方法的一类编解码器。这些编解码器常常在视频编码行业内被称为“可缩放”编解码器。其通常在若干层上复制由单层基于块的方法执行的操作,其中通过对原始信号进行下取样来获得层的集合。在某些情况下,单层基于块的方法中的效率可通过重新使用来自下层的信息来编码(和解码)上层而实现。这些可缩放编解码器意图在如下意义上向操作者提供可缩放性特征:其需要保证向下缩放的经解码信号(例如,较低分辨率信号)的质量满足现有服务的质量要求,以及确保未经缩放的经解码信号(例如,较高分辨率信号)的质量与由相应单层编解码器产生的质量相当。
“可缩放”编解码器的实例是可缩放视频编码-SVC(例如参见“H.264/AVC标准的可缩放视频编码扩展(The Scalable Video Coding Extension of the H.264/AVCStandard)”,H.Schwarz和M.Wien,IEEE信号处理杂志,2008年3月,其以引用的方式并入本文中)。SVC是先进视频编码标准-AVC的可缩放型式(AVC也被称为H.264)。在SVC中,使用相同的基于AVC的单层过程处理每一可缩放层,且上层接收来自下层的信息(例如,层间预测包含残差信息和运动信息),所述信息用于上层的编码以减少上层处的编码信息。相反,为了解码,SVC解码器需要接收各种开销信息以及解码下层以便能够解码上层。
可缩放编解码器的另一实例是高效视频编码标准(HEVC)的可缩放扩展-SHVC(参见例如“SHVC的概览:高效视频编码标准的可缩放扩展(Overview of SHVC:ScalableExtensions of the High Efficiency Video Coding Standard)”,J.Boyce、Y.Ye、J.Chen和A.Ramasubramonian,关于视频技术的电路和系统的IEEE汇刊,第26卷第1期,2016年1月,其以引用的方式并入本文中)。类似于SVC,SHVC也针对每一可缩放层使用相同的基于HEVC的过程,但其允许下层使用AVC或HEVC。在SHVC中,上层还在上层的编码过程中接收来自下层的信息(例如,层间处理包含运动信息和/或经上取样下层作为用于上层编码的额外参考图片)以减少上层处的编码信息。再次,类似于SVC,SHVC解码器需要接收各种开销信息以及解码下层以便能够解码上层。
SVC和SHVC两者可用于以不同质量水平编码多个流中的数据。举例来说,SVC和SHVC可用于编码例如SD(标清)和HD(高清)流或HD和UHD(超高清)流。基础流(最低质量水平下)通常经编码使得基础流的质量与基础流与任何较高层级流分开被编码为单个流的情况相同。SVC和SHVC两者可被认为主要是共同编码器和解码器结构的并行副本的集合,其中这些并行副本的输出分别经多路复用和解复用。
更详细来说,在实例SVC编码内,可对UHD流(例如,一系列图像)进行下取样以生成HD流。UHD流和HD流接着各自使用AVC编码器单独地编码。尽管此实例描述两层编码器(用于编码两个流:UHD流和HD流),但SVC编码器可具有n层(其中n>2),其中每一层作为独立的AVC编码器操作。
按照标准AVC编码,每一SVC层的AVC编码器使用帧间预测(其中使用不同帧来估计当前帧的值)或帧内预测(其中使用帧内的其它块来估计所述相同帧的给定块的值)来编码每一像素块。这些像素块通常被称作“宏块”。帧间预测涉及执行运动补偿,其涉及确定先前帧的像素块和当前帧的相应像素块之间的运动。层内的帧间和帧内预测两者涉及计算所谓的“残差”。这些“残差”是给定层的数据流的像素块和使用帧间预测或帧内预测确定的相同层内的相应像素块之间的差。如此,这些“残差”是层中的当前像素块与以下任一个之间的差:1)基于帧内的并非当前像素块的一个或多个像素块(例如,通常是同一层内的相邻像素块)的当前像素块的预测;或2)基于来自层内其它帧的信息的层内的当前像素块的预测(例如,使用运动向量)。
在SVC中,尽管实施为并行AVC编码器的集合,但可通过重新使用针对较低质量流(例如HD流)获得的信息来编码较高质量流(例如UHD流)而获得一些效率。此信息的重新使用涉及被称作“层间传信”的过程。应注意,这不同于“帧间”和“帧内”预测,后者是“层内”编码方法。举例来说,在无层间传信的情况下,SVC流的总带宽BWTot可表达为BWTot=BWHD+BWUHD,其中BWHD是与单独地发送经编码HD流相关联的带宽,且BWUHD是与单独地发送经编码UHD流相关联的带宽(假定不同流之间无信息共享)。然而,通过使用层间传信,相比于与HD流分开发送UHD流的情况,UHD流的带宽BWUHD可减小。通常,通过使用层间传信,总带宽可减小,使得
在SVC中,层间传信可包括三种类型的信息中的一个:层间帧内预测(其中在针对UHD流的帧内预测中使用来自HD流的经上取样像素块)、层间残余预测(其涉及计算上取样之后针对HD流计算的残差和针对给定像素块的UHD流计算的残差之间的残差),以及层间运动补偿(其涉及使用针对HD流确定的运动补偿参数来执行针对UHD流的运动补偿)。
类似于SVC是AVC的可缩放扩展,SHVC是HEVC的可缩放扩展。AVC涉及将帧划分为宏块(通常大小为16×16像素)。可从帧内的其它宏块(帧内预测)或从先前帧的宏块(帧间预测)预测给定宏块。HEVC的类似于宏块的结构是编码树单元(CTU),其可大于宏块(例如,直至大小为64×64像素),且其进一步划分成编码单元(CU)。HEVC提供优于AVC的一些改进,包含改进运动向量确定、运动补偿和帧内预测,这可以允许相比于AVC改进数据压缩。然而,HEVC的“可缩放”方面非常类似于AVC的“可缩放”方面;即,两者均使用并行编码流的概念,借此可经由层间信息交换获得一些效率。举例来说,SHVC还提供包含层间帧内预测、层间残余预测和层间运动补偿的层间传信。类似于SVC,例如HD和UHD等不同质量水平由并行层编码且接着组合于流中以供解码。
尽管SVC和SHVC可用,但可缩放编解码器的利用一直低于预期。此情况的一个原因是这些方案的复杂性和适度带宽节省。在视频递送的领域内,许多先导产业专家认为,当前可用的解决方案不能解决二十一世纪递送视频的挑战。这些产业专家包含从销售商到传统广播电视公司以及从卫星提供商到例如社交媒体公司等过顶(over-the-top,OTT)服务提供商的大范围实体。
一般来说,视频服务提供商需要应对复杂的生态系统。视频编解码器的选择常常基于许多各种因素,包含与其现有生态系统的最大兼容性和部署技术的成本(例如,资源和货币成本两者)。一旦作出选择,就难以在无设备和时间的形式的进一步大规模投资的情况下改变编解码器。当前,不完全替代生态系统,就难以升级生态系统。此外,有时使用例如所谓的“云”配置等分散化基础设施递送增加数目的服务的资源成本和复杂性正变成服务运营商(不论大小)面临的关键问题。这由于低资源电池供电式边缘装置(例如,所谓的物联网中的节点)的增长而复杂化。所有这些因素需要以减少资源占用的需要(例如,变得更环保)和缩放的需要(例如,增加用户和所提供服务的数目)来平衡。
还存在许多对比的编解码器是在大规模商用硬件不可用的时候开发的问题。如今情况不是这样。大规模数据中心提供便宜的通用数据处理硬件。这与需要定制硬件来有效地操作的传统视频编码解决方案相矛盾。
发明内容
在所附独立权利要求项中陈述本发明的各方面。接着在所附附属权利要求项中陈述本发明的某些变型。
附图说明
现将仅借助于实例参考附图来描述本发明的实例。
图1是根据第一实例的编码器的示意性图示。
图2是根据第一实例的解码器的示意性图示。
图3A是根据第二实例的第一变型的编码器的示意性图示。
图3B是根据第二实例的第二变型的编码器的示意性图示。
图4是根据第三实例的编码器的示意性图示。
图5A是根据第二实例的解码器的示意性图示。
图5B是根据第三实例的解码器的第一变型的示意性图示。
图5C是根据第三实例的解码器的第二变型的示意性图示。
图6A是展示残差的实例4乘4编码单元的示意性图示。
图6B是展示编码单元可如何布置成拼片的示意性图示。
图7A到7C是展示可能的颜色平面布置的示意性图示。
图8是展示配置位流的方法的流程图。
图9A是展示颜色平面可如何分解为多个层的示意性图示。
图9B到9J是展示上取样的各种方法的示意性图示。
图10A到10I是展示对经量化数据进行熵编码的各种方法的示意性图示。
图11A到11C是展示不同时间模式的方面的示意性图示。
图12A和12B是展示根据实例用于应用时间预测的组件的示意性图示。
图12C和12D是展示时间信令如何与编码单元和拼片相关的示意性图示。
图12E是展示用于游程长度编码的实例状态机的示意性图示。
图13A和13B是展示根据一实例的应用时间处理的方法的流程图的两个半部。
图14A到14C是展示云控制的实例方面的示意性图示。
图15是展示根据一实例的残差加权的示意性图示。
图16A到16D是展示根据各种实例的预测平均值要素的计算的示意性图示。
图17A和17B是展示可应用于第一和第二层级增强编码中的一个或多个的速率控制器的示意性图示。
图18是展示根据第一实例的速率控制器的示意性图示。
图19是展示根据第二实例的速率控制器的示意性图示。
图20A到20D是展示可在实例中使用的量化的各个方面的示意性图示。
图21A和21B是展示不同位流配置的示意性图示。
图22A到22D是展示实例神经网络上取样器的不同方面的示意性图示。
图23是展示可如何编码帧的实例的示意性图示。
图24是根据第四实例的解码器的示意性图示。
图25是根据第五实例的编码器的示意性图示。
图26是根据第五实例的解码器的示意性图示。
图27是指示根据一实例的解码过程的流程图。
图28A到28E展示用于前缀编码实例的解析树。
图29A展示可用于检查解码器的顺应性的两个类型的位流。
图29B展示实例组合式解码器。
图30展示实例帧的顶部和底部字段的色度样本的实例位置。
具体实施方式
引言
本文中所描述的特定实例涉及用于灵活、可调适、高效且计算量小的编码的新视频编码技术的框架结构。其将可选基础编解码器(例如,AVC、HEVC,或任何其它当前或将来编解码器)与经编码数据的至少两个增强层级组合。所述框架结构提供一种低复杂性的但实现视频数据的灵活增强的方法。
本文中所描述的特定实例基于已开发的新的多层方法构建。例如在编号为US8,977,065、US8,948,248、US8,711,943、US9,129,411、US8,531,321、US9,510,018、US9,300,980和US9,626,772的美国专利以及编号为PCT/EP2013/059833、PCT/EP2013/059847、PCT/EP2013/059880、PCT/EP2013/059853、PCT/EP2013/059885、PCT/EP2013/059886和PCT/IB2014/060716的PCT申请中描述此方法的细节,这些文献全部以引用的方式包含在本文中。此新的多层方法使用层的阶层,其中每一层可与例如不同视频分辨率等不同质量水平相关。
描述低复杂性增强视频编码的实例。描述编码和解码方法,以及相应的编码器和解码器。增强编码可在基础层上操作,基础层可提供基础编码和解码。可跨不同层应用空间缩放。仅基础层编码可能处于较低分辨率的完整视频。而增强编码在所计算的残差集合上操作。针对多个层计算残差集合,所述多个层可表示一个或多个维度中的不同缩放水平。描述若干编码和解码组件或工具,其可涉及变换、量化、熵编码和时间缓冲的应用。在实例解码器处,经编码基础流和一个或多个经编码增强流可独立地解码且组合以重建原始视频。
本文中呈现的实例编码方案的一般结构使用通过基础编解码器编码的经下取样源信号、将第一层级的校正数据添加到基础编解码器的经解码输出以生成经校正图片,且接着将另一层级的增强数据添加到经校正图片的上取样型式。
如本文所描述的经编码流可被视为包括基础流和增强流。增强流可具有多个层(例如,在实例中描述两个)。基础流可由硬件解码器解码,而增强流可适于具有合适的功率消耗的软件处理实施方案。
本文中所描述的特定实例具有提供多个自由度继而允许针对许多情形的较大灵活性和可调适性的结构。这意味着,编码格式适于包含OTT传输、实况流式传输、实况UHD广播等许多用例。
尽管基础编解码器的经解码输出并非意图用于检视,但其为较低分辨率下的完全经解码视频,从而使得输出与现有解码器兼容,并且在认为合适的情况下也可用作较低分辨率输出。
在以下描述中,描述用于视频编码和解码的特定实例架构。这些架构使用少量简单的编码工具来降低复杂性。当协同组合时,它们相比于以基础编解码器编码的全分辨率图片可提供视觉质量改进,同时使得其可被使用的方式较灵活。
当前所描述实例提供对使用越来越少的功率的新近需求的解决方案,且有助于减少编码和解码的计算成本,同时提高性能。当前所描述实例可作为软件层在现有基础设施上操作且达成所要性能。当前实例提供一种解决方案,其与现有(和将来)视频流式传输和递送生态系统兼容,同时在比原本以简单的升级可能实现的更低的计算成本下达成视频编码。将最新编解码器的编码效率与所描述实例的处理功率降低组合可改进下一代编解码器的采用的技术状况。
本文中所描述的特定实例基于残差操作。可通过比较两个图像或视频信号来计算残差。在一种情况下,通过将来自输入视频流的帧与经重建视频流的帧进行比较来计算残差。在如本文所描述的层级1增强流的情况下,可通过将经下取样的输入视频流与已由基础编码器编码且接着由基础解码器解码的第一视频流进行比较来计算残差(例如,第一视频流模拟解码器处经下取样的输入视频流的解码和重建)。在如本文所描述的层级2增强流的情况下,可通过将输入视频流(例如,处于高于经下取样或基础视频流的质量水平或分辨率)与从第一视频流的上取样型式重建的第二视频流加上经解码层级1残差的集合进行比较来计算残差(例如,第二视频流模拟解码基础流和层级1增强流两者、在较低或下取样质量水平下重建视频流,接着对此经重建视频流进行上取样)。这例如在图1到5C中展示。
在特定实例中,残差可因此被视为特定质量水平或分辨率下的误差或差。在所描述实例中,存在两个质量水平或分辨率且因此存在两个残差集合(层级1和2)。本文中所描述的每一残差集合对不同形式的误差或差建模。举例来说,层级1残差通常校正基础编码器的特性,例如校正作为编码过程的部分由基础编码器引入的假影。相比而言,举例来说,层级2残差通常校正由质量水平中的转变引入的复合效应和由层级1校正引入的差(例如,由层级1编码管线在例如4或16个像素的区域等更广空间尺度上生成的假影)。此意味着以下内容并非是显而易见的:对一个残差集合执行的操作必定会向另一残差集合提供相同的效应,例如每一残差集合可具有不同统计样式和相关集合。
在本文中所描述的实例中,残差由编码管线进行编码。这可包含变换、量化和熵编码操作。其还可包含残差分级、加权和滤波以及时间处理。这些管线展示于图1以及3A和3B中。随后将残差传输到解码器,例如作为层级1和层级2增强流,所述增强流可与基础流组合作为混合流(或单独地传输)。在一种情况下,设定用于包括基础流和两个增强流的混合数据流的位速率,且接着基于正处理的数据将不同自适应位速率应用于个别流以满足设定的位速率(例如,以低假影水平所感知的高质量视频可通过自适应地将位速率指派给不同个别流(即使在逐帧层级处)而构造,以使得经约束数据可由感知上最有影响的个别流使用,所述个别流可随着图像数据改变而改变)。
如本文中所描述的残差集合可被视为稀疏数据,例如在许多情况下对于给定像素或区域不存在差,且所得残差值为零。当查看残差的分布时,将许多概率质量分配到接近零定位的小残差值,例如对于-2、-1、0、1、2等的某些视频值发生得最频繁。在某些情况下,残差值的分布关于0对称或近似对称。在某些测试视频情况下,发现残差值的分布关于0呈类似于对数或指数分布的形状(例如,对称地或近似对称地)。残差值的准确分布可取决于输入视频流的内容。
残差可自身被处理为二维图像,例如差的差量图像。以此方式,可以看到数据的稀疏性涉及在残差图像中可见的比如“点”、小“线”、“边缘”、“拐角”等特征。已发现这些特征通常不完全相关(例如,在空间上和/或在时间上)。所述特征具有不同于其来源于的图像数据的特性(例如,原始视频信号的像素特性)的特性。
因为包含呈系数形式的经变换残差的当前残差的特性不同于其来源于的图像数据的特性,所以通常不可能应用标准编码方法,例如传统移动图片专家组(MPEG)编码和解码标准中所见的方法。举例来说,许多对比方案使用较大变换(例如,正常视频帧中的较大像素区域的变换)。归因于例如如上文所描述的残差的特性,对残差图像使用这些对比的大变换将是极低效的。举例来说,使用经设计用于正常图像的区域的大块对残差图像中的小点进行编码将是非常困难的。
本文中所描述的特定实例通过代替地使用较小和简单的变换内核(例如,如本文中所呈现的2×2或4×4内核-定向分解和定向分解平方)来解决这些问题。这在与对比的视频编码方法不同的方向上移动。将这些新方法应用于残差块会生成压缩效率。举例来说,某些变换生成可有效地压缩的不相关系数(例如,在空间中)。虽然可例如针对残差图像中的线利用系数之间的相关,但这些相关可能导致编码复杂性,使得难以在传统和低资源装置上实施,且这些相关常常生成需要校正的其它复杂假影。在当前实例中,使用与对比方法不同的变换(哈达玛)来编码校正数据和残差。举例来说,本文中呈现的变换可比使用离散余弦变换(DCT)(其为SVC/SHVC中使用的变换)变换较大数据块高效得多。
本文中所描述的特定实例还考虑残差的时间特性,例如以及空间特性。举例来说,在残差图像中,可在残差“图像”中观察到的比如“边缘”和“点”等细节展示极少时间相关。这是因为残差图像中的“边缘”通常不会像如在正常视频流中感知到的边缘那样平移或旋转。举例来说,在残差图像内,“边缘”可实际上随时间改变形状,例如可在多个残差图像“边缘”内捕捉到头部转向,但所述头部转向可不以标准方式移动(因为“边缘”反映取决于例如照明、缩放因子、编码因子等因素的复合差)。例如包括循序残差“帧”或“图片”的残差“视频”等残差图像的这些时间方面通常不同于例如正常视频帧等常规图像的时间方面(例如,在Y、U或V平面中)。因此,如何将常规编码方法应用于残差图像并非是显而易见的;实际上,已发现来自对比的视频编码方案和标准的运动补偿方法不可对残差数据进行编码(例如,以有用方式)。
SVC内的AVC层可涉及将所述对比标准中提及的数据计算为“残差”。然而,这些对比“残差”是所述层的数据流的像素块和使用帧间预测或帧内预测确定的相应像素块之间的差。然而,这些对比“残差”与当前实例中编码的残差极大地不同。在SVC中,“残差”是帧的像素块和所述帧的经预测像素块(使用帧间预测或帧内预测预测)之间的差。相比之下,当前实例涉及将残差计算为编码块和经重建编码块(例如,其已经经历下取样和后续上取样,且已经校正了编码/解码错误)之间的差。
此外,许多对比的视频编码方法试图提供时间预测和运动补偿作为常规视频数据的默认值。这些“内置式”方法可能不仅会在应用于循序残差图像时失败,其还可能占用不必要的处理资源(例如,这些资源可在实际上损坏视频编码的同时使用)。其还可能生成占用经指派位速率的不必要的位。如何解决这些问题从常规方法来看并非显而易见。
本文中所描述的特定实例(例如,如“时间方面”章节和其它地方所描述)提供预测残差图像内的时间特征的有效方式。特定实例使用零运动向量预测来有效地预测残差内的时间方面和移动。可看出这些可预测用于相对静态特征的移动(例如,将第二时间模式,即帧间预测,应用于随时间持续的残差特征),且接着将第一时间模式(例如,帧内预测)用于其它所有特征。因此,本文中所描述的特定实例并不试图浪费稀少的资源和位速率来预测残差“视频”中的瞬时不相关时间特征。
本文中所描述的特定实例允许增强传统、现有和将来的编解码器。实例可因此利用这些代码的能力作为基础层的一部分,且提供呈增强层的形式的改进。
本文中所描述的特定实例具有低复杂性。其使得能够以低计算复杂性和/或以实现普遍并行化的方式增强基础编解码器。如果在基础编解码器之前使用下取样(例如,空间可缩放性的应用),则相比于在原始输入分辨率下使用基础编解码器,可向原始输入分辨率下的视频信号提供减小的计算复杂性。这允许广泛采用超高分辨率视频。举例来说,通过将利用单层现有编解码器处理较低分辨率下的输入视频与使用简单且小型的一组高度专门化工具将细节添加到经处理视频的上取样型式组合,可实现许多优点。
本文中所描述的特定实例实施若干模块化但专业化的视频编码工具。针对特定类型的数据设计组成增强层(包含两个不同点处的两个增强层级)的工具:残差数据。如本文所描述的残差数据由原始数据信号与经重建数据信号的比较产生。以不同于对比的视频编码方案的方式生成经重建数据信号。举例来说,经重建数据信号涉及输入视频帧的特定小空间部分-编码单元。可并行处理帧的编码单元的集合,因为相比于对比的视频编码技术中的帧间和帧内预测,不使用帧的其它编码单元或其它帧的其它编码单元生成残差数据。尽管可应用时间处理,但这使用当前编码单元的先前数据在编码单元层级处应用。编码单元之间不存在相互依存。
本文中所描述的特定专业化视频编码工具尤其适于稀疏残差数据处理。归因于不同生成方法,如本文所使用的残差数据具有与对比的视频编码技术的性质不同的性质。如图中所展示,本文中所描述的特定实例提供处理残差数据的一个或两个层的增强层。通过取参考视频帧(例如,源视频)和视频的基础解码型式(例如,取决于层,具有或不具有上取样)之间的差来产生残差数据。所得残差数据为稀疏信息,通常是边缘、点和细节,其接着使用被设计成处理稀疏信息的小变换来处理。这些小变换可尺度不变,例如具有{-1,1}范围内的整数值。
本文中所描述的特定实例允许高效地使用现有编解码器。举例来说,基础编码器通常在较低分辨率(例如,相比于原始输入信号)下应用。接着使用基础解码器在较低分辨率下解码基础编码器的输出,且使用所得经解码信号来生成经解码数据。因为这一点,基础编解码器对较小数目个像素操作,因此允许编解码器在较高质量水平(例如,较小量化步长)下操作且以更高效的方式使用其自身的内部编码工具。其还可消耗较少功率。
本文中所描述的特定实例提供弹性且自适应的编码过程。举例来说,增强层的配置允许总体编码过程对于由可在基础层中使用的基于传统离散余弦变换(DCT)块的编解码器引入的典型编码假影具有弹性。第一增强层(层级1残差)实现由基础编解码器引入的假影的校正,而第二增强层(层级2残差)实现将细节和锐度添加到信号的校正后的上取样型式。可通过控制位速率来调整校正水平,直至提供最大保真度和无损编码的型式。通常,基础重建越差,则第一增强层可越大程度上有助于校正(例如,呈由所述层输出的经编码残差数据的形式)。相反,基础重建越好,则越多的位速率可分配到第二增强层(层级2残差)以使视频锐化且添加精细细节。
本文中所描述的特定实例提供不可知的基础层增强。举例来说,实例可用于增强任何基础编解码器,从例如MPEG-2、VP8、AVC、HEVC、VP9、AV1等现有编解码器到包含例如EVC和VVC等处于开发中的将来编解码器。这是可能的,因为增强层对基础编解码器的经解码型式操作,且因此其可用于任何格式,因为其不需要关于基础层已如何经编码和/或解码的任何信息。
如下文所描述,本文中所描述的特定实例允许增强层编码的并行化。举例来说,增强层不实施任何形式的块间(即,块之间的)预测。在残差数据层上应用小(2×2或4×4)独立变换内核处理所述图像。因为不在块之间作出预测,所以可独立地且以并行方式处理每一2×2或4×4块。此外,单独地处理每一层,因此允许以大规模并行方式进行块的解码和层的解码。
对于当前所描述的实例,可单独地校正由编码/解码过程和下取样/上取样过程引入的错误,以在解码器侧重新生成原始视频。因此,经编码残差和经编码校正数据的大小比输入视频本身小,且因此经编码残差和经编码校正数据可比输入视频更高效地(且因此,比SVC和SHVC方法的对比UHD流更高效地)发送到解码器。
在与SVC和SHVC的进一步比较中,特定所描述实例涉及将经编码残差和校正数据发送到解码器,而不发送经编码UHD流本身。相比之下,在SVC和SHVC中,HD和UHD图像两者编码为单独的视频流且发送到解码器。当前所描述的实例可以允许用于将经编码数据发送到解码器的总体位速率显著减小,例如使得在这些情况下,用于发送HD流和UHD流两者的总带宽可小于对比标准仅发送UHD流所需的带宽。
当前所描述的实例进一步允许并行而非循序地处理编码单元或块。这是因为当前所描述的实例不应用帧内预测;不同块的空间系数之间存在非常有限的空间相关,而SVC/SHVC实现帧内预测。这比涉及循序地处理块的SVC/SHVC的对比方法更高效(例如,因为UHD流依赖于来自HD流的各个像素的预测)。
本文的实例中描述的增强编码可视为编码和解码残差数据流的增强编解码器。这不同于对比的SVC和SHVC实施方案,在对比的SVC和SHVC实施方案中,编码器在每一空间分辨率水平下接收视频数据作为输入,且解码器在每一空间分辨率水平下输出视频数据。如此,对比的SVC和SHVC可视为一组编解码器的并行实施方案,其中每一编解码器具有视频输入/视频输出编码结构。另一方面,本文中所描述的增强编解码器在每一空间分辨率水平下接收残差数据并且还输出残差数据。举例来说,在SVC和SHVC中,每一空间分辨率水平的输出不求和以生成输出视频-这将是没有意义的。
应注意,在实例中,对层级1和2的参考将被视为增强子层的任意标记这些或者可称为不同的名称(例如,利用反向编号系统,其中层级1和2分别标记为层级1和层级0,其中下方的“层级0”基础层为层级2)。
定义和术语
在本文中所描述的某些实例中,使用以下术语。
“接入单元”-这指代根据指定分类规则彼此相关联的网络抽象层(NAL)单元的集合。其可按解码次序为连续的且含有视频(在某些情况下,恰好一个)的经编码图片(即,帧)。
“基础层”-这是关于经编码基础图片的层,其中“基础”指代接收经处理的输入视频数据的编解码器。其可涉及位流的涉及基础的一部分。
“位流”-这是位的序列,其可呈NAL单元流或字节流的形式供应。其可形成经编码图片和相关联数据的表示,从而形成一个或多个经编码视频序列(CVS)。
“块”-样本的MxN(M列乘N行)阵列,或变换系数的MxN阵列。术语“编码单元”或“编码块”还用以指代样本的MxN阵列。这些术语可用于指代像元(例如,特定颜色通道的像素的值)的集合、残差要素的集合、表示经处理残差要素的值的集合和/或经编码值的集合。术语“编码单元”有时用以指代具有三个样本阵列的图片的明度样本的编码块或色度样本的编码块,或者黑白图片或使用三个单独的颜色平面及用于对样本进行编码的语法结构编码的图片的样本的编码块。
“字节”-8位的序列,在该序列内,当作为位值的序列写入或读取时,最左和最右位分别表示最高和最低有效位。
“字节-对准”-当位流中的某一位置距位流中的第一位的位置为8位的整数倍时,位流中的所述位置字节对准,且当位或字节或语法要素在位流中出现的位置字节对准时,认为所述位或字节或语法要素字节对准。
“字节流”-此可用于指代含有开始代码前缀和NAL单元的NAL单元流的囊封。
“色度”-此用作形容词来指定样本阵列或单个样本正表示颜色信号。此可为与例如如由符号Cb和Cr表示的原色相关的两个色差信号中的一个。其还可用于指代提供关于图片的着色的信息的颜色通道的集合内的通道。使用术语色度(chroma)而非术语色度(chrominance)是为了避免暗示使用常常与术语色度(chrominance)相关联的线性光传递特性。
“组块”-此用以指代含有属于系数群组的经量化变换系数的数据的经熵编码部分。
“经编码图片”-此用以指代表示图片的经编码表示的编码单元的集合。
“经编码基础图片”-此可指代使用与增强编码过程分开(且常常不同)的基础编码过程编码的图片的经编码表示。
“经编码表示”-数据要素以其经编码形式表示
“系数群组(CG)”-用以指代含有与变换系数的特定集合(即,经变换残差值的集合)相关的经编码数据的语法结构。
“分量”或“颜色分量”-此用以指代来自颜色分量阵列的集合中的一个的阵列或单个样本。颜色分量可包括一个明度和两个色度分量和/或红、绿、蓝(RGB)分量。颜色分量可能不具有一对一取样频率,例如所述分量可构成4:2:0、4:2:2或4:4:4颜色格式的图片。本文中所描述的特定实例还可参考仅单个单色(例如,明度或灰度)图片,其中存在构成单色格式的图片的阵列的单个阵列或单个样本。
“数据块”-此用以指代含有对应于一种数据类型的字节的语法结构。
“经解码基础图片”-此用以指代通过解码经编码基础图片导出的经解码图片。
“经解码图片”-可通过解码经编码图片来导出经解码图片。经解码图片可以是经解码帧或经解码字段。经解码字段可以是经解码顶部字段或经解码底部字段。
“经解码图片缓冲器(DPB)”-此用以指代保持经解码图片用于参考或输出重新排序的缓冲器。
“解码器”-体现解码过程的设备或装置。
“解码次序”-此可指代语法要素由解码过程处理的次序。
“解码过程”-此用以指代读取位流且从其导出经解码图片的过程。
“竞争防止字节”-此在特定实例中使用以指代可存在于NAL单元内的等于0x03的字节。竞争防止字节可用于确保NAL单元中的连续字节对准字节的序列都不含有开始代码前缀。
“编码器”-体现编码过程的设备或装置。
“编码过程”-此用以指代产生位流(即,经编码位流)的过程。
“增强层”-此为关于经编码增强数据的层,其中增强数据用于增强“基础层”(有时被称作“基础”)。其可涉及位流的包括残差数据的平面的部分。使用单称词来指代不同于“基础”编码和/或解码过程的编码和/或解码过程。
“增强子层”-在某些实例中,增强层包括多个子层。举例来说,下文描述的第一和第二层级是视为增强层的层的“增强子层”。
“字段”-此术语在特定实例中使用以指代交替行的帧的组合。帧由两个字段组成,即顶部字段和底部字段。术语字段可在交错视频帧的上下文中使用。
“视频帧”-在某些实例中,视频帧可包括由单色格式的明度样本阵列或明度样本阵列和两个相应色度样本阵列组成的帧。明度和色度样本可以4:2:0、4:2:2和4:4:4颜色格式(以及其它)供应。帧可由两个字段组成,即顶部字段和底部字段(例如,这些术语可在交错视频的上下文中使用)。
“图片群组(GOP)”-此术语用以指代从帧内图片开始的连续经编码基础图片的集合。经编码基础图片可提供用于那些图片的增强数据的参考排序。
“即时解码刷新(IDR)图片”-此用以指代对于其NAL单元含有全局配置数据块的图片。
“逆变换”-此用以指代借以将变换系数的集合转换成残差的解码过程的一部分。
“层”-此术语在特定实例中使用以指代非分支阶层关系中的语法结构的集合中的一个,例如当提及“基础”和“增强”层或增强层的两个(子)“层”时所使用。
“明度”-此术语用作形容词来指定表示例如与原色相关的亮度或单色信号的样本阵列或单个样本。明度样本可以由符号或下标Y或L表示。使用术语“明度(luma)”而非术语明度(luminance)是为了避免暗示使用常常与术语明度(luminance)相关联的线性光传递特性。有时使用符号L代替符号Y以避免与如用于竖直位置的符号y混淆。
“网络抽象层(NAL)单元(NALU)”-此为含有应遵循的数据类型和以原始字节序列有效负载(RBSP-见下文定义)的形式含有所述数据的字节的指示的语法结构。
“网络抽象层(NAL)单元流”-NAL单元的序列。
“输出次序”-此在特定实例中使用以指代经解码图片从经解码图片缓冲器输出的次序(对于待从经解码图片缓冲器输出的经解码图片)。
“分割”-此术语在特定实例中使用以指代集合划分为子集。其可用于指代其中集合的每一要素恰好处于子集的一个中的情况。
“平面”-此术语用以指代与颜色分量相关的数据的集合。举例来说,平面可包括Y(明度)或Cx(色度)平面。在某些情况下,单色视频可具有仅一个颜色分量,且因此图片或帧可包括一个或多个平面。
“图片”此用作字段或帧的共同术语。在某些情况下,术语帧和图片可互换地使用。
“随机接入”-此在特定实例中使用以指代针对位流在除流的开始外的点处开始解码过程的动作。
“原始字节序列有效负载(RBSP)”-RBSP是含有囊封于NAL单元中的整数数目的字节的语法结构。RBSP是空的或具有数据位串的形式,所述数据位串含有语法要素继之以RBSP停止位且继之以零个或更多个等于0的后续位。RBSP可视需要与竞争防止字节散置。
“原始字节序列有效负载(RBSP)停止位”-此为可设定为1且在数据位串之后包含于原始字节序列有效负载(RBSP)内的位。RBSP内数据位串的末端的位置可通过从RBSP的末端搜索RBSP停止位(其为RBSP中的最后非零位)来识别。
“预留”-此术语可指代不在本文中所描述的位流中使用但被预留以供将来使用或扩展的语法要素的值。术语“预留零”可指代在实例中被设定为零的预留位值。
“残差”-此术语在下文的其它实例中限定。其通常指代样本或数据要素的经重建型式和所述相同样本或数据要素的参考之间的差。
“残差平面”-此术语用以指代例如在类似于颜色分量平面的平面结构中组织的残差的集合。残差平面可包括可以是具有某一值(例如,整数值)的阵列要素的多个残差(即,残差像元)。
“游程长度编码”-此为用于编码值的序列的方法,其中同一值的连续出现表示为单个值连同其出现次数。
“源”-此术语在特定实例中使用以描述编码之前的视频材料或其一些属性。
“开始代码前缀”-此用以指代嵌入于字节流中作为到每一NAL单元的前缀的等于0x000001的三个字节的唯一序列。开始代码前缀的位置可由解码器使用以识别新NAL单元的开始和先前NAL单元的结束。可在NAL单元内通过包含竞争防止字节来防止开始代码前缀的竞争。
“数据位串(SODB)”-此术语指代表示存在于原始字节序列有效负载内在原始字节序列有效负载停止位之前的语法要素的某一数目的位的序列。在SODB内,最左位被视为第一且最高有效位,且最右位被视为最后且最低有效位。
“语法要素”-此术语可用于指代位流中表示的数据的要素。
“语法结构”-此术语可用于指代按特定次序一起存在于位流中的零个或更多个语法要素。
“拼片”-此术语在特定实例中使用以指代特定图片内的块或编码单元的矩形区,例如其可指代帧的含有多个编码单元的区域,其中编码单元的大小基于所应用变换来设定。
“变换系数”或(仅“系数”)-此术语用以指代当变换应用于残差或从残差导出的数据(例如,经处理残差)时产生的值。其可以是被认为在变换域中的标量量。在一种情况下,M乘N编码单元可展平为M*N一维阵列。在此情况下,变换可包括一维阵列与M乘N变换矩阵的乘法。在此情况下,输出可包括另一(展平)M*N一维阵列。在此输出中,每一要素可涉及不同“系数”,例如对于2×2编码单元,可存在4个不同类型的系数。如此,术语“系数”还可与解码过程的逆变换部分中的特定索引相关联,例如表示经变换残差的前述一维阵列中的特定索引。
“视频编码层(VCL)NAL单元”-此为具有预留值NalUnitType且在某些实例中被分类为VCLNAL单元的NAL单元的共同术语。
除上述术语外,有时使用以下缩写:
CG-系数群组;CPB-经编码图片缓冲器;CPBB-基础的经编码图片缓冲器;CPBL-增强的经编码图片缓冲器;CU-编码单元;CVS-经编码视频序列;DPB-经解码图片缓冲器;DPBB-基础的经解码图片缓冲器;DUT-测试中的解码器;HBD-假想基础解码器;HD-假想解复用器;HRD-假想参考解码器;HSS-假想流调度器;I-帧内;IDR-即时解码刷新;LSB-最低有效位;MSB-最高有效位;NAL-网络抽象层;P-预测;RBSP-原始字节序列有效负载;RGB-红绿蓝(还可用作GBR-绿蓝红-即,重新排序的RGB;RLE-游程长度编码;SEI-补充增强信息;SODB-数据位串;SPS-序列参数集;以及VCL-视频编码层。
实例编码器和解码器
第一实例编码器-通用架构
图1展示第一实例编码器100。示出的组件还可被实施为相应编码过程的步骤。
在编码器100中,接收并处理输入的全分辨率视频102以生成各种编码流。在下取样组件104处,对输入视频102进行下取样。下取样组件104的输出由包括基础编码器102和基础解码器104的基础编解码器接收。通过向基础编解码器(例如,AVC、HEVC或任何其它编解码器)馈送输入视频102的下取样型式来产生第一编码流(经编码基础流)116。在第一减法组件120处,通过取如由基础解码器104输出的经重建基础编解码器视频和输入视频的下取样型式(即,如由下取样组件104输出)之间的差获得第一残差集合。将层级1编码组件122应用于由第一减法组件120输出的第一残差集合以产生第二编码流(经编码层级1流)126。
在图1的实例中,层级1编码组件122与任选的层级1时间缓冲器124一起操作。此可用于应用时间处理,如下文稍后描述。在层级1编码组件122的第一编码层级之后,第一经编码流126可由层级1解码组件128解码。解块滤波器130可应用于层级1解码组件128的输出。图1中,通过求和组件132将解块滤波器130的输出相加到基础解码器114的输出(即,相加到经重建基础编解码器视频)以生成经重建基础编码视频的经校正型式。求和组件132的输出接着由上取样组件134进行上取样以产生经重建基础编码视频的经校正型式的上取样型式。
在第二减法组件136处,取经重建基础编码视频(即,上取样组件134的输出)的经校正型式的上取样型式和输入视频102之间的差。此产生第二残差集合。如由第二减法组件136输出的第二残差集合传递到层级2编码组件142。层级2编码组件142通过编码第二残差集合产生第三编码流(流经编码层级2流)146。层级2编码组件142可连同层级2时间缓冲器144一起操作以应用时间处理。层级1编码组件122和层级2编码组件142中的一个或多个可应用残差选择,如下文所描述。此展示为由残差模式选择组件150控制。残差模式选择组件150可接收输入视频102,且基于输入视频102的分析应用残差模式选择。类似地,层级1时间缓冲器124和层级2时间缓冲器144可在时间选择组件152的控制下操作。时间选择组件152可接收输入视频102和下取样组件104的输出中的一个或多个以选择时间模式。这在稍后的实例中更详细地解释。
第一实例解码器-通用架构
图2展示第一实例解码器200。示出的组件还可被实施为相应解码过程的步骤。解码器200接收三个经编码流:经编码基础流216、经编码层级1流226和经编码层级2流246。这三个经编码流对应于由图1的编码器100生成三的个流。在图2的实例中,所述三个经编码流连同含有进一步解码信息的标头256一起接收。
经编码基础流216由对应于编码器100中使用的基础编解码器(例如,对应于图1中的基础解码器114)的基础解码器218解码。在第一求和组件220处,基础解码器218的输出与从经编码层级1流226获得的经解码第一残差集合组合。确切地说,层级1解码组件228接收经编码层级1流226且解码所述流以产生经解码第一残差集合。层级1解码组件228可使用层级1时间缓冲器230来解码经编码层级1流226。在图2的实例中,层级1解码组件228的输出传递到解块滤波器232。层级1解码组件228可类似于由图1中的编码器100使用的层级1解码组件128。解块滤波器232还可类似于由编码器100使用的解块滤波器130。在图2中,解块滤波器232的输出形成经解码第一残差集合,所述经解码第一残差集合通过第一求和组件220与基础解码器218的输出组合。第一求和组件220的输出可视为经校正层级1重建,其中经解码第一残差集合在第一分辨率下校正基础解码器218的输出。
在上取样组件234处,对组合视频进行上取样。上取样组件234可实施如相对于稍后实例描述的一种形式的经修改上取样。上取样组件234的输出与从经编码层级2流246获得的经解码第二残差集合进一步组合。确切地说,层级2解码组件248接收经编码层级2流246且解码所述流以产生经解码第二残差集合。如由层级2解码组件248输出的经解码第二残差集合通过求和组件258与上取样组件234的输出组合以产生经解码视频260。经解码视频260包括图1中的输入视频102的经解码表示。层级2解码组件248还可使用层级2时间缓冲器250来应用时间处理。层级1时间缓冲器230和层级2时间缓冲器250中的一个或多个可在时间选择组件252的控制下操作。时间选择组件252展示为接收来自标头256的数据。此数据可包括用以在层级1时间缓冲器230和层级2时间缓冲器250中的一个或多个处实施时间处理的数据。所述数据可指示由时间选择组件252应用的时间模式,如参考稍后实例所描述。
第二实例编码器-编码子处理和时间预测
图3A和3B展示第二实例编码器300、360的不同变型。第二实例编码器300、360可包括图1的第一实例编码器100的实施方案。在图3A和3B的实例中,更详细地详述流的编码步骤以提供可如何执行步骤的实例。图3A示出具有仅在增强过程的第二层级中提供的时间预测(即,相对于层级2编码)的第一变型。图3B示出具有两个增强层级(即,层级1和2)的过程中执行的时间预测的第二变型。
在图3A中,经编码基础流316大体上由如上文相对于图1所解释的过程创建。也就是说,输入视频302经下取样(即,由下取样组件304将下取样操作应用于输入视频102以生成下取样输入视频。接着使用基础编解码器,确切地说由基础编解码器的基础编码器312编码下取样视频。由基础编码器312应用于下取样输入视频的编码操作生成经编码基础流316。基础编解码器还可被称作第一编解码器,因为其可不同于用于产生增强流(即,经编码层级1流326和经编码层级2流346)的第二编解码器。优选地,第一或基础编解码器是适于硬件解码的编解码器。依据图1,基础编码器312的输出(即,经编码基础流316)由基础解码器314(例如,其形成基础编解码器的部分或提供基础编解码器的解码操作)接收,所述基础解码器输出经编码基础流的经解码型式。由基础编码器312和基础解码器314执行的操作可被称为基础层或基础层级。基础层或层级可与增强或第二层或层级分开实施,且增强层或层级指示和/或控制基础层或层级(例如,基础编码器312和基础解码器314)。
如相对于图1所提到,增强层或层级可包括产生两个相应流的两个层级。在此上下文中,第一增强层级(本文中描述为“层级1”)提供校正数据集合,其可与基础流的经解码型式组合以生成经校正图片。此第一增强流在图1和3中示出为经编码层级1流326。
为了生成经编码层级1流,对经编码基础流进行解码,即基础解码器314的输出提供经解码基础流。如图1中,在第一减法组件处,接着创建经解码基础流和下取样输入视频(即,下取样组件304的输出)之间的差(即,将减法运算应用于下取样输入视频和经解码基础流以生成第一残差集合)。此处,术语“残差”以与此项技术中已知的方式相同的方式使用,即,参考帧与所要帧之间的误差。此处,参考帧是经解码基础流,且所要帧是下取样输入视频。因此,第一增强层级中使用的残差可被视为经校正视频,因为其将经解码基础流‘校正’为基础编码操作中使用的下取样输入视频。
一般来说,如本文所使用的术语“残差”指代参考阵列或参考帧的值与数据的实际阵列或帧之间的差。所述阵列可以是表示编码单元的一维或二维阵列。举例来说,编码单元可以是对应于输入视频帧的类似大小的区域的2×2或4×4残差值集合。应注意,在此一般化实例中,所执行编码操作和输入信号的性质为不可知的。对如本文中所使用的“残差数据”的提及指代从残差集合导出的数据,例如残差集合本身或对残差集合执行的一组数据处理操作的输出。在整个本说明书中,一般来说,残差集合包含多个残差或残差要素,每一残差或残差要素对应于信号要素,即信号或原始数据的要素。所述信号可以是图像或视频。在这些实例中,残差集合对应于视频的图像或帧,其中每一残差与信号的像素相关联,所述像素为信号要素。
然而,应注意,本文中所描述的“残差”与例如SVC和SHVC等对比技术中生成的“残差”极大地不同。在SVC中,术语“残差”用以指代帧的像素块和所述帧的经预测像素块之间的差,其中经预测像素块使用帧间预测或帧内预测来预测。相比之下,当前实例涉及将残差计算为编码单元和经重建编码单元之间的差,所述经重建编码单元是例如已经经历下取样和后续上取样且已经校正了编码/解码错误的要素的编码单元。在所描述的实例中,基础编解码器(即,基础编码器312和基础解码器314)可包括与增强编解码器不同的编解码器,例如基础流和增强流由不同的若干组处理步骤生成。在一种情况下,基础编码器312可包括AVC或HEVC编码器且因此在内部生成用于生成经编码基础流316的残差数据。然而,由AVC或HEVC编码器使用的过程不同于用于生成经编码层级1和层级2流326、346的过程。
返回到图3A和3B,减法组件320的输出,即对应于第一残差集合的差接着经编码以生成经编码层级1流326(即,将编码操作应用于第一残差集合以生成第一增强流)。在图3A和3B的实例实施方案中,编码操作包括若干步骤,其中的每一个是任选和优选的且提供特定益处。在图3A和3B中,展示实施这些子操作的一系列组件,且这些子操作可被认为实施如图1所示的层级1和层级2编码122和142。在图3A和3B中,一般来说,所述子操作包含残差分级模式步骤、变换步骤、量化步骤和熵编码步骤。
对于层级1编码,层级1残差选择或分级组件321接收第一减法组件320的输出。层级1残差选择或分级组件321展示为由残差模式分级或选择组件350控制(例如,以与图1的配置类似的方式)。在图3A中,分级由残差模式分级组件350执行且由层级1选择组件321应用,所述层级1选择组件基于由残差模式分级组件350执行的分级(例如,基于输入视频102或其它数据的分析)对第一残差集合进行选择或滤波。在图3B中,此布置反转,使得一般残差模式选择控制由残差模式选择组件350执行,但分级在每一增强层级处执行(例如,相较于基于输入视频102的分级)。在图3B的实例中,可由层级1残差模式分级组件321基于如由第一减法组件320输出的第一残差集合的分析执行分级。
一般来说,第二实例编码器300、360识别是否选择残差分级模式。此可由残差模式分级或选择组件350执行。如果选择残差分级模式,则此可由残差模式分级或选择组件350向层级1残差选择或分级组件321指示以执行残差分级步骤。可对第一残差步骤执行残差分级操作以生成经分级残差集合。经分级残差集合可经滤波使得并非所有残差编码到第一增强流326(或校正流)中。残差选择可包括选择待通过的所接收残差的子集以供进一步编码。尽管当前实例描述“分级”操作,但此可视为在第一残差集合(例如,第一减法组件320的输出)上执行的一般滤波操作,即层级1残差选择或分级组件321是可修改第一残差集合的一般滤波组件的实施方案。滤波可视为将某些残差值设定为零,即使得输入残差值被滤除且不形成经编码层级1流326的一部分。
在图3A和3B中,层级1残差选择或分级组件321的输出接着由层级1变换组件322接收。层级1变换组件322将变换应用于第一残差集合,或经分级或滤波的第一残差集合,以生成经变换残差集合。变换操作可取决于是否选择分级模式而应用于第一残差集合或经滤波第一残差集合,以生成经变换残差集合。层级1量化组件323接着应用于层级1变换组件322的输出(即,经变换残差集合)以生成经量化残差集合。由层级1熵编码组件325应用熵编码,所述层级1熵编码组件将熵编码操作应用于经量化的残差集合(或从此集合导出的数据)以生成第一增强层级流,即经编码层级1流326。因此,在层级1层中,第一残差集合经变换、量化和熵编码以产生经编码层级1流326。在稍后实例中描述变换、量化和熵编码的可能实施方案的另外细节。优选地,熵编码操作可以是霍夫曼编码操作或游程长度编码操作或这两者。任选地,控制操作可应用于经量化的残差集合以便校正分级操作的效应。此可由层级1残差模式控制组件324应用,所述层级1残差模式控制组件可在残差模式分级或选择组件350的控制下操作。
如上所述,增强流可包括第一增强层级和第二增强层级(即,层级1和2)。第一增强层级可被视为经校正流。第二增强层级可被视为将经校正流转换成原始输入视频的另一增强层级。通过编码另一或第二残差集合来创建另一或第二增强层级,所述另一或第二残差集合是如由求和组件332输出的经重建层级1视频的上取样型式和输入视频302之间的差。上取样由上取样组件334执行。第二残差集合由第二减法组件336所应用的减法产生,第二减法组件取输入视频302和上取样组件334的输出作为输入。
在图3A和3B中,第一残差集合由层级1编码过程编码。在图3A和3B的实例中,此过程包括层级1变换组件322和层级1量化组件323。在上取样之前,使用逆量化组件327和逆变换组件328来解码经编码的第一残差集合。这些组件用于模拟可在解码器处实施的(层级1)解码组件。如此,通过应用层级1变换组件322和层级1量化组件323导出的经量化(或受控的)残差集合经逆量化和逆变换,然后应用解块滤波器330来生成经解码第一残差集合(即,将逆量化操作应用于经量化第一残差集合以生成解量化的第一残差集合;将逆变换操作应用于解量化的第一残差集合以生成解变换的第一残差集合;以及将解块滤波操作应用于解变换的第一残差集合以生成经解码第一残差集合)。解块滤波器330取决于所应用的变换为任选的,且可包括将经加权掩码应用于解变换的第一残差集合的每一块。
在求和组件332处,如由基础解码器314输出的经解码基础流与如从解块滤波器330接收的经解码第一残差集合组合(即,在经解码基础流和经解码第一残差集合上执行求和运算以生成重新创建的第一流)。如图3A和3B中所示出,接着由上取样组件334对所述组合进行上取样(即,将上取样操作应用于重新创建的第一流以生成经上取样的重新创建的流)。经上取样流接着在第二求和组件336处与输入视频进行比较,这样创建第二残差集合(即,将差运算应用于上取样的重新创建的流以生成另一残差集合)。第二残差集合接着编码为经编码层级2增强流346(即,编码操作接着应用于所述另一或第二残差集合以生成经编码的另一或第二增强流)。
与经编码层级1流一样,应用于第二集合(层级2)残差的编码可包括若干操作。图3A展示层级2残差选择组件340、层级2变换组件341、层级2量化组件343和层级2熵编码组件345。图3B展示一组类似组件,但在此变型中,层级2残差选择组件340被实施为层级2残差分级组件340,其在残差模式选择组件350的控制下。如上文所论述,可基于输入视频102以及个别第一和第二残差集合中的一个或多个来执行分级和选择。在图3A中,还提供层级2时间缓冲器345,通过第三减法组件342从层级2变换组件341的输出减去其内容。在其它实例中,第三减法组件342可位于其它位置中,包含在层级2量化组件343之后。如此,图3A和3B中展示的层级2编码具有分级、时间预测、变换、量化和熵编码的步骤。确切地说,第二实例编码器200可识别是否选择残差分级模式。此可由残差分级或选择组件350以及个别层级2选择和分级组件340中的一个或多个执行。如果选择残差分级或滤波模式,则可由残差分级或选择组件350以及个别的层级2选择和分级组件340中的一个或多个执行残差分级步骤(即,可在第二残差集合上执行残差分级操作以生成第二经分级残差集合)。第二经分级残差集合可经滤波使得并非所有残差编码到第二增强流(即,经编码层级2流346)中。第二残差集合或第二经分级残差集合随后由层级2变换组件341变换(即,在第二经分级残差集合上执行变换操作以生成第二经变换残差集合)。如求和组件332的输出和层级2变换组件341之间的联接所示,变换操作可在上取样之前利用从重新创建的第一流导出的经预测系数或预测平均值。参考其它实例描述此预测平均值计算的其它实例;可在本文中其它地方找到其它信息。在层级2中,接着以其它地方描述的方式对经变换残差(在时间上预测或以其它方式预测)进行量化和熵编码(即,量化操作应用于经变换残差集合以生成第二经量化残差集合;以及熵编码操作应用于经量化的第二残差集合以生成第二层级的增强流)。
图3A展示第二实例编码器200的变型,其中作为层级2编码过程的一部分执行时间预测。使用时间选择组件352和层级2时间缓冲器345执行时间预测。时间选择组件352可确定时间处理模式,如下文更详细地描述,且相应地控制层级2时间缓冲器345的使用。举例来说,如果将不执行时间处理,则时间选择组件352可指示层级2时间缓冲器345的内容将设定为0。
图3B展示第二实例编码器200的变型,其中作为层级1和层级2编码过程两者的一部分执行时间预测。在图3B中,除了层级2时间缓冲器345还提供层级1时间缓冲器361。尽管未图示,但其中在层级1处而不在层级2处执行时间处理的另外的变型也是可能的。
当选择时间预测时,第二实例编码器200可通过减去从适当时间缓冲器导出的相应系数集合来进一步修改系数(即,由变换组件输出的经变换残差)。相应系数集合可包括从先前帧导出的相同空间区域(例如,定位于帧内的相同编码单元)的系数的集合(例如,针对先前帧的相同区域的系数)。可由例如第三减法组件346和362(用于相应层级2和1)等减法组件应用减法。将相对于稍后的实例进一步描述此时间预测步骤。概括地说,当应用时间预测时,经编码系数对应于所述帧和流的另一帧之间的差。另一帧可以是流中较早或稍后的帧(或帧中的块)。因此,代替于对经上取样的重新创建的流和输入视频之间的残差进行编码,编码过程可对流中的经变换帧和所述帧的经变换残差之间的差进行编码。因此,熵可减小。可基于控制信息而选择性地应用时间预测以用于编码单元的群组(在本文中被称为“拼片”),且可通过发送额外控制信息连同经编码流(例如,标头内或作为如参考稍后实例所描述的另一表面)而应用解码器处的时间预测的应用。
如图3A和3B中所展示,当时间预测为活跃时,每一经变换系数可为:
Δ=F当前-F缓冲器
其中时间缓冲器可存储与先前帧相关联的数据。可针对一个颜色平面或针对多个颜色平面执行时间预测。一般来说,可针对视频“帧”应用减法作为逐要素减法,其中帧的要素表示经变换系数,其中相对于特定n乘n编码单元大小(例如2×2或4×4)应用变换。由时间预测产生的差(例如,上述差量可存储在缓冲器中以用于后续帧。因此,实际上,由时间预测产生的残差是相对于缓冲器的系数残差。尽管图3A和3B展示在变换操作之后执行时间预测,但其也可在量化操作之后执行。这可避免需要应用层级2逆量化组件372和/或层级1逆量化组件364。
因此,如图3A和3B中所示出以及上文描述,在执行编码过程之后第二实例编码器200的输出是经编码基础流316和一个或多个增强流,所述增强流优选地包括第一增强层级的经编码层级1流326和另一或第二增强层级的经编码层级2流346。
第三实例编码器和第二实例解码器-经预测残差
图4展示第三实例编码器400,其是图1的第一实例编码器100的变型。使用相应参考标号来指代来自图1的相应特征(即,其中特征1xx与图4中的特征4xx相关)。图4的实例更详细地展示可如何应用经预测残差(例如,预测平均值)作为上取样操作的一部分。并且,在图4中,解块滤波器130被更一般的可配置滤波器430代替。
在图4中,预测残差组件460接收呈第一求和组件432的输出的形式的层级1空间分辨率下的输入。此输入包括由第一求和组件432输出的层级1处的经重建视频的至少一部分。预测残差组件460还从上取样组件434接收层级2空间分辨率下的输入。所述输入可包括用于生成多个较高分辨率要素的较低分辨率要素(例如,接着经上取样以生成2×2块中的4个像素的像素)。预测残差组件460被配置成计算经由第二求和组件462相加到上取样组件434的输出的所述输出的修改符。所述修改符可经计算以应用稍后实例中详细描述的预测平均值处理。确切地说,在确定平均差量(例如,所计算平均系数和从较低层级预测的平均值之间的差)的情况下,可使用图4的组件来恢复层级2编码过程442外部的平均组件。第二求和组件462的输出接着用作到第二减法组件436的经上取样输入。
图5A展示可如何在第二实例解码器500处应用预测残差操作。类似于图4,第二实例解码器500可视为图2的第一实例解码器200的变型。相应参考标号用以指代来自图2的相应特征(即,其中特征2xx与图5中的特征5xx相关)。图5A的实例更详细地展示可如何在解码器处应用经预测残差(例如,预测平均值)作为上取样操作的一部分。并且,在图5A中,解块滤波器232被更一般的可配置滤波器532代替。应注意,经预测残差处理可在编码器和解码器处不对称地应用,例如编码器不必根据图4配置以允许解码,如图5A中所示。举例来说,编码器可应用预测平均值计算,如以引用的方式并入本文中的美国专利9,509,990中所描述。
第二实例解码器500的配置类似于图4的第三实例编码器400。预测残差组件564从第一求和组件530接收表示层级1帧的第一输入,且从上取样组件534接收表示层级1帧的上取样型式的第二输入。所述输入作为较低层级要素和一组相应较高层级要素而接收。预测残差组件564使用所述输入来计算由第二求和组件562相加到上取样组件534的输出的修改符。所述修改符可校正例如如美国专利9,509,990中所描述或由第三实例编码器400计算的预测平均值的使用。经修改的上取样输出接着由第三求和组件558接收,所述第三求和组件按照先前实例执行层级2校正或增强。
预测残差组件460和564中的一个或多个的使用可实施其它实例的“经修改上取样”,其中由所述组件计算且由相应求和组件应用的修改符执行所述“修改”这些实例可提供预测平均值的较快计算,因为相较于需要转换到表示经变换残差的系数空间,将修改符相加于经重建视频空间中(例如,将修改符应用于经重建视频的像素而非应用于经变换残差的A、H、V和D系数空间中)。
第三实例解码器-子操作和时间预测
图5B和5C示出第三实例解码器580、590的相应变型。第三实例解码器580、590的变型可相应地实施以对应于图3A和3B中展示的第三实例编码器300、360的变型。第三实例解码器580、590可视为来自图2和4的第一和第二实例编码器200、400中的一个或多个的实施方案。如前所述,在可能的情况下使用类似的参考标号来指代对应于较早实例中的特征的特征。
图5B和5C展示上文简要描述和图2中示出的解码过程的实施方案实例。如可清楚地看到,更详细地详述解码步骤和组件以提供可如何在每一层级处执行解码的实例。如同图3A和3B,图5B示出其中时间预测仅用于第二层级(即,层级2)的变型,且图5C示出其中时间预测用于两个层级(即,层级1和2)的变型。如前所述,设想另外的变型(例如层级1,但非层级2),其中可使用信令信息控制配置的形式。
如图5A和5C的实例中所展示,在解码过程中,解码器可解析标头556,基于那些标头配置解码器。所述标头可包括全局配置数据、图片(即,帧)配置数据和混合数据块(例如,关于图片内的要素或要素群组)中的一个或多个。为了重新创建输入视频(例如,先前实例中的输入视频102、302或402),例如第三实例解码器等实例解码器可解码经编码基础流516、第一增强或经编码层级1流526和第二增强或经编码层级2流546中的每一个。所述流的各帧可经同步且接着经组合以导出经解码视频560。
如图5B中所展示,层级1解码组件528可包括层级1熵解码组件571、层级1逆量化组件572和层级1逆变换组件573。这些可包括图3A和3B中的相应层级1编码组件325、323和322的解码型式。层级2解码组件548可包括层级2熵解码组件581、层级2逆量化组件582和层级2逆变换组件583。这些可包括图3A和3B中的相应层级2编码组件344、343和341的解码型式。在每一解码过程中,增强流可使用前述组件或操作经历熵解码、逆量化和逆变换的步骤以重新创建残差集合。
确切地说,在图5B中,经编码基础流516由被实施为基础编解码器584的一部分的基础解码器518解码。应注意,基础流和增强流通常使用不同的编解码器编码和解码,其中增强编解码器对残差操作(即,可实施层级1和层级2编码和解码组件)且基础编解码器对层级1分辨率下的视频操作。层级1分辨率下的视频可表示比基础编解码器通常操作所处的分辨率低的分辨率(例如,在两个维度中的下取样信号可以是四分之一大小),这允许基础编解码器高速地操作。这还可标记相对于SVC的差异,在SVC中每一层应用共同编解码器(AVC)且对视频数据而非残差数据操作。即使在SHVC中,所有空间层也被配置成以视频输入/视频输出方式操作,其中每一视频输出表示不同的可播放视频。在当前实例中,增强流不表示常规意义上的可播放视频-层级1和层级2解码组件528和548的输出(例如,如由第一求和组件530和第二求和组件558接收)为“残差视频”,即多个颜色平面的残差的连续帧而非颜色平面本身。这因而允许比SVC和SHVC大得多的位速率节省,因为增强流将常常为0(因为量化差常常为0),其中0值可使用游程长度编码有效地压缩。还应注意,在当前实例中,按照SVC和SHVC中的标准帧内处理,N乘N要素的每一编码单元(例如,可展平为一维阵列的2×2或4×4像素块)不取决于涉及帧内的其它编码单元的预测。如此,增强流中的编码和解码组件可并行地应用于不同编码单元(例如,帧的不同区域可有效地并行处理),因为不同于SVC和SHVC,不需要等待另一编码单元的经解码结果来计算后续编码单元。此意味着可在例如计算装置(包含移动计算装置)中的共同图形处理单元等并行处理器上极有效地实施增强编解码器。此并行性对于SVC和SHVC的高复杂性处理是不可能的。
返回到图5B,如先前实例中,例如解块滤波器532等任选的滤波器可应用于层级1解码组件528的输出以移除阻挡或其它假影且滤波器的输出由第一求和组件530接收,在该处,所述输出被相加到基础编解码器的输出(即,经解码基础流)。应注意,基础编解码器的输出可类似于如由传统编解码器解码的低分辨率视频,但层级1解码输出为(经滤波)第一残差集合。此不同于SVC和SHVC,在SVC和SHVC中,此形式的求和毫无意义,因为每一层输出相应空间分辨率下的完整视频。
如在图2中,经修改上取样组件587接收由第一求和组件530输出的层级1处的视频的经校正重建,且对此进行上取样以生成经上取样重建。经修改上取样组件587可应用图4中所示出的经修改上取样。在其它实例中,例如如果不使用预测平均值或预测平均值不以美国专利9,509,990中描述的方式应用,则可不修改上取样。
在图5B中,在层级2解码期间应用时间预测。在图5B的实例中,时间预测由时间预测组件585控制。在此变型中,从经编码层级2流546提取用于时间预测的控制信息,如由从流到时间预测组件585的箭头所指示。在例如图5A和5C中展示的其它实施方案中,用于时间预测的控制信息可例如在标头556中与经编码层级2流546分开发送。时间预测组件585控制层级2时间缓冲器550的使用,例如其可确定时间模式且控制时间刷新,如参考稍后的实例所描述。可基于残差的先前帧的数据更新时间缓冲器550的内容。当应用时间缓冲器550时,将缓冲器的内容相加到第二残差集合。在图5B中,在第三求和组件594处将时间缓冲器550的内容相加到层级2解码组件548的输出。在其它实例中,时间缓冲器的内容可表示任何中间解码数据集合,且因此,第三求和组件586可适当地移动以在适当级处应用缓冲器的内容(例如,如果在解量化系数级处应用时间缓冲器,则第三求和组件586可位于逆变换组件583之前)。经时间校正的第二残差集合接着通过第二求和组件558与上取样组件587的输出组合以生成经解码视频560。经解码视频处于层级2空间分辨率,其可高于层级1空间分辨率。第二残差集合将校正应用于(可检视)经上取样的经重建视频,其中校正详细地加回且改进线和特征的锐度。
图5C展示第三实例解码器的变型590。在此情况下,由时间预测组件585从标头556接收时间预测控制数据。时间预测组件585控制层级1和层级2时间预测两者,但在其它实例中,可视需要为两个层级提供单独的控制组件。图5C展示输入到第二求和组件558的经重建第二残差集合可如何被反馈以存储在下一帧的层级2时间缓冲器中(为了清晰起见从图5B省略所述反馈)。还展示以与上文描述的层级2时间缓冲器550类似的方式操作的层级1时间缓冲器591,且在此图中展示用于缓冲器的反馈回路。层级1时间缓冲器591的内容经由第四求和组件595添加到层级1残差处理管线中。再次,取决于在何处应用时间预测,此第四求和组件595的位置可沿着层级1残差处理管线变化(例如,如果时间预测在经变换系数空间中应用,则其可位于层级1逆变换组件573之前。
图5C展示时间控制信息可传信到解码器的两种方式。第一方式是经由标头556,如上文所描述。可用作替代性或额外传信路径的第二方式是经由残差本身内编码的数据。图5C展示一个案例,借此数据592可编码为HH经变换系数且因此可在熵解码组件581所进行的熵解码之后提取。此数据可从层级2残差处理管线提取且传递到时间预测组件585。
一般来说,本文中所描述的增强编码和/或解码组件为低复杂性(例如,相比于例如SVC和SHVC等方案)且可以灵活的模块化方式实施。如由所需实施方案确定,额外滤波和其它组件可插入到处理管线中。层级1和层级2组件可被实施为共同操作的副本或不同型式,这进一步降低复杂性。基础编解码器可作为单独的模块化黑盒操作,且因此可取决于实施方案使用不同编解码器。
本文中所描述的数据处理管线可被实施为数据维度上的一系列嵌套式回路。减法和加法可在平面层级(例如,针对帧的颜色平面的集合中的每一个)处或使用多维阵列(例如,X乘Y乘C阵列,其中C是例如YUV或RGB等若干颜色通道)执行。在某些情况下,组件可被配置成对N乘N编码单元(例如,2×2或4×4)操作,且因此可并行地应用于帧的编码单元上。举例来说,输入视频的帧的颜色平面可分解为覆盖帧的区域的多个编码单元。这可创建多个小的一维或二维阵列(例如,2×2或4×1阵列,或者4×4或16x1阵列),其中组件应用于这些阵列。如此,对残差集合的参考可包含对一组小的一维或二维阵列的参考,其中每一阵列包括所配置位深度的整数要素值。
每一增强流或两个增强流可使用网络抽象层单元(NALU)的集合囊封到一个或多个增强位流中。NALU意图囊封增强位流以便将增强应用于正确的基础重建帧。NALU可例如含有到NALU的参考索引,其含有增强必须应用于的基础解码器经重建帧位流。以此方式,增强可同步到基础流,且每一位流的帧组合以产生经解码输出视频(即,增强层级的每一帧的残差与基础解码流的帧组合)。图片的群组可表示多个NALU。
处理组件的进一步描述
上文提到一组处理组件或工具可如何贯穿编码和/或解码应用于增强流(或输入视频)中的每一个。这些处理组件可应用为模块化组件。其可以计算机程序代码实施,即如由一个或多个处理器执行,和/或被配置为专用硬件电路系统,例如被配置为单独或组合的现场可编程门阵列(FPGA)或专用集成电路(ASIC)。计算机程序代码可包括用于嵌入式装置或编解码器的由操作系统使用以提供视频渲染服务的部分的固件。下文提供所述工具中的每一个的概述及其在如图1到5C中所示出的总体过程内的功能性。
下取样:在实例中由下取样组件(例如,104、304和404)应用下取样过程。下取样过程应用于输入视频以产生待由基础编解码器编码的下取样视频。下取样可在竖直和水平方向两者上,或替代地仅在水平方向上进行。下取样组件可进一步被描述为向下缩放器。
层级1(L-1)编码:到图1中展示为122的此组件的输入包括通过取基础编解码器的经解码输出和下取样视频之间的差获得的第一残差集合。接着变换、量化和编码第一残差集合,如下文进一步描述。
变换:在某些实例中,存在可由变换组件(例如,变换组件122、322和/或341)使用的两个类型的变换。所述变换可以是定向分解。所述变换可用于使编码单元(例如,要素的小N乘N块)中的残差值去相关。变换可应用为矩阵变换,例如矩阵乘法应用于表示编码单元的展平阵列。
在一种情况下,两个类型的变换可对应于两个不同大小的变换内核。编码单元的大小可因此基于变换内核的大小设定。第一变换具有应用于残差的2×2块的2×2内核。所得系数如下:
第二变换具有应用于残差的4×4块的4×4内核。所得系数如下:
这些变换矩阵可包括以下范围内的整数值:
{-1,1}或{-1,0,1}。这可简化计算且允许使用加法和减法的快速硬件实施方案。变换矩阵可包括哈达玛矩阵,其具有有利的性质,例如正交行以及自逆(即,逆变换与正变换相同)。如果使用哈达玛矩阵,则逆变换可被称为变换,因为同一矩阵可用于正变换和逆变换两者。
在某些情况下,变换可包含应用经预测残差计算(即,如参考稍后实例更详细描述的预测平均值的使用)。
量化:使用例如组件323或343等量化组件量化经变换残差(在本文中被称作“系数”)的集合。例如组件327、364、372、572和582等逆量化组件可通过将量化值乘以所限定的量化因子来重建值预量化的型式。可使用线性量化器量化所述系数。线性量化器可使用可变大小的死区。相比于量化步骤和非居中解量化偏移,线性量化器可使用不同大小的死区。参考稍后实例更详细地描述这些变型。
熵编码:可使用例如组件325或344等熵编码器编码经量化系数的集合。存在两个熵编码方案。在第一方案中,使用游程长度编码器(RLE)对经量化系数进行编码。在第二方案中,首先使用RLE对经量化系数进行编码,接着使用霍夫曼编码器处理经编码输出。
残差模式(RM)选择:如果已选择残差(滤波)模式(RM),则可对第一残差集合(即,层级1)进行进一步分级和选择以便确定应变换、量化和编码哪些残差。残差滤波可由组件321或340中的一个或多个例如在例如150或350等控制组件的控制下执行。残差的滤波可在残差处理管线中任何地方执行,但优选地其在熵编码之前预先形成。
时间选择模式:如果例如由例如152或352等组件选择时间选择模式。则编码器可通过减去从例如345或361等时间缓冲器导出的相应系数来修改系数(即,经变换残差或从这些经变换残差导出的数据)。此可实施如下文所描述的时间预测。解码器可接着通过将从例如组件230、250、530、550或591中的一个等时间缓冲器导出的相应系数相加来修改系数。
层级1(L-1)解码:此展示为组件228和528。到此工具的输入包括经编码层级1流226或526(即,L-1编码残差),其通过熵解码器(例如571)、解量化器(例如572)和逆变换模块(例如573)。由这些模块执行的操作是由上文描述的模块执行的逆操作。如果已选择时间选择模式,则可部分地从来自时间缓冲器的协同定位的残差预测残差。
解块和残差滤波器:在某些情况下,如果使用4×4变换,则经解码残差可馈送到例如130、232、330或535等滤波器模块或解块滤波器。解块操作通过应用权重可被指定的掩码而在逆变换残差的每一块上操作。掩码的一般结构如下:
其中0≤α≤1且0≤β≤1。权重可在与位流相关联的控制信令内指定或可从本地存储器检索。
上取样:经解码(及经滤波或解块,如果可适用的话)第一残差集合(L-1)与经基础解码视频的组合经上取样以便生成上取样的经重建视频。可如相对于上取样组件134、234、334、434、534或587所描述执行上取样。下文更详细地描述可能的上取样操作的实例。上取样方法可以是可选的且在字节流中传信。应注意,在本文的实例中,可适当地使用术语“字节流”或例如流、位流或NALU流等替代性术语。
层级2(L-2)编码:此表示为组件142、442和548。到此编码操作的输入包括通过取上取样的经重建视频和输入视频之间的差获得的第二残差集合(L-2)。第二残差集合(L-2)接着经变换、量化和编码,如本文进一步描述。以与关于L-1编码所描述相同的方式执行所述变换、量化和编码。如果已选择残差滤波模式,则对第二残差集合进行进一步分级和选择以便确定应变换和编码哪些残差。
经预测系数(或预测平均值)模式:如果选择预测系数模式,则编码器可修改经变换系数C00,其在本文中也被称为A,即平均值(对于4×4变换,其可为Ax,如下文更详细地描述)。如果使用2×2变换,则可通过减去从其预测残差的经变换块的经上取样残差的值来修改C00。如果使用4×4变换,则可通过减去从其预测残差的经变换块的四个经上取样残差的平均值来修改C00。可在解码器处使用如本文所描述的经修改的上取样来实施预测系数模式。
层级2(L-2)解码:此展示为组件248和548。到此解码的输入包括经编码第二残差集合(L-2)。第二残差集合的解码过程涉及熵解码器(例如,581)、解量化器(例如,582)和逆变换模块(例如,583)。由这些组件执行的操作是由如上文所描述的编码组件执行的逆操作。如果已选择时间选择模式,则可部分地从来自时间缓冲器的协同定位的残差预测残差。
经修改的上取样:经修改的上取样过程包括两个步骤,第二步骤取决于由解码器接收的信令。在第一步骤中,对经解码(及解块,如果可适用的话)第一残差集合(L-1)和经基础解码视频(L-1重建视频)的组合进行上取样以生成上取样的经重建视频。如果已选择预测系数模式,则实施第二步骤。确切地说,从其导出上取样的经重建视频中的2×2块的L-1重建值中的要素的值被添加到上取样的经重建视频中的所述2×2块。一般来说,经修改的上取样可基于上取样的经重建视频,且基于预先上取样的经重建较低分辨率视频,如参考图4所描述。
抖动:在某些实例中,最后抖动级可选择性地应用于图2和5A到5C中的经解码视频260或560。抖动可包括将小噪声电平应用于经解码视频。可通过将限定范围内的随机数或伪随机数添加到经解码视频来应用抖动。所述限定范围可基于局部和/或所传信参数来配置。限定范围可基于所限定的最小值和最大值,和/或所限定的缩放因子(例如,针对特定范围内的随机数生成器的输出)。抖动可减少量化假影的视觉呈现,如此项技术中已知。
4×4残差编码单元和拼片的实例
图6A展示布置于4×4编码单元620中的残差集合610的实例600。因此存在16个残差要素。编码单元620可包括具有要素R[x][y]的残差的N乘N阵列R。对于2×2编码单元,可存在4个残差要素。变换可应用于编码单元,如所展示。
图6B展示多个编码单元640可如何布置为拼片的集合650。拼片集合可共同地覆盖图片或帧的完整区域。在图6B的实例中,拼片由编码单元的8×8阵列组成。如果编码单元为4×4,则这意味着每一拼片具有32×32个要素;如果编码单元为2×2,则这意味着每一拼片具有16×16个要素。
实例图片格式
图7A到7C展示颜色分量可经组织以形成图片或视频内的帧的若干方式。在实例中,输入视频102、302、402的帧可被称为源图片,且经解码输出视频260、560可被称为经解码图片。如由编码器实施的编码过程可一般如本文的实例中所描述的位流,其传输到如由解码器实施的解码过程且由所述解码过程接收。所述位流可包括从至少经编码基础流、经编码层级1流、经编码层级2流和标头(例如,如本文的实例中所描述)生成的组合位流。由位流表示的视频源可因此视为按解码次序的图片序列。
在某些实例中,源图片和经解码图片各自由一个或多个样本阵列构成。这些阵列可包括:仅明度(单色)分量(例如,Y);明度和两个色度分量(例如,YCbCr或YCgCo);绿色、蓝色和红色分量(例如,GBR或RGB);或表示其它未指定的单色或三刺激值颜色取样的其它阵列(例如YZX,也被称为XYZ)。本文中所描述的特定实例参考明度和色度阵列(例如,Y、Cb和Cr阵列)呈现;然而,所属领域的技术人员将理解,这些实例可经合适地配置以利用任何已知或将来的颜色表示方法操作。
在某些实例中,可经由chroma_sampling_type(例如,此可传信到解码器)指定色度格式取样结构。不同取样格式可具有不同颜色分量之间的不同关系。例如:在4:2:0取样中,两个色度阵列中的每一个具有明度阵列的一半高度和一半宽度;在4:2:2取样中,两个色度阵列中的每一个具有明度阵列的相同高度和一半宽度;且在4:4:4取样中,两个色度阵列中的每一个具有与明度阵列相同的高度和宽度。单色取样中只有一个样本阵列,标称地认为是明度阵列。视频序列中的明度和色度阵列中的样本中的每一个的表示所必需的位数目可以在8到16的范围内(包含头尾),且明度阵列中使用的位数目可不同于色度阵列中使用的位数目。
图7A到7C展示可以由变量chroma_sampling_type的不同值表示的不同取样类型。当chroma_sampling_type的值等于0时,图片中的明度样本710和色度样本720的标称竖直和水平相对位置在图7A中展示。当chroma_sampling_type的值等于1时,色度样本720与相应的明度样本710共址,且图片中的标称位置如图7B中所展示。当chroma_sampling_type的值等于2时,所有阵列样本710、720对于图片的所有案例共址,且图片中的标称位置如图7C中所展示。在这些情况下,变量SubWidthC和SubHeightC可指示色度样本如何移位:
chroma_sampling_type | 色度格式 | SubWidthC | SubHeightC |
0 | 单色 | 1 | 1 |
1 | 4:2:0 | 2 | 2 |
2 | 4:2:2 | 2 | 1 |
3 | 4:4:4 | 1 | 1 |
实例位流处理
图8展示可用于处理已使用本文中所描述的实例编码器或编码过程编码的位流的实例方法800。方法800可由例如图2和5中的200或500等实例解码器实施。方法800展示促进增强位流的分离的实例流。
在框802处,方法800包括接收输入位流802。在框804处,在所接收位流内识别NALU开始。此接着允许在框806处识别进入点。进入点可指示应使用哪一型式的解码过程来解码位流。接下来,在框808处,确定有效负载增强配置。有效负载增强配置可指示有效负载的特定参数。有效负载增强配置可每流传信一次。可选地,有效负载增强配置可每图片群组或针对每一NALU传信多次。有效负载增强配置可用于在框810处提取有效负载元数据。
在框812处,识别图片群组(GOP)的开始。尽管使用术语图片群组,但应理解,此术语用以指代与基础流的结构对应的结构,但不限定关于增强流的特定结构。也就是说,增强流可不具有严格意义上的GOP结构,且不需要严格地遵从此项技术的GOP结构。如果包含有效负载元数据,则其可包含在有效负载增强配置之后和图片群组集合之前。有效负载元数据可例如包含HDR信息。在框812之后,可检索GOP。在框814处,如果NALU涉及第一位流帧,则方法可进一步包括在框816处检索有效负载全局配置。有效负载全局配置可指示解码过程的参数,举例来说,有效负载全局配置可指示是否在编码器中启用(以及是否应在解码器处启用)预测残差模式或时间预测模式,因此有效负载全局配置可指示是否应在解码方法中使用某一模式。有效负载全局配置可针对每一GOP检索一次。在框818处,方法800可进一步包括检索有效负载解码器控制参数的集合,其指示待在解码期间启用的解码器参数,例如抖动或上取样参数。有效负载解码器控制参数可针对每一GOP检索。在框820处,方法800包括从位流检索有效负载图片配置。有效负载图片配置可包括关于每一图片或帧的参数,例如量化参数,比如步宽。有效负载图片配置可针对每一NALU检索一次(也就是说,针对每一图片或帧检索一次)。在框822处,方法800可接着进一步包括检索可包括每一帧的经编码数据的经编码数据的有效负载。经编码数据的有效负载可针对NALU传信一次(也就是说,针对每一图片或帧传信一次)。经编码数据的有效负载可包括数据的表面、平面或层,其可分离成组块,如参考图9A以及图21A和21B的实例所描述。在检索经编码数据的有效负载之后,NALU可在框824处结束。
如果GOP也结束,则方法可继续检索用于新GOP的新NALU。如果NALU不是第一位流帧(如此处的情况),则NALU可接着可选地检索进入点(即,待用于解码的软件版本的指示)。方法可接着检索有效负载全局配置、有效负载解码器控制参数和有效负载图片配置。方法可接着检索经编码数据的有效负载。NALU接着将结束。
如果在框814处,NALU不涉及第一位流帧,则可执行框828到838。任选的框828可类似于框806。框830到838可以与框816到824类似的方式执行。
在框840和842处,在每一NALU已结束之后,如果GOP尚未结束,则方法800可包括在框844处从流检索新NALU。对于每一GOP的每一第二和后续NALU,方法800可任选地在框846处以与框806和828类似的方式检索进入点指示。方法800可接着包括在框848处检索有效负载图片配置参数,以及在框850处检索用于NALU的经编码数据的有效负载。可因此以与框820到824以及框834到838类似的方式执行框848到852。有效负载经编码数据可包括拼片数据。
如上,如果NALU不是用于GOP的最后NALU,则方法可包括检索另一NALU(例如,沿环路到框844)。如果NALU是GOP中的最后NALU,则方法800可继续到框854。如果存在更多的GOP,则方法可沿环路到框812且包括检索另一GOP和如先前描述向前执行框814。一旦已经检索所有GOP,则位流在框856处结束。
实例形式的经编码有效负载数据
图9A展示经编码位流内的经编码数据900可如何分离成组块。更确切地说,图9A展示由增强编码器生成的位流的实例数据结构(例如,层级1和层级2编码数据)。展示(数目nPlanes的)多个平面910。每一平面涉及特定颜色分量。在图9A中,展示具有YUV颜色平面的实例(例如,其中输入视频帧具有三个颜色通道,即每个像素的三个值)。在所述实例中,单独地编码所述平面。
每一平面的数据进一步组织为若干层级(nLevels)。在图9A中,存在关于增强层级1和2中的每一个的两个层级。每一层级的数据接着进一步组织为若干层(nLayers)。这些层与基础层和增强层分离;在此情况下,其指代由变换产生的系数群组中的每一个的数据。举例来说,2×2变换产生四个不同系数,所述四个不同系数接着经量化和熵编码,且4×4变换产生十六个不同系数,所述十六个不同系数接着同样经量化和熵编码。在这些情况下,因此分别存在4层和16层,其中每一层表示与每一不同系数相关联的数据。在其中系数被称作A、H、V和D系数的情况下,则所述层可视为A、H、V和D层。在某些实例中,这些“层”也称为“表面”,因为其可以与颜色分量的集合的二维阵列的集合类似的方式视为系数的“帧”。
层的集合的数据可被视为“组块”。如此,每一有效负载可视为以阶层方式排序成组块。也就是说,每一有效负载分组为平面,接着在每一平面内,每一层级分组为层且每一层包括所述层的组块的集合。层级表示每一增强层级(第一或另一)且层表示变换系数的集合。在任何解码过程中,方法可包括检索每一平面的两个增强层级的组块。方法可包括检索每一层级的4或16层,这取决于所使用的变换的大小。因此,每一有效负载排序成每一层级中所有层的组块的集合,且接着排序成平面的下一层级中所有层的组块的集合。因而,有效负载包括下一平面的第一层级的层的组块的集合等等。
如此,在本文中所描述的编码和解码方法中,视频的图片可例如分割为具有指定组织的阶层式结构。每一图片可由组织于阶层式结构中的三个不同平面组成。解码过程可试图获得经解码基础图片平面的集合和残差平面的集合。经解码基础图片对应于基础解码器的经解码输出。基础解码器可以是已知或传统解码器,且因此,位流语法和基础解码器的解码过程可基于所使用的基础解码器而确定。相比之下,残差平面对于增强层来说是新的且可如本文所描述而分割。“残差平面”可包括与特定颜色分量相关联的残差集合。举例来说,尽管平面910展示为关于输入视频的YUV平面,但应注意,数据920不包括YUV值,例如对于对比编码技术而言。实际上,数据920包括从来自YUV平面中的每一个的数据导出的经编码残差。
在某些实例中,残差平面可划分成编码单元,其大小取决于所使用变换的大小。举例来说,如果使用2×2定向分解变换,则编码单元可具有2×2的尺寸,或如果使用4×4定向分解变换,则编码单元可具有4×4的尺寸。解码过程可包括输出一个或多个残差表面集合,其是残差的汇集的一个或多个集合。举例来说,这些可由图2中的层级1解码组件228和层级2解码组件248输出。第一残差表面集合可提供第一增强层级。第二残差表面集合可以是另一增强层级。每一残差表面集合可个别地或共同地与从基础解码器导出的经重建图片组合,例如如图2的实例解码器200中所示出。
实例上取样方法
图9B到9J和下文的描述涉及可在实施如本文的实例中所描述的上取样组件(例如,图1到5C中的上取样组件134、234、334、434、534或587)时使用的可能的上取样方法。
图9B和9C展示待上取样的帧可如何划分的两个实例。对帧的参考可被视为对例如呈YUV格式的数据的一个或多个平面的参考。待上取样的每一帧,称为源帧910,划分成两个主要部分,即中心区域910C和边界区域910B。图9B展示双线性和双三次上取样方法的实例布置。在图9B中,边界区域910B由四个片段组成,即顶部片段910BT、左片段910BL、右片段910BR和底部片段910BB。图9C展示最接近上取样方法的实例布置。在图9C中,边界区域910B由2个片段组成;右片段910BR和底部片段910BB。在两个实例中,片段可由边界大小参数(BS)限定,例如所述边界大小参数设定片段的宽度(即,片段从帧的边缘延伸到源帧中的长度)。边界大小可针对双线性和双三次上取样方法设定为2个像素,或针对最接近方法设定为1个像素。
在使用中,可基于所限定像素索引的集合(例如,x和y方向中)来执行源帧像素是否定位于特定片段内的确定。基于源帧像素是否在中心区域910C或边界区域910B内来执行差分上取样可有助于避免可能归因于源帧边缘处的不连续性而引入的边界效应。
最接近上取样
图9C提供如何使用最接近上取样方法对帧进行上取样的概览。在图9C中,源帧920经上取样以变为目的地帧922。最接近上取样方法通过将当前源像素928复制到目的地像素的2×2目的地网格924上来进行上取样,例如如由箭头925所指示。中心和边缘像素分别展示为926和927。通过在两个轴上使源像素928的索引加倍且渐进地将+1相加到每一轴以延伸范围以覆盖4个像素来计算目的地像素位置,如图9C的右手侧所展示。举例来说,将具有索引位置(x=6,y=6)的源像素928的值复制到包括具有索引位置(12,12)(13,12)(12,13)和(13,13)的像素的目的地网格924。目的地网格924中的每一像素取源像素928的值。
最接近上取样方法实现可对于具有有限处理器资源的嵌入式装置为优选的快速实施方案。然而,最接近方法具有可能需要通过层级2残差校正阻挡或“像素化”假影的缺点(例如,这产生需要更多位以供在熵编码之后传输的更多非零残差值)。在下文描述的某些实例中,双线性和双三次上取样可产生可更高效地编码的层级2残差的集合,例如其在量化和熵编码之后需要较少位。举例来说,双线性和双三次上取样可生成经上取样输出,其更精确地与输入信号匹配,从而产生较小层级2残差值。
双线性上取样
图9E、9F和9G示出双线性上取样方法。双线性上取样方法可划分成三个主要步骤。第一步骤涉及在源帧中构建源像素932的2×2源网格930。第二步骤涉及执行双线性内插。第三步骤涉及将内插结果写入到目的地帧中的目的地像素936。
双线性上取样-步骤1:源像素网格
图9E示出2×2源网格930(其还可称为双线性网格)的构造实例。使用2×2源网格930代替源像素932,因为双线性上取样方法通过考虑到基础像素932B最接近的3个像素(即,落在2×2源网格930内的最接近的3个像素)的值来执行上取样。在此实例中,基础像素932B在2×2源网格930的右下角处,但其它位置是可能的。在双线性向上方法期间,可针对多个源帧像素确定2×2源网格930,以便迭代地确定整个目的地帧的目的地帧像素值。基础像素932B位置用于确定目的地帧像素的地址。
双线性上取样-步骤2:双线性内插
图9F示出双线性系数导出。在此实例中,双线性内插是2×2源网格930中的四个像素的值的经加权和。经加权和用作正计算的目的地像素936的像素值。所采用的特定权重取决于2×2目的地网格935中的特定目的地像素936的位置。在此实例中,双线性内插使用2×2目的地网格935中的目的地像素936的位置将权重应用于2×2源网格930中的每一源像素932。举例来说,如果计算左上目的地像素(展示为图9F的936/936B)的值,则左上源像素值将接收最大加权系数934(例如,加权因子9),而右下像素值(对角相对)将接收最小加权系数(例如,加权因子1),且剩余两个像素值将接收中间加权系数(例如,加权因子3)。此在图9F中以2×2源网格930中展示的加权显示。
对于2×2目的地网格935内的936/936B右侧的像素,应用于经加权和的加权将改变如下:右上源像素值将接收最大加权系数(例如,加权因子9),而左下像素值(对角相对)将接收最小加权系数(例如,加权因子1),且剩余两个像素值将接收中间加权系数(例如,加权因子3)。
在图9F中,针对基础像素932B基于2×2源网格930计算四个目的地像素,但使用不同权重集合确定每一目的地像素。这些权重可被认为是上取样内核。以此方式,可存在四个加权值的四个不同集合,其应用于2×2源网格930内的原始像素值以生成基础像素932B的2×2目的地网格935。在确定四个目的地像素值之后,选择具有不同源网格的另一基础像素且过程再次开始以确定接下来四个目的地像素值。此可迭代地重复直至确定整个目的地(例如,上取样)帧的像素值。下一章节更详细地描述这些经内插像素值从源帧到目的地帧的映射。
双线性上取样-步骤3:目的地像素
图9G展示包括源帧940、目的地帧942、内插模块944、多个2×2源网格930(a、b、c、d、h、j)和多个2×2目的地网格935(d、e、h、k)的双线性上取样方法的概览。源帧940和目的地帧942具有每一列和行上从0开始的索引用于像素寻址(但可使用其它索引方案)。
一般来说,从每一2×2源网格930生成的经加权平均值中的每一个映射到相应2×2目的地网格935中的相应目的地像素936。所述映射使用每一2×2源网格930的源基础像素932B来映射到相应2×2目的地网格942的相应目的地基础像素936B,不同于最接近方法。依据以下等式(应用于两个轴)计算目的地基础像素936B地址:
Dst_base_addr=(Src_base_address x 2)-1
并且,目的地像素具有依据以下等式计算的三个相应目的地子像素721S:
Dst_sub_addr=Dst_base_addr+1(针对两个轴)
且因此,每一2×2目的地网格935通常包括目的地基础像素936B连同三个目的地子像素936S,所述三个目的地子像素各自分别在目的地基础像素的右侧、下方和对角向下右侧。此在图9F中展示。然而,目的地网格和基础像素的其它配置是可能的。
所计算的目的地像素936B和936S的目的地基地址和子地址可分别在目的地帧942上超出范围。举例来说,源帧940上的像素A(0,0)生成2×2目的地网格935的目的地基础像素地址(-1,-1)。目的地地址(-1,-1)不存在于目的地帧942上。当此发生时,针对这些超出范围的值忽略到目的地帧942的写入。此预期在对边界源帧进行上取样时发生。然而,应注意,在此特定实例中,目的地子像素地址(0,0)中的一个在目的地帧942上在范围内。2×2源网格930的加权平均值(即,基于左下方像素值取最高加权)将写入到目的地帧942上的地址(0,0)。类似地,源帧940上的像素B(1,0)生成目的地基础像素地址(1,-1),其超出范围,因为不存在-1行。然而,目的地子像素地址(1,0)和(2,0)在范围内且相应加权和各自输入到相应地址中。对于像素C发生类似情况,但仅输入列0上的两个值(即,地址(0,1)和(0,2))。源帧的地址(1,1)处的像素D基于源网格930d的加权平均值促成完全2×2目的地网格935d,正如具有图9G中所示出的2×2目的地网格935e、935h和935k及相应源网格930e、930h和930k的像素E、H和K。
将理解,这些等式有效地应对边界区域910B和其相关联片段,且确保当对中心910C片段上取样时,其将保持在目的地帧942的中心。例如归因于确定目的地子像素的方式,可忽略或覆写使用此方法确定两次的任何像素值。
此外,边界片段910BR和910BB的范围扩展+1以便填充目的地帧中的所有像素。换句话说,源帧940经外推以提供边界片段910BR中的新像素列(展示为图9G中的索引列号8)和边界片段910BB中的新像素行(展示为图9G中的索引行号8)。
三次上取样
图9H、9I和9J一起示出三次上取样方法,确切地说双三次方法。本实例的三次上取样方法可划分成三个主要步骤。第一步骤涉及构建源像素的4×4源网格962,其中基础像素964B定位于4×4源网格815内的局部索引(2,2)处。第二步骤涉及执行双三次内插。第三步骤涉及将内插结果写入到目的地像素。
三次上取样-步骤1:源像素网格
图9H展示针对入站网格962i及分开地针对出站网格962o的源帧960上的4×4源网格962构造。在此实例中,“入站”指代网格覆盖源帧内的源像素(例如,中心区910C和边界区910B)的事实;“出站”指代网格包含源帧外部的位置的事实。通过使用4×4源网格962执行三次上取样方法,所述4×4源网格随后乘以4×4内核。此内核可称为上取样内核。在4×4源网格962的生成期间,落在源帧960的帧限制外部的任何像素(例如,出站网格962o中展示的像素)被处于源帧960的边界处的源像素964的值替换。
三次上取样-步骤2:双三次内插
用于双三次上取样过程的内核通常具有4×4系数网格。然而,目的地像素参考源像素的相对位置将产生不同系数集合,且因为在此实例中上取样是二的因子,所以将存在上取样过程中使用的4×4内核的4个集合。这些集合由4维系数网格(2×2x4×4)表示。举例来说,将存在表示单个经上取样源像素964B的2×2目的地网格中的每一目的地像素的一个4×4内核。
在一种情况下,可从固定参数集合计算双三次系数。在一种情况下,此包括核心参数(双三次参数)和样条创建参数的集合。在一实例中,可使用核心参数-0.6和四个样条创建参数[1.25、0.25、-0.75和-1.75]。滤波器的实施方案可使用硬件装置内的固定点计算。
三次上取样-步骤3:目的地像素
图9J展示包括源帧972、目的地帧980、内插模块982、4×4源网格970和2×2目的地网格984的三次上取样方法的概览。源帧972和目的地帧980具有每一列和行上从0开始的索引用于像素寻址(但可使用其它索引方案)。
类似于双线性方法,双三次目的地像素具有针对两个轴依据以下等式计算的基地址:
Dst_base_addr=(Src_base_address x 2)-1
并且,依据下式计算目的地地址:
Dst_sub_addr=Dst_base_addr+1(针对两个轴)
且因此,对于双线性方法,每一2×2目的地网格984通常包括目的地基础像素连同三个目的地子像素,所述三个目的地子像素各自分别在目的地基础像素的右侧、下方和对角向下右侧。然而,目的地网格和基础像素的其它配置是可能的。
再次,这些等式确保当对中心片段上取样时,其将保持在目的地帧的中心。此外,边界片段510BR和510BB的范围扩展+1以便以与如针对双线性方法所描述相同的方式填充目的地帧980中的所有像素。例如归因于确定目的地子像素的方式,可忽略或覆写使用此方法确定两次的任何像素值。所计算的目的地基地址和子地址可超出范围。当此发生时,针对这些超出范围的值忽略到目的地帧的写入。此预期在对边界区域进行上取样时发生。
实例熵编码
图10A到10I示出熵编码的不同方面。这些方面可涉及例如由图3A和3B中的熵编码组件325、344执行的熵编码和/或例如由图5B和5C中的熵解码组件571、581执行的熵解码。
图10A示出实例熵解码组件1003(例如,图5B和5C中的熵解码组件571、581中的一个或多个)的一个实施方案1000。熵解码组件1003取经熵编码残差(Ae、He、Ve、De)1002的集合1001作为输入,且输出经量化系数1007(例如,在此所示实例中,经量化的经变换残差)的集合1006。经熵编码残差1002可包括所接收的经编码层级1或层级2流(例如,如图2所示的226或246)。熵解码组件1003包括霍夫曼解码器1004继之以游程长度解码器1005。霍夫曼解码器1004接收使用霍夫曼编码进行编码的经编码增强流且解码此经编码增强流以产生游程长度编码流。游程长度编码流接着由游程长度解码器1005接收,所述游程长度解码器应用游程长度解码以生成经量化系数1007。在图10A中,展示2×2变换实例,因此,系数展示为来自2×2定向分解的A、H、V和D系数。
熵编码组件可以与实施方案1000相逆的方式布置。举例来说,熵编码组件的输入可包括表面(例如,从经量化的经变换残差集合导出的残差数据)且可被配置成残差数据的经熵编码型式,例如呈经编码流数据1001的形式的数据(其中,对于2×2实例,Ae、He、Ve、De经编码和经量化系数)。
实例熵编码-标头格式
图10B到10E示出标头格式的特定实施方案以及可如何取决于非零代码的量将代码长度写入到流标头。
图10B展示针对其中存在超过31个非零代码的情况的前缀编码(即,霍夫曼)解码器流标头1010。第一5位指示前缀码的最小长度。第二5位指示前缀码的最大长度。第三位接着提供指示是否正应用压缩的压缩旗标1011。在图10B的实例中,接着后面是3个符号:第一非零符号1014、第二零符号1015和第三非零符号1016。非零长度旗标1017包括指示每一符号是否为非零的一个位旗标;第一和第三符号1014、1016的旗标为1,而第二符号1015的旗标为0。每一非零符号指示前缀编码的代码长度,其等于代码长度减去最小长度(例如,随第一5位所发送)。代码长度可用于初始化前缀(即,霍夫曼)解码器,例如图10A中的1004。在此实例中,代码长度位的数目可相等:log2(max_length-min_length+1)。
因此,在图10A的实例中,数据中存在超过31个非零值,且标头包含最小代码长度和最大代码长度。接着循序发送每一符号的代码长度。旗标指示符号的长度为非零。代码长度的位接着作为代码长度和最小传信长度之间的差而发送。这减小标头的整体大小。
图10C示出类似于图10B的但在存在少于31个非零代码的情况下使用的标头1020。此可包括正常情况。标头1020再次具有指示最小长度的第一5位、指示最大长度的后续5位,以及压缩旗标1021(例如,其可为0或1以指示压缩,如本文中其它地方描述)。标头1020因而进一步包含数据中的符号的数目,继之以连续符号1024、1025的集合。每一符号可包括8位,其指示符号值继之以所述符号的码字的长度,再次作为所述长度和最小长度之间的差而发送,如相对于图10A所描述。
在两种情况下,标头1010或1020用于通过从标头读取代码长度来初始化熵解码组件(确切地说,霍夫曼或前缀编码解码器)。
图10D和10E示出可在外围情况中发送的更多的标头1030和1040。举例来说,在频率全部为零的情况下,流标头可包括如图10D中所示出的标头1030,其中5位最小和最大长度(1031和1032)都设定为31(即,设定为最大值)以指示特殊情形。图10E展示可在霍夫曼树中仅存在一个代码的情况下使用的标头1040。在此情况下,最小和最大长度字段(1041和1042)中的0(即,最小)值指示一个代码特殊情形,且因而这些字段值后面是待使用的符号值1043。在此后一实例中,当仅存在一个符号值时,此可指示经量化系数集合数据中仅存在一个数据值。
实例熵编码-RLE状态机
图10F展示可用作例如图10A中的游程长度解码器1005等游程长度解码器的状态机1050。游程长度解码器被配置成逐字节地读取游程长度编码数据的集合。状态机1050具有三个状态:游程长度编码(RLC)残差最低有效位(LSB)情况1051;游程长度编码(RLC)残差最高有效位(MSB)情况1052;以及游程长度编码(RLC)零游程情况1053。不同游程长度编码器和解码器可用于不同类型的数据。举例来说,不同游程长度编码和解码配置可用于以下中的每一个:系数群组、时间信号系数群组和数据的经熵编码拼片。
在某些实例中,前缀或霍夫曼编码可任选地在标头中传信(例如,使用rle_only旗标)。RLE解码器的输入在使用霍夫曼编码(例如,rle_only旗标等于零)的情况下可包括霍夫曼解码数据的字节流,或在不使用霍夫曼编码(例如,如果旗标rle_only等于1)的情况下可包括原始数据的字节流。RLE解码器的输出可包括经量化变换系数流。在一种情况下,这些系数可属于如图9A中指示的组块(例如,通过平面、层级和层编索引-如稍后实例中描述的变量planeIdx、levelIndex和layerIndex所指示)或包括时间信号流(形成时间层的用于实施时间预测的部分的时间组块-此参考稍后实例描述)。
图10F的状态机1050可用于实施用于系数群组的RLE解码器。游程长度状态机1050可由经处理以知晓针对当前符号或码字使用哪一霍夫曼码的霍夫曼编码和解码使用。RLE解码器使用游程长度状态机1050来解码零的序列。其还解码用于构建用于霍夫曼解码的霍夫曼树的频率表。
依据配置,保证数据的第一字节的状态处于第一状态1051(即,RLC残差LSB状态)。RLE解码器使用状态机1050来基于所接收流的内容确定下一数据字节的状态。当前状态告知解码器如何解译当前数据字节。图10G、10H和10I展示如何配置本实例的RLE解码器来解译字节。
如图10F中所展示,状态机1050具有三个状态:
RLC残差LSB状态1051:此为状态机1050开始的地方。对于所接收流中的字节,此状态1051预期6个较低有效位(位6到1)来编码非零要素值。正如期望由此状态划分的字节1070的实例在图10G中展示。游程位1071指示下一字节正编码一连串零的计数。此在数据部分1072中编码。如果要素值不拟合在6个数据位内,则设定上溢位1073,其在此实例中为字节的最低有效位(例如,所述上溢位在不存在上溢的情况下设定为0且在存在上溢的情况下设定为1)。如果游程位1071为0且上溢位1073为0,则状态机1050保持在RLC残差LSB状态1051中。当设定上溢位1073(例如,为1)时,如由箭头1074所示,下一字节的状态移动到RLC残差MSB状态1052,如下文所描述。图10G的下半部因此展示致使状态转变的RLC残差LSB状态1051中的字节。当设定上溢位时,如1075处所展示,下一状态不可为一连串零,且可改为使用位7来编码数据,例如如由数据部分1076所示。
RLC残差MSB状态:此状态(展示为1052)编码不拟合在6个数据位内的要素值的位7到13。针对RLC残差状态的字节1080的游程长度编码如图10H中所展示。数据部分1082填充七个最低有效位。在此实例中,位7-指示为游程位1081-编码下一字节是否为一连串零。如果游程位经设定(例如,为1),则状态转变到RLC零游程状态1053。
RLC零游程状态:此状态(展示为1053)编码零游程计数的7位。RLC零游程状态1053的字节1085的游程长度编码在图10I中展示。再次,数据部分1087提供于七个最低有效位中。最高有效位1086为游程位。如果编码计数需要较多位,则游程位为高。如果游程位为高(例如,1),则状态机1050保持在RLC零游程状态1053中。如果游程位为低(例如,0),则状态机1050转变到RLC残差LSB状态1051。在RLC残差LSB状态1051中,如果游程位为高(例如,1)且上溢位为低(例如,0),则状态机1050从RLC残差LSB状态1051转变到RLC零游程状态1053。
在实例中,针对每一状态创建频率表以供霍夫曼编码器使用。为了使解码器在已知状态开始,经编码流中的第一符号将始终为残差。位当然可反转(0/1、1/0等),而不损害功能性。类似地,旗标的符号或字节内的位置仅为说明性的。
时间预测和传信
现将描述时间预测的某些变型和实施细节,包含时间信令的某些方面。
在本文中所描述的某些实例中,可使用来自与不同时间样本相关的两个或更多个视频帧的信息。这可被描述为时间模式,例如,因为其涉及来自不同时间的信息。并非所有实施例可利用时间方面。在图1到5C的实例中展示用于时间预测的组件。如本文中所描述,对一个或多个残差集合进行编码的步骤可利用被布置成存储与前一视频帧相关的信息的时间缓冲器。在一种情况下,对残差集合进行编码的步骤可包括从时间缓冲器导出时间系数集合且使用所检索的时间系数集合来修改当前系数集合。在这些实例中,“系数”可包括经变换残差,例如如参考视频流的帧的一个或多个编码单元所限定,方法可应用于残差和系数两者。在某些情况下,修改可包括从当前系数集合减去时间系数集合。此方法可应用于多个系数集合,例如涉及层级1流和涉及层级2流的那些。可例如参考视频数据帧内的编码单元而选择性地执行对当前系数集合的修改。
可在编码和解码级两者处应用时间方面。在图3A和3B的编码器300中以及图5B和5C的解码器580、590中展示时间缓冲器的使用。如本文中所描述,在修改当前系数集合之前,所述当前系数集合可经历分级和变换中的一个或多个。在一种情况下,来自相应位置(例如,相同位置或映射位置)处的先前编码(n-1)帧的经解量化的经变换系数dqCx,y,n-1用于预测待编码(n)帧中的系数Cx,y,n。如果使用4×4变换,则x、y可以在范围[0,3]内;如果使用2×2变换,则x、y可以在范围[0,1]内。解量化系数可由逆量化块或操作生成。举例来说,在图3B中,解量化系数由逆量化组件372生成。
在某些实例中,可存在至少两个时间模式。
·不使用时间缓冲器或使用具有全零值的时间缓冲器的第一时间模式。第一时间模式可被视为帧内模式,因为其仅使用来自当前帧内的信息。在第一时间模式中,在任何所应用的分级和变换之后,可基于来自一个或多个先前帧的信息而在无需修改的情况下量化系数。
·利用时间缓冲器,例如使用具有可能非零值的时间缓冲器的第二时间模式。第二时间模式可被视为帧间模式,因为其使用来自当前帧外部,例如来自多个帧的信息。在第二时间模式中,在任何所应用的分级和变换之后,可从待量化的系数减去先前帧解量化系数-Cx,y,n,inter.=Cx,y,n-dqCx,y,n-1。
在一种情况下,可通过对归零时间系数集合执行减法来应用第一时间模式。在另一情况下,可基于时间信令数据而选择性地执行减法。图11A和11B展示用于两种相应时间模式的编码器中的实例操作。图11A中的第一实例1100展示由编码组件1102在第一时间模式中生成系数的集合-Cx,y,n,intra。随后传递这些系数用于量化。在图11A中,由编码组件1112如上文所描述通过减法1114产生第二时间模式中的系数的集合-Cx,y,n,inter,且接着传递这些系数用于量化。随后根据图3A和3B对两种情况下的经量化系数进行编码。应注意,在其它实例中,可在量化之后或在编码管线中的另一点处应用时间模式。
可传信两个时间模式中的每一个。可在编码器与解码器之间提供时间信令。两个时间模式可在视频流内为可选的,例如不同模式可应用于视频流的不同部分(例如,不同经编码图片和/或具有例如拼片等图片的不同区域)。时间模式还可或替代地针对整个视频流传信。时间信令可形成例如从编码器传输到解码器的元数据的部分。可对时间信令进行编码。
在一种情况下,可针对视频流,例如针对视频流内的多个帧,限定全局配置变量。举例来说,此可包括temporal_enabled旗标,其中值0指示第一时间模式且值1指示第二时间模式。在其它情况下,以及/或代替全局配置值,可向视频流内的每一帧或“图片”指派指示时间模式的旗标。如果temporal_enabled旗标用作全局配置变量,那么此可由编码器设定且被传送到解码器。
在某些情况下,视频流的帧的一个或多个部分可被指派有指示所述部分的时间模式的变量。举例来说,所述部分可包括编码单元或块,例如通过2×2或4×4变换矩阵变换的2×2或4×4区域。在某些情况下,每一编码单元可被指派有指示时间模式的变量。举例来说,值1可指示第一时间模式(例如,所述单元为“帧内”单元),且值0可指示第二时间模式(例如,所述单元为“帧间”单元)。可在编码器与解码器之间传信与每一部分相关联的变量。在一种情况下,此可通过将经变换系数中的一个设定为变量值来执行,例如此可通过将用于2×2编码单元的H系数或用于4×4编码单元的HH系数设定为变量值(例如,0或1)而传信。在另一情况下,每一编码单元可包括指示时间模式的元数据和/或边带信令。图11C展示前一情况的实例1120。在此实例1120中,存在由2×2变换产生的四个系数1122。可通过变换残差的2×2编码单元(例如,针对给定平面)来生成这四个系数1122。当使用哈达玛变换时,四个系数可被称为A、H、V和D分量1124,其分别表示编码单元内的平均、水平、竖直和对角方面。在图11C的实例1120中,H分量用于传信时间模式,如由1126所示。
可基于所指示的时间模式在编码器和/或解码器处选择性地应用时间处理。可例如用游程长度编码等对用于增强流的帧的部分的元数据和/或边带信道内的时间信令进行编码以减小待传输到解码器的数据的大小。游程长度编码对于例如编码单元和/或拼片等小部分可为有利的,其中存在几个时间模式(例如,因为此元数据可包括具有重复值的序列的‘0’和‘1’的流)。
可针对两个增强流(例如,层级2处和/或层级1处)中的一个或多个传信时间模式。举例来说,在一种情况下,可在LoQ2(即,层级2)处但不在LoQ1(即,层级1)处应用时间模式。在另一情况下,可在LoQ2和LoQ1两者处应用时间模式。时间模式可针对每一增强层级独立地传信(例如,如上文所论述)。每一增强层级可使用不同的时间缓冲器。对于LoQ1,默认模式可以是不使用时间模式(例如,值0指示不使用时间特征,且值1指示使用时间模式)。是否在特定增强层级处使用时间模式可取决于解码器的能力。本文中所描述的操作的时间模式可类似地应用于每一增强层级处。
编码器处的时间处理
在某些情况下,可估计用于视频的至少一部分的每一时间模式的成本。这可在编码器处或在不同装置中执行。在某些情况下,选择且传信具有较小成本的时间模式。在编码器中,此可由图3A和3B中展示的时间模式选择块执行。解码器接着可对信令进行解码且应用所选择的时间模式,例如如编码器所指示。
可按每帧基础和/或按每部分基础,例如按每拼片和/或按每编码单元,执行成本核算。在后一种情况下,在量化和编码之前,可使用成本核算评估的结果来设定用于编码单元的时间模式变量。
在某些情况下,可提供指示视频的帧或帧的部分的集合的初始时间模式的映射。此映射可由编码器使用。在一种情况下,可如下文更详细地描述由编码器获得temporal_type变量以供在成本估计中使用。
在一种情况下,用于选择时间模式的成本可为可控制的,例如通过设定配置文件中的参数。在一种情况下,用于选择时间模式的成本可基于输入帧与一个或多个残差集合(例如,如经重建的)之间的差。在另一情况下,成本函数可基于输入帧与经重建帧之间的差。可评估每一时间模式的成本,且可选择具有最小成本的模式。所述成本可基于绝对差总和(SAD)计算。可按每帧和/或每编码单元以此方式来评估成本。
举例来说,第一成本函数可基于Jo=Sum(abs(Ix,y,n-Rx,y,v,o)),其中Ix,y,n为输入值,Rx,y,v,o为经重建残差且o为帧内或帧间(即,指示第一或第二时间模式)。可使用来自每一时间模式的经重建残差来评估成本函数,且接着可针对每一时间模式比较成本函数的结果。第二成本函数可基于应用针对非零经量化系数的惩罚的额外项,和/或基于一个或多个方向分量的值(如果这些方向分量用于传信(例如,在变换之后)。在第二情况下,第二成本函数可基于Jo=Sum(abs(Ix,y,n-Rx,y,v,o))+step_widthAA*Sum((qCx,y,n,o!=0)+((o==intra)&(qC0,3,n,intra==0))),其中步宽是可凭经验调谐的可配置权重或乘数,qCx,y,n,o是经量化系数且qC0,3,n,intra是与H(用于2×2变换)或HH(用于4×4变换)要素有关的系数。在其它情况下,在使用边带信令的情况下,将这些位设定为1的成本可并入到第二成本函数中。对于第一时间模式(例如,帧内模式),可根据Rx,y,n,intra=Transform(dqCx,y,n,intra)重建残差,其中“dq”指示解量化。对于第二时间模式(例如,帧间模式),可根据Rx,y,n,inter=Transform(dqCx,y,n,inter+dqCx,y,n-1)重建残差。在两种情况下,“变换”可指示系数的逆变换。如果变换矩阵为自逆矩阵,则共同或共享矩阵可用于正变换和逆变换两者。如前所述,可在例如元数据和/或所设定参数值等信令信息中指示所使用的时间模式。
在一种情况下,可在编码器处评估成本。举例来说,时间选择块可评估成本。在其它情况下,可由单独实体(例如,远程服务器,在视频流的预处理期间)和传信到编码器和/解码器的时间模式来评估成本。
如果选择第二时间模式(例如,帧间处理),则接着发送经修改的经量化系数(例如,由图3B中的变换组件341和量化组件343之间的减法块342输出)以供熵编码。可接着保持这些系数的解量化值以用于例如帧n+1等下一帧的时间预测。尽管图3B展示用于层级1流的两个单独的逆量化操作,但应注意,在某些情况下这些可包括单个共同逆量化操作。
时间模式选择和时间预测可应用于图3B中所展示的层级2和层级1流中的一个或多个(例如,应用于一个或两个残差集合)。在某些情况下,时间模式可针对每一流单独地配置和/或传信。
时间刷新
如稍后的章节中所描述,在某些实例中,第二时间模式可利用时间刷新参数。此参数可在将要刷新时间缓冲器时,例如在将要用第二值集合替换存储在时间缓冲器中的第一值集合的情况下,传信。可在编码器和解码器中的一个或多个处应用时间刷新。时间缓冲器可以是时间缓冲器124、144、230、250、345、361、424、444、530、550和591中的任何一个。举例来说,在编码器中,时间缓冲器可存储当时间刷新旗标经设定(例如,等于1,指示“刷新”)时所加载的先前帧的解量化系数。在此情况下,解量化系数存储在时间缓冲器中且用于将来帧的时间预测(例如,用于减法),而帧的时间刷新旗标未经设定(例如,等于0,指示“无刷新”)。在此情况下,当接收到具有设定成1的相关联时间刷新旗标的帧时,替换时间缓冲器的内容。这可在每帧基础上执行和/或应用于例如拼片或编码单元等帧的部分。
时间刷新参数可用于表示缓慢变化或相对静态场景的帧集合,例如帧集合的第一快照可用于场景中的后续帧。当场景再次改变时,下一场景的帧集合中的第一帧可指示再次需要时间刷新。这可有助于加速时间预测操作。
时间缓冲器的时间刷新操作可通过用时间缓冲器将所有值归零来实现。
可通过编码器将时间刷新参数传信到解码器,例如传信为二进制temporal_refresh_bit,其中1指示解码器将针对特定经编码流(例如,层级1或层级2)刷新时间缓冲器。
拼片的时间估计值和刷新
如本文中所描述,在某些实例中,可将数据分组成拼片,例如图像的32×32块。在此情况下,例如如上文所描述的时间刷新操作可针对帧以逐拼片为基础执行,例如其中系数存储在时间缓冲器中且可由拼片寻址。可在编码器和解码器处不对称地应用用于拼片时间刷新的机制。
在一种情况下,可在编码器处执行时间处理操作以基于每帧或每块/编码单元而确定时间刷新逻辑。在某些情况下,用于解码器处的时间刷新的信令可适于保存从编码器传输到解码器的位数目。
图12A展示可在编码器处执行的时间处理的实例1200。图12A展示实例编码器的时间处理子单元1210。此编码器可基于图3A或3B的编码器300、360。时间处理子单元接收指示为R的残差集合。这些可以是如本文所描述的层级2或层级1残差。其可包括经分级且经滤波残差的集合或未经分级且未经滤波残差的集合。时间处理子单元1210输出指示为qC的经量化系数的集合,其可接着经熵编码。在当前的实例中,时间处理子单元1210还输出指示为TS的时间信令数据,以供传送到解码器。时间信令数据TS可与经量化系数一起编码或与其分开编码。时间信令数据TS可被提供为标头数据和/或提供为边带信令信道的部分。在一种情况下,时间数据可编码为传送到解码器的单独表面。
在图12A的实例1200中,残差(R)由变换组件1212接收。此可对应于其它实例的变换组件,例如图3A和3B中的变换组件322、341中的一个。变换组件1212输出如本文中所描述的变换系数(即,经变换残差)。时间处理子单元1210还包括中心时间处理器1214。此还接收呈基于拼片的时间刷新参数temporal_refresh_per_tile的形式的元数据和时间模式initial_temporal_mode的估计值。可按每帧的编码单元提供时间模式的估计值,且可按每拼片提供基于拼片的时间刷新参数。举例来说,如果使用2×2变换,则编码单元涉及2×2区域,且在32×32拼片中存在16×16此些区域,且因此存在256个编码单元。元数据可由编码器的另一子单元例如在预处理操作中生成,和/或可例如经由网络应用编程接口(API)被供应到编码器。
在图12A的实例1200中,时间处理器1214接收元数据且被配置成确定用于每一编码单元的时间模式和用于整个帧或图片的时间刷新位的值。时间处理器1214控制时间缓冲器1222的应用。时间缓冲器1222可对应于如上文所提及的先前实例的时间缓冲器。时间缓冲器1222从逆量化组件1220接收解量化或逆量化系数,所述逆量化组件可对应于图3A和3B中的逆量化组件372或364中的一个。逆量化组件1220进而以通信方式耦合到量化组件1216的输出,所述量化组件可对应于图3A和3B中的量化组件323或343中的一个。时间处理器1214可实施如图3A和3B中所展示的时间模式选择组件363或370的某些功能。尽管图12A展示量化组件1216、逆量化组件1220和时间缓冲器1222之间的某一耦合,但在其它实例中,时间缓冲器1222可在量化之前接收时间处理器1214的输出,且因此可省略逆量化组件1220。在图12A中,还展示基于时间处理器1214的操作生成时间信令TS的时间信令组件1218。
图12B展示例如解码器处实施的相应实例1230,其中解码器接收每帧temporal_refresh位和每编码单元temporal_mode位。如上文所论述,在某些情况下,可在经编码系数内设定用于每一编码单元的时间模式,例如通过替换系数内的H或HH值。在其它实例中,可经由额外信令信息,例如经由边带和/或作为帧元数据的部分,发送每一编码单元的时间模式。
在图12B的实例1230中,时间处理子单元1235提供在解码器处。此可实施层级1或层级2解码组件的至少一部分。时间处理子单元1235包括逆量化组件1240、逆变换组件1242、时间处理器1244和时间缓冲器1248。逆量化组件1240和逆变换组件1242可包括图5B和5C中展示的逆量化组件572、582和逆变换组件573、583的实施方案。时间处理器1244可对应于由时间预测组件585和第三求和组件594或由时间预测组件585和第四求和组件595应用的功能性。时间缓冲器1248可对应于时间缓冲器550或591中的一个。在图12B中,还存在时间信令组件1246,其接收数据1232,在此实例中,所述数据经指示于位流的标头H的集合中。这些标头H可对应于图5C的标头556。应注意,时间子单元1210和1235可在某些情况下由不同于本文中的其它实例的相应编码器和解码器实施。
在某些情况下,当时间模式经启用时,例如如由全局temporal_enabled位所设定,图12A的时间处理器1214被配置成使用基于拼片的时间刷新参数temporal_refresh_per_tile和时间模式initial_temporal_mode的估计值,且确定用于每一编码单元的时间模式的值以及用于改进编码器与解码器之间的通信效率的整个帧的时间刷新位的值。
在一种情况下,时间处理器可基于时间模式initial_temporal_mode的估计值确定成本,且使用这些成本来设定传送到解码器的值。
在一种情况下,时间处理器可初始基于跨帧的编码单元集合的不同经估计时间模式的百分比,例如在编码单元具有时间模式的初始估计值的情况下,确定是否应执行和传信每帧刷新。举例来说,首先,两个经估计时间模式(例如,与2×2或4×4变换相关联的要素)的所有编码单元在其具有零绝对差总和(例如,其中不存在残差的情况)的情况下可被忽略。可接着基于非零编码单元的比例(例如,百分比)来估计帧的刷新位。在某些实例中,可基于初始估计为涉及第一时间模式的编码单元的百分比来设定时间缓冲器的内容的刷新操作。举例来说,如果在不设定temporal_refresh_per_tile的情况下估计为涉及第一时间模式的编码单元的60%以上,或如果在设定temporal_refresh_per_tile的情况下认为75%以上的编码单元涉及第一时间模式,则可针对整个帧和经设定用于解码器的适当信令而刷新时间缓冲器1222(例如,通过使缓冲器内的值归零)。在这些情况下,即使时间处理经启用(例如,经由temporal_enabled信令),也相对于时间缓冲器1222内的归零值执行任何减法,且因此类似于第一时间模式而抑制解码器处的时间预测。这可用于基于视频流内的改变(例如,如果其为实况流)而恢复回到第一时间模式,即使具有时间预测的第二时间模式经传信。这可改进检视质量。
类似地,在某些情况下,即使第二时间模式经选择用于编码单元且传信到解码器,如果由基础编码器编码的帧被设定为I或帧内(例如,通过设定帧的temporal_refresh_bit),则如上文刷新时间缓冲器1222(例如,实现类似于第一时间模式的处理)。这可有助于确保当启用时间处理时遵循例如经编码的基础流的图片群组(GoP)边界。
是否例如针对拼片执行时间刷新可取决于噪声序列是否与经隔离静态边缘一起存在。成本函数的确切形式可取决于实施方案。
返回到由图12A的时间处理子单元1210执行的处理,在对整个帧刷新的决策之后,第二级可涉及基于temporal_refresh_per_tile位值的基于拼片的处理。这可针对帧的给定拼片集合而按每拼片执行。如果使用temporal_refresh_per_tile,且如果将旗标temporal_refresh_per_tile设定在由时间处理器接收的元数据中,则可执行以下处理。
在第一子级,可检查给定拼片的时间缓冲器是否已经为空。如果是,则拼片中的所有时间信号为零,且在第二时间模式中对此拼片中的编码单元进行编码(例如,帧间编码),例如将用于所述单元的时间模式设定为第二模式,关于此模式在编码器处执行进一步时间处理,且将时间模式传信到解码器(例如,通过设定系数值或经由边带信令)。这可在时间缓冲器为空时根据第一时间模式有效地对拼片进行编码(例如,帧内编码)。如果第二时间模式(例如,帧间模式)经由时间模式位中的0值而设定,则此方法可在时间缓冲器将为空的情况下减少需要传送到解码器的位数目。
如果并不针对给定拼片设定旗标temporal_refresh_per_tile,则可根据第二时间模式(例如,作为帧间单元)对拼片中的第一编码单元进行编码,且并不设定此拼片的时间信令。在此情况下,针对拼片内的其它编码单元执行如先前所描述的成本核算操作(例如,可基于绝对差总和(SAD)度量而确定第一或第二时间模式)。在此情况下,对于其它编码单元,基于当前(例如,实况)编码条件重新计算初始经估计时间模式信息。拼片中的所有其它编码单元可经受以上程序和成本核算步骤。将拼片中的第一编码单元编码为第二时间模式可用于指示解码器处的初始时间处理(例如,指示拼片的初始刷新),其中基于经设定用于编码单元的temporal_mode位的经确认值而在解码器处执行用于其它编码单元的时间处理。
如果针对给定拼片设定旗标temporal_refresh_per_tile且用于拼片的时间缓冲器不为空,则时间处理器可布置用于拼片的时间刷新,其中时间信令接着经设定以在解码器处指示此信息。这可通过将第一编码单元的时间模式值设定为1且将所有其它编码单元的时间模式值设定为0来执行。第一编码单元中的1和其它编码单元中的0的此内容向解码器指示将相对于拼片执行刷新操作但减少待跨越传输的信息。在此情况下,时间处理器有效地忽略时间模式值且根据第一时间模式对所有编码单元进行编码(例如,编码为不具有时间预测的帧内编码单元)。
因此,在这些实例中,当temporal_refresh_per_tile被设定为编码器元数据的部分时,第一编码单元可用于指示解码器在所述拼片的位置处清洁(即,清空)其相应时间缓冲器,且编码器逻辑可应用时间处理作为适当时间模式。
以上方法可允许基于拼片内的编码单元而在每拼片基础上执行时间预测。可针对拼片内的一个编码单元设定给定拼片的配置。这些方法可应用于层级2流和层级1流中的一个或多个,例如应用于残差集合中的一个或多个。
在某些情况下,可针对视频流设定temporal_tile_intra_signalling全局参数以指示将在解码器处使用上文所描述的拼片刷新逻辑。
初始时间模式旗标
在某些实例中,可针对多个帧(例如,针对当前帧和下一帧)提供initial_temporal_mode数据。在这些实例中,下一帧(例如帧n+1)的initial_temporal_mode估计值还可用于移除对于降低位速率而言并不重要的经量化值,经估计时间模式信息可用于控制与一个或多个阈值的比较以指示经量化值的移除(例如,在图3A或3B中的量化组件323、343中的一个处、时间模式选择组件363、370中的一个处,或RM L-1控制组件324、365处)。
在某些情况下,如果估计下一帧中的相同位置处的编码单元的initial_temporal_mode与第一时间模式(例如,帧内模式)相关,则可假定当前编码单元中待编码的残差将会在下一帧中消失,且因此可移除小于或等于给定阈值的残差。作为实例,在测试案例中,此阈值可设定为2,意味着将从编码单元移除小于+/-3的所有经量化值。
图12C展示可如何针对残差帧1251提供时间信令信息的实例1250。这些实例中对“帧”的参考可指代用于特定平面的帧,例如其中针对YUV平面中的每一个生成单独的残差帧。如此,术语“平面”和“帧”可互换使用。图12C的左手侧展示残差帧可如何被分成若干拼片1252。图12C的右手侧展示时间信令信息可如何被指派到每一拼片。举例来说,圆1253指示第一拼片1254。在帧1251中,拼片跨帧1251形成光栅状样式的行。右手侧更详细地展示第一拼片1254。
图12C的右手侧上的圆1253展示每一拼片1254如何包括若干编码单元。编码单元可包括一个或多个残差。在一种情况下,编码单元可涉及与变换操作相关联的残差块,例如如本文中所描述的2×2块,其可涉及定向分解变换(DD,下文更详细地描述),或如本文中所描述的4×4块,其可涉及定向分解平方(DDS)。在图12C中,拼片内的每一编码单元具有temporal_type旗标1255(展示为“TT”),且拼片1254具有temporal_refresh_per_tile旗标1256(展示为“TR”)。此信息可由编码器获得且使用以应用如上文所描述的时间编码。
其它时间信令实例
如上文所描述,在一种情况下,可例如作为增强流的部分而“流中”提供时间信令。这可通过在变换之后替换特定系数来执行,例如时间信令被嵌入在变换系数内。在一种情况下,水平系数(例如,2×2定向分解变换中的H或4×4定向分解平方变换中的HH)可用于传信用于特定编码单元的时间模式。可使用水平系数,因为此可最小化对经重建信号的效应。在某些情况下,例如基于由编码块中其它系数所携载的数据,可通过解码器处的逆变换重建水平系数的效应。
在另一情况下,可使用元数据执行时间信令。此处所使用的元数据可为例如并不形成基础流或增强流的部分的边带信令的形式。在一种情况下,在由解码器接收的单独流中(例如,通过编码器或远程服务器)传输元数据。
尽管“流中”时间信令可提供用于压缩的某些优点,但将帧的时间数据作为单独信息组块(例如元数据)发送会允许不同的且可能更有效的熵编码用于此信息。其还允许在不需要所接收的增强流数据的情况下执行例如如上文所描述的时间控制和处理。这允许准备时间缓冲器,且使环路内时间解码成为简单的加法过程。
在第二时间模式的情况下(例如,在启用时间处理的情况下),可存在三个层级的时间信令:
·在第一层级处,可存在每帧时间信号。这些可包括每帧时间刷新信号。此可为每帧刷新位。如果经此设定,则可在无时间预测的情况下对整个帧进行编码。此层级处的信号可用于对帧进行编码且可传信到解码器。
·在第二层级处,可存在每拼片时间信号。举例来说,可将这些设定为每m乘n拼片,其中m和n可为32。每拼片时间信号可包括每拼片时间刷新信号。此可为每拼片刷新位。如果针对拼片设定时间刷新信号,则在无时间信息的情况下对整个拼片进行编码。此时间信令层级可用于对帧进行编码。在一种情况下,其可不显式地传信到解码器;在此情况下,可如下文所描述通过第三层级处的第一时间信号指示拼片刷新信号。在另一情况下,可将每拼片时间刷新信号显式地传信到解码器。
·在第三层级处,可存在每块或编码单元时间信号。这些可包括用于所述块的时间模式信号。这可传信到解码器。如果将每拼片时间刷新信号设定为1,且在无时间信息的情况下对整个拼片进行编码(例如,根据第一时间模式),则此可随可设定为1的第一块的一位每块时间信号传信到解码器。如果将每拼片时间刷新信号设定为0,则可通过时间预测(例如,使用时间缓冲器)对拼片中的第一变换块(例如,2×2或4×4块)进行编码。在此情况下,可将每块的时间信号设定为0,指示时间预测经使用(例如,根据第二时间模式经编码)。如果将每拼片时间刷新信号设定为0,则拼片中的所有其它变换块可具有一位时间信号,所述一位时间信号在拼片在无时间信息时编码的情况下经设定为1,且在来自相同空间位置处的先前帧的变换系数首先从变换系数中被减去且接着差经量化且传递到熵编码器的情况下(即,在将要使用第二时间模式和时间缓冲器的情况下)经设定为0。
图12D展示用于4×4变换大小(例如,DDS变换)的时间信号的表示1260。可按相应方式传信2×2变换大小。图12D展示具有多个拼片1265、1266的要素1262(例如,从残差导出)的帧(或平面)1261(例如,类似于图12C)。使用拼片1265、1266组织时间信号。对于4×4变换和32×32拼片,存在每拼片8×8时间信号(即,32/4)。对于2×2变换和32×32拼片,存在每拼片16×16时间信号(即,32/2)。例如如图12D中所展示的残差帧的时间信号集合可被称为“时间映射”。时间映射可从编码器传送到解码器。
图12D展示用于拼片1265、1266内的第一变换块1268、1269的时间信号可如何指示将在第一还是第二时间模式内处理拼片。时间信号可为指示时间模式的位。如果所述位针对第一变换块被设定成1,例如如针对块1268所展示,则这指示将根据第一时间模式对拼片1265进行解码,例如在不使用时间缓冲器的情况下。在此情况下,可不设定用于其它变换块的位。这可减少传输到解码器的时间数据的量。如果将第一变换块的时间信令位设定为0,例如如针对块1269的情况,则这在12D中指示将根据第二时间模式对拼片1266进行解码,例如通过时间预测和时间缓冲器的使用。在此情况下,将剩余变换块的时间信令位设定为0或1,从而在(第三)每块层级处提供时间控制的层级。
编码时间信号
在某些情况下,如上文所描述的在第三层级处的时间信令可在其作为元数据(例如,边带数据)发送的情况下有效地经编码。
在上文所描述的情况下,且例如如图12D中所展示,可将帧的时间映射发送到游程长度编码器(例如,其中帧为经编码残差的“图片”)。可使用游程长度编码有效地对时间映射进行编码。可使用第一和第二增强流中的一个或多个(或此编码器过程的副本)的“熵编码”组件中所使用的相同游程长度编码器来执行游程长度编码。在其它情况下,可使用不同的游程长度编码器。
如果将使用游程长度编码,则当时间映射由游程长度编码器接收时,可发生若干操作。在一种情况下,如果拼片中的第一时间信号为1,则跳过其余拼片的时间信令。这由来自具有值1的第一变换块的箭头展示。在此情况下,如果拼片中的第一时间信号为0,例如如针对12D中的后续拼片1266所展示,则拼片的时间信令位可经过逐线扫描(例如,沿着第一行变换块,然后移动到下一行变换块,在移动到下一列变换块的每一步骤处)。在图12D中,每一拼片具有8行和8列,因此对于0位,对第一行的前8列执行迭代,且接着对于第二行的相同8列重复所述迭代,等等,直到对用于所述特定拼片的变换块的所有时间信号进行编码为止。
在一种情况下,用于时间信号的游程长度编码器可具有表示位值0和1(即,第二时间模式和第一时间模式)的两个状态。这些可用于对游程1和游程0进行编码。在一种情况下,游程长度编码器可对游程逐字节地进行编码,使用每字节7位来对游程进行编码且使用位7来对需要更多位对游程进行编码(设定成1)的情况或上下文发生变化的情况进行编码。按照惯例,流中的第一符号始终被编码为0或1,因此解码器可使状态机初始化。可使用的状态机1280在图12E中展示。图12D中展示的数据可被称为“时间表面”,例如时间信令数据的表面。
图12E的状态机1280具有开始状态1281,然后是两个后续状态1282和1283。用于时间信令的游程长度解码器可逐字节地读取游程长度编码数据(例如,由游程长度编码器编码的图12D中展示的数据)。依据构造,可保证数据的第一字节的状态1281为流中的第一符号的真值。解码器使用状态机1280来确定数据的下一字节的状态。数据的字节可以与图10H和10I中的字节1080和1085类似的方式编码。在这些情况下,第一后续状态为一个游程状态1282。此可具有最高有效位(位7)作为游程旗标位(例如,类似于图10H的1081)和剩余位(位6到0-总共七个-类似于图10H中的1082)作为数据部分。一个游程状态1082编码一个游程计数的7位。如果编码计数需要较多位,则游程位为高。如果游程和符号位都是0或都是1,则状态机1280可从第一符号状态1281移动到一个游程状态1282,且如果游程和符号位不同(例如,0和1或1和0),则状态机1280可从第一符号状态1281移动到零游程状态。游程位值0可在一个游程状态1282和零游程状态1283之间双态切换。零游程状态1283还可具有类似于图10H或10I中展示的字节结构的字节结构)。零游程状态编码零游程计数的7位。如果编码计数需要较多位,则游程位为高。
在一个实例中,游程长度解码器可将0和1值写入到大小为(PictureWidth/nTbs,PictureHeight/nTbs)的时间信号表面阵列TempSigSurface中,其中nTbs为变换大小(例如,在本文的实例中,2或4)。如果待在TempSigSurface中的写入位置(x,y)处写入的值为1且x%(32/nTbs)==0且y%(32/nTbs)==0,则当y+32/nTbs<PictureWidth/nTbs时下一写入位置移动到(x,y+32/nTbs),否则其移动到(x+32/nTbs,0)。用于时间信令的游程长度编码和解码可以与针对残差数据描述的游程长度编码(例如,参考图10A到10I)类似的方式实施。
在一种情况下,由游程长度编码器生成的信息可发送到熵编码器。此可包括霍夫曼编码器。霍夫曼编码器可针对每一状态和经霍夫曼编码的值将两个霍夫曼代码写入到元数据流中。游程长度编码和熵编码可因此使用现有熵编码组件和/或这些组件的经适当调适副本(例如,作为经适当初始化的线程)。这可简化编码和解码,因为组件可与不同配置信息一起再使用。在某些情况下,可针对残差数据和时间信令数据两者(例如,如参考图10A到10I所描述)以类似方式实施霍夫曼或前缀编码。
时间处理流程图实例
图13A和13B是展示根据实例的时间处理方法的流程图的两个半部1300、1340。可在编码器处执行时间处理的方法。时间处理的方法可实施上文所描述的某些过程。处理的方法可应用于图12C中展示的残差的帧。
在第一框1302处,检查残差的当前帧是否为I帧(即,经帧内编码的帧)。如果残差的当前帧为I帧,则在框1304处刷新时间缓冲器,且在框1306处将残差的当前帧编码为帧间帧,其中在框1308处将每图片信令设定为1。如果在框1302处确定残差的当前帧不是I帧,则选择第一拼片,且在框1310处检查以确定是否设定temporal_refresh_per_tile旗标(例如,具有值1)。这可为TR变量1256,如图12C的右手侧所展示。如果设定temporal_refresh_per_tile旗标,则在下一框1320处,分析当前拼片内的单元的temporal_type旗标。举例来说,对于第一拼片,这些可为在图12C的右手侧上展示的单元的temporal_type旗标1255。在下一框1324处,可计数I或第一时间模式旗标值的百分比(例如,值‘1’)。如果这些大于75%,则在框1328处刷新时间缓冲器且在框1330处对拼片进行帧间编码,其中在框1332处将每一拼片中的时间信号设定为0。如果这些小于75%,则方法进行到图13B(例如,经由节点A)。如果temporal_refresh_per_tile未设定(例如,具有值0),则发生类似过程,其中在框1322处检查以确定是否当前拼片内的单元的超过60%的temporal_type旗标被设定为I或第一时间模式(例如,具有值‘1’)。如果情况如此,则发生按照先前75%检查的类似过程(例如,执行框1328到1332)。如果将当前拼片内的单元的小于60%的temporal_type旗标设定为I或第一时间模式,则方法再次进行到图13B(例如,经由节点B)。
转向图13B中展示的第二半部1340,且从图13B的左手侧的节点A开始,如果小于75%的单元具有I或第一时间模式,则在框1342处检查时间缓冲器是否为空。如果时间缓冲器为空,则在框1344处对拼片内的单元进行帧间编码,且在框1346处针对拼片中的单元将时间信号设定为0。如果时间缓冲器不为空,则在框1348处对拼片内的单元进行帧内编码。在此情况下,接着在框1350处,将第一单元的时间信号设定为1,且将拼片中的所有其它单元的时间信号设定为0。
现转向图13B的右手侧且在节点B处开始,如果小于60%的单元具有I或第一时间模式,则在框1352处对当前拼片中的第一单元进行帧间编码,且在框1354处将第一单元的时间信号设定为0。接着,在框1356处检查协同定位的n+1单元(即,下一帧中协同定位的单元)的temporal_type是否设定成1。如果是且在框1358处确定残差值小于2,则在框1360处例如通过将残差值设定为0来移除残差。如果在框1358处残差值不小于2,或如果协同定位的单元未设定成1,则在框1362处作出关于是否基于成本函数将要对拼片中的下一单元进行帧内或帧间编码的确定。在框1364处,可根据成本函数分类来设定下一单元的时间信号。这可针对拼片中的其余单元重复。可针对帧中的每一拼片重复所述方法,例如从对temporal_refresh_per_tile的检查开始。
云配置
在某些实例中,编码器(或编码过程)可与一个或多个远程装置通信。编码器可以是如图1、3A和3B中的任一个中所展示或任何其它实例中描述的编码器。
图14A展示编码器1402跨网络1404通信的实例1400。在一种情况下,编码器1402可跨网络1404接收配置数据1406和/或跨网络1404传输配置数据1408。在图14A的实例中,编码器接收呈编码器参数、时间信令和残差掩码中的一个或多个的形式的配置数据1406。时间信令可包括本文中所论述的时间信令中的任一个。编码器参数可包括控制编码器的一个或多个参数的值。在一种情况下,编码器参数可包含基础编码器、层级1流的处理组件和层级2流的处理组件中的一个或多个的参数。编码器参数可用于配置每一流的流分辨率、量化、序列处理、位速率和编解码器中的一个或多个。残差掩码可包括例如从0到1的加权,以应用于残差集合,例如应用于残差的2×2或4×4分组(即,块)。残差掩码可指示用于将块递送到解码器和/或用于编码的优先级。在另一情况下,残差掩码可包括控制块的处理的加权,例如特定块可视觉上经增强或加权。可基于应用于一个或多个残差块的类(例如,标签或数值)来设定加权。
在某些情况下,编码器1402可适于执行多个位速率下的编码。在此情况下,可供应用于所述多个位速率中的每一个的编码器参数。在某些情况下,从网络1404接收的配置数据1406可提供为全局配置数据、每帧数据和每块数据中的一个或多个。在实例中,可以每帧的方式提供残差掩码和时间信令。举例来说,可基于例如测得的带宽等通信信道的可用容量和/或所要用途来设定所述多个位速率,所述所要用途例如使用10Mbp下行链路信道中的2Mbp。
从编码器1402传送的配置数据1408可包括基础编解码器类型、所需位速率集合和序列信息中的一个或多个。基础编解码器类型可指示用于一组当前处理的基础编码器的类型。在某些情况下,不同基础编码器可供使用。在一种情况下,可基于所接收基础编解码器类型参数选择基础编码器;在另一情况下,可基于编码器内的局部处理选择且跨网络传送基础编解码器类型。所需的位速率集合可指示待用于编码基础流和两个增强流中的一个或多个的一个或多个位速率。不同流可使用不同位速率。增强流可使用额外带宽(如果可用的话);例如,如果带宽不可用,则带宽可由经编码基础流和层级1流使用以在给定位速率下提供第一质量水平;经编码层级2流可接着使用第二位速率来提供进一步改进。此方法还可差分地应用于基础流和层级2流,而非基础流和层级1流。
在一种情况下,跨网络1404接收的编码器参数可指示待由编码器1402应用的残差模式和时间模式中的一个或多个。编码器参数可单独地指示每一流的模式,或指示用于两个增强流的共同模式。残差模式参数可由图1、3A和3B中展示的残差模式选择组件150、350接收。在某些情况下,可省略残差模式选择组件,且残差模式参数可由编码器的其它组件直接接收,例如图1中的L-1或L-2编码组件122、142或者图3A、3B中的RM L-1控制和/或RM L-2选择/分级组件321、340从编码器1402的云接口接收残差模式参数。在某些情况下,每一残差或时间模式可由整数值指示,例如‘1’用于时间处理,和/或残差模式2,其中仅在变换操作之后保留特定系数。残差模式可指示将应用什么形式的经预测系数处理,例如是否将例如使用来自较低分辨率流的数据预测特定系数。
在一种情况下,编码器1402可具有关于远程或云配置的不同配置设置。在可以是“默认”模式的一个模式中,编码器可被配置成跨网络进行远程程序调用以检索初始配置参数来执行如本文所描述的编码。在可以是“自定义”模式的另一模式中,编码器1402可检索指示特定用户配置的局部参数值,所述特定用户配置例如由编码器使用的一组特定工具和/或那些工具的配置。在一种情况下,编码器1402可具有不同模式,其指示待从远程装置检索哪些参数以及待从本地存储装置检索哪些参数。
在一种情况下,时间信令可指示对视频数据帧的某些处理,例如如上文所描述。时间信令可例如指示如上文所描述的特定帧的时间模式(例如,指示帧内或帧间的模式1或0)。可针对增强流中的一个或两者提供时间信令。
图14B展示编码器1402可将配置数据1406、1408发送到远程控制服务器1412和/或从远程控制服务器1412接收配置数据1406、1408。控制服务器1412可包括实施用于接收或发送数据的应用编程接口的服务器计算装置。举例来说,控制服务器可实施REST式接口,借此可通过(安全)超文本传送协议(HTTP)请求和响应来传送数据。在另一情况下,使用特定通信协议(例如,在输送或应用层处)实施的侧信道可用于经由网络1404在控制服务器1412和编码器1402之间的通信。网络1404可包括一个或多个有线和/或无线网络,包含局域网和广域网。在一种情况下,网络可包括因特网。
图14C展示编码器1432(其可实施包含图14A和14B中的编码器1402的所描述编码器中的任一个)可如何包括被配置成经由网络例如与远程控制服务器1412通信的配置接口1434。配置接口1434可包括例如以太网和/或无线适配器等硬件接口和/或软件以提供通信堆栈来经由一个或多个通信网络通信。在图14C中,由编码器1432使用和/或存储的配置参数和设定1436经由网络1404使用配置接口1434传送。从配置接口接收例如可存储在一个或多个存储器或寄存器中的编码器配置参数1438。在一种情况下,编码器配置参数1438可控制例如各图中所展示的编码器1432内的下取样、基础编码器和基础解码器组件中的一个或多个。配置接口1434还将数据传送到L-1流控制组件1440和L-2流控制组件1442。这些组件可配置每一增强流上的工具使用。在一种情况下,L-1和L-2流控制组件1440、1442控制残差模式选择、变换、量化、残差模式控制、熵编码和时间处理组件(例如,如各图中所展示和本文中所描述)中的一个或多个。
使用如本文所描述的云配置可提供实施方案优点。举例来说,可例如基于网络控制系统和测量值远程地控制编码器。还可通过例如基于由一个或多个远程数据源或控制服务器供应的测量值或预处理升级向增强处理提供额外数据的固件来升级编码器以提供新功能性。此提供升级和控制传统硬件装置的灵活的方式。
残差模式选择
如上文例如关于图3A和3B所描述,特定实例可实施不同残差处理模式。举例来说,在图3A中,残差模式分级组件350控制层级1和层级2增强流中的每一个中的残差模式选择组件321、340;在图3B中,残差模式选择组件350控制层级1和层级2增强流中的每一个中的残差模式分级组件321、340。一般来说,编码器可包括选择和实施残差模式的残差模式控制组件,以及在一个或多个增强流上实施针对选定残差模式的处理的残差模式实施组件。
在一个实例中,一旦已经计算残差,则可处理所述残差以决定将如何编码和传输残差。如早先所描述,此处,通过将原始形式的图像信号与经重建形式的图像信号进行比较来计算残差。举例来说,在一种情况下,通过从原始形式的图像信号(例如,如各图中所指示的输入视频120、302)减去上取样的输出(例如,图1、3A和3B中)来确定层级2增强流的残差。到上取样的输入可被称为模拟解码之后信号的重建。在另一情况下,通过从经下取样形式的原始图像信号(例如,图1、3A和3B中的下取样组件104、304的输出)减去由基础解码器输出的图像流来确定层级1增强流的残差。
为了例如在选定残差模式中处理残差,可将残差分类。举例来说,残差可经分类以便选择残差模式。可例如基于输入图像的特定空间和/或时间特性来执行残差的分类过程。
在一个实例中,处理输入图像以针对每一要素(例如,像素或包含多个像素的区域)和/或要素群组确定所述要素和/或要素群组是否具有特定空间和/或时间特性。举例来说,对照一个或多个阈值测量要素以便确定如何对照相应空间和/或时间特性将所述要素分类。空间特性可包含特定要素或要素群组之间的空间活动水平(例如,相邻要素之间存在多少改变),或特定要素之间和/或要素群组之间的对比度(例如,要素的群组与一个或多个其它要素群组的差异程度)。空间特性可以是一组空间方向(例如,2D平面图像的水平和/或竖直方向)中的改变的量度。时间特性可包含特定要素和/或要素群组的时间活动(例如,要素和/或要素群组在一个或多个先前帧上的并置要素和/或要素群组之间的差异程度)。时间特性可以是时间方向(例如,沿着时间系列)中的改变的量度。可每要素和/或要素群组确定所述特性,此可为每像素和/或每2×2或4×4残余块。
分类可基于要素和/或要素群组的空间和/或时间特性使相应权重关联到每一要素和/或要素群组。权重可以是0和1之间的正规化值。
在一个残差模式中,可作出关于是否编码和传输给定残差集合的决策。举例来说,在一个残差模式中,特定残差(和/或残余块-例如本文中所描述的2×2或4×4块)可由如图3A和3B中所展示的RM L-x分级组件和/或RM L-x选择组件沿着层级1和/或层级2增强处理管线选择性地转发。换句话说,不同残差模式可具有图1中的层级1和/或层级2编码组件122、142中的不同残差处理。举例来说,在一个残差模式中,可不转发特定残差以供进一步层级1和/或层级2编码,例如特定残差可不进行变换、量化和熵编码。在一种情况下,可不通过将残差值设定为0和/或通过设定关于特定残差或包含所述残差的群组的特定控制旗标来转发所述残差。
在一个残差模式中,二进制权重0或1可例如由上文所论述的组件应用于残差。此可对应于其中选择性残差处理“接通”的模式。在此模式中,权重0可对应于“忽略”特定残差,例如不转发所述残差以供增强管线中的进一步处理。在另一残差模式中,可不存在加权(或所有残差的权重可设定为1);此可对应于其中选择性残差处理“断开”的模式。在又一残差模式中,正规化权重0到1可应用于残差或残差群组。此可指示用于在解码器处重建视频信号的重要性或“有用性”权重,例如其中1指示残差具有正常使用,且低于1的值降低残差的重要性。在其它情况下,正规化权重可处于另一范围中,例如范围0到2可给予具有大于1的权重的特定残差重要性。
在上文描述的残差模式中,残差和/或残差群组可乘以所指派权重,其中可在应用于相应要素和/或要素群组的集合的分类过程之后指派所述权重。举例来说,在一种情况下,每一要素或要素群组可被指派由选自预定义整数集合或范围的整数值表示的类(例如,从0到9的10个类)。每一类可因而具有相应权重值(例如,0用于类0,0.1用于类1,或某一其它非线性映射)。类和权重值之间的关系可通过分析和/或实验确定,例如基于解码器处和/或编码器内的图片质量测量值来确定。权重可接着用于乘以相应残差和/或残差群组,例如对应于要素和/或要素群组的残差和/或残差群组。在一种情况下,此对应性可以是空间的,例如基于特定输入要素值计算残差,且将分类应用于特定输入要素值以确定残差的权重。换句话说,可在输入图像的要素和/或要素群组上执行分类,其中输入图像可以是视频信号的帧,但接着使用从此分类确定的权重对协同定位的残差和/或残差群组而非要素和/或要素群组进行加权。以此方式,可作为与编码过程分离的过程执行表征,且因此其可与残差过程的编码并行地计算。
残差模式处理的实例
图15展示残差模式的实例。此实例涉及层级2流但可为层级1流提供一组类似组件。经由分类组件1502对输入图像要素的集合iij 1501进行分类以生成类指示的集合1503(例如,在0到4范围内)。类指示1503接着由权重映射组件1504使用以检索与类指示1503相关联的权重的集合1505。并行地,从输入图像要素iij 1501减去经重建的上取样要素的集合uij 1506以生成初始残差集合rij 1508。接着将这些残差1508和权重集合1505输入到权重乘法组件1509,所述权重乘法组件将残差1508乘以权重集合1505以输出经修改残差的集合r′ij 1510。图15展示残差模式选择可涉及对残差值的子集1512进行滤波(例如,将其乘以0权重)且通过或修改另一残差值的子集1511(例如,其中存在非零权重)。
在某些情况下,表征可在远离编码器的位置处执行且传送到编码器。举例来说,预录制的电影或电视节目可经处理一次以确定残差或残差群组的集合的权重的集合。这些权重可经由网络传送到编码器,例如它们可包括参考图14A到14C描述的残差掩码。
在一种情况下,作为为残差加权的替代或补充,可对照从分类过程导出的一个或多个阈值比较所述残差。举例来说,分类过程可确定具有相关联权重和阈值的集合或仅相关联阈值集合的类的集合。在此情况下,将残差与所确定的阈值进行比较,且丢弃且不编码降到特定一个或多个阈值以下的残差。举例来说,额外阈值处理可应用于来自图15的经修改残差1510,和/或权重映射和权重乘法组件可用阈值映射和阈值应用级替代。一般来说,在两种情况下,基于分类过程修改残差以供进一步处理,其中分类过程可应用于相应图像要素。
上文所描述的残差模式处理的方法可应用于编码器处,但不应用于解码器处。因此,此表示一种形式的不对称编码,其可考虑编码器处的增加的资源来改进通信。举例来说,残差可经加权以减小编码器和解码器之间传输的数据的大小,从而允许针对受限位速率的质量提高(例如,其中被丢弃的残差具有解码器处减小的检测能力)。
预测平均值
如本文所描述,残差要素可限定为输入帧要素和相应/协同定位的经上取样要素之间的差,如下文指示:
rij=iij-uij
在编码器处,残差经变换,然后被量化、熵编码和传输到解码器。确切地说,编码器使用两个可能的变换,第一个称为定向分解(DD),另一个称为定向分解平方(DDS)。关于这些变换的更多细节也包含在以引用的方式并入本文中的专利申请PCT/EP2013/059847和PCT/GB2017/052632中。
图16A展示涉及编码器处的DD变换的过程1600。在DD的情况下,变换应用于输入数据1610的帧或平面的每一2×2块。参考图16A,呈现输入值1612的四个2×2块1611。这些由下取样过程1615(例如,类似于图1和3A/B的下取样组件104、304)下取样以生成具有要素值1621的经下取样的帧或平面1620。经下取样的帧1620接着由上取样过程1625(例如,如经由图1和3A/3B中的组件134、334展示)上取样。此产生经上取样帧1630,其还具有上取样值1632的块1631,其中,在图16A中,对一个下取样值1622进行上取样以生成四个上取样值1632(即,一个上取样块1631)。在图16A中,从输入帧1610减去1635上取样帧1630以生成包括残差值1642的块1641的残差帧1640。
在变换中,针对每一残差块1641计算以下系数(为简单起见,以下表达式涉及最左上2×2块,但可针对其它块容易地导出类似的表达式):
现观察平均分量(A0),此可分解如下:
应注意,从相应较低分辨率要素1622开始从上取样操作获得如图16A中所展示具有上取样值1632的每一上取样2×2块1631。此较低分辨率要素1622可被称为“控制要素”。在最左上块的情况下,所述要素将为d00。
相应地,d00可经添加和删除如下以获得:
其可接着分组如下:
而δA0(差量平均值)展示为1650对应于(例如,块1611的)输入图像中的要素的平均值和控制要素1622之间的差1645。预测平均值PA0对应于上取样要素的平均值和控制要素之间的差。此可在解码器处计算。
图16B陈述解码器处的相应过程1655。来自编码器1656的数据传送δA值1658。并行地,层级1分辨率帧1660经重建和上取样1665以形成上取样帧1666。图16B展示四个较低分辨率要素1662的块1661。这些要素对应于经重建视频信号。上取样帧1666展示为具有四个上取样要素1669的四个块1668。解码器能够使用上取样要素1668和通过解码较低分辨率帧(例如,通过解码以例如AVC、HEVC等单独的编解码器编码的基础而获得的帧)获得的控制要素1662来计算PA。在图16B中,预测平均值1671确定为上取样要素1668的块的平均值与控制要素1662的差1670。可接着通过将δA值1658与预测平均值PA 1671求和1672来重建原始平均值1675。这也是为何此要素称为“预测平均值”,因为其是可在解码器处预测的平均值的分量。解码器因而将仅需要由编码器提供的δA,因为在编码器处已知关于输入图像帧的信息。
相应地,当使用DD变换类型时,解码器能够使用一个或多个上取样要素和来自较低分辨率图像的相应要素(“控制要素”)计算预测平均值,所述相应要素用于生成所述一个或多个上取样要素。接着,其能够解码从编码器接收的值,所述值表示参考(例如,输入)图像中的一个或多个要素与受控要素之间的差。其接着能够将所述预测平均值与经解码值组合以生成经变换系数中的一个,即平均系数。
当使用DD变换类型时,编码器能够计算待传输到解码器的值,所述值表示参考(例如,输入)图像中的一个或多个要素与来自较低分辨率图像的相应要素(“控制要素”)之间的差。编码器能够通过复制编码器为了重建图像将需要执行的操作来生成控制要素。确切地说,控制要素对应于解码器为了生成所述一个或多个上取样要素将使用的要素。编码器接着能够进一步将H、V和D系数传输到解码器。
在DDS变换的情况下,所述操作经稍微修改。残差的4×4块上的DDS操作生成16个经变换系数。DDS可以至少两个方式实施。直接地,通过对4×4块中的16个残差进行求和及减法-见以下:
或者,且以更高效的方式,其可被实施为“两步”变换,首先对2×2残差块执行DD变换以生成DD系数的2×2块,且接着对此应用第二DD变换。
第一步骤:
第二步骤:
如可见,在DDS情况中,存在四个“平均”系数,针对每一方向一个:(1)AA,或平均系数的平均值;(2)AH,或水平系数的平均值;(3)AV,或竖直系数的平均值;以及(4)AD,或对角系数的平均值。
类似于DD变换,这些平均系数中的每一个可分解为差量平均值(待由编码器计算且在解码器处解码)和预测平均值(待由解码器计算),如下:
AA=δAA+PAA
AH=δAH+PAH
AV=8AV+PAV
AD=8AD+PAD
相应地,存在待由编码器计算的四个差量平均值,即δAA、δAH、δAV和δAD。
使用如上文所限定的两步方法,四个差量平均值可计算如下:
另一方面,各个预测平均值可计算如下:
其中
计算预测平均值的替代方式是首先计算每一2×2块的预测平均值且接着对其执行定向分解。
换句话说,第一步骤是计算:
且接着
相应地,当使用DDS变换时,编码器可生成各个差量平均值δAA、δAH、δAV和δAD,且将其连同其它DDS系数HA、HH、HV、HD、VA、VH、VV、VD、DA、DH、DV、DD一起发送到解码器。
在解码器处,解码器可计算PAA、PAH、PAV和PAD,如上文所说明。此外,在当前实例中,其接收差量平均值,对其解码且接着可将它们与预测平均值求和以便获得平均值AA、AH、AV和AD。平均值接着与其它DDS系数组合,应用逆DDS,且接着从逆变换获得残差。
或者,因为变换和逆变换为线性操作,所以可对差量平均值δAA、δAH、δAV和δAD以及其它DDS系数HA、HH、HV、HD、VA、VH、VV、VD、DA、DH、DV、DD进行逆DDS以获得残差,且PAijs可在变换后相加到相应2×2块中的残差以获得最终残差值。
图16C和16D分别展示对应于图16A和16B的编码过程1680和解码过程1690,但其中变换为一维的,例如其中在一个方向上而非两个方向上执行下取样和上取样。举例来说,这可以是可用于交错信号的仅水平缩放模式的情况。此可通过所指示要素1681看到,其中块1683中的两个要素1682经下取样以生成要素1684。接着使用输入数据要素1681和下取样(“控制”)要素来生成差量平均值(δA)1685。相应地,在解码过程1690处,将上取样要素的两个要素块1691与下取样要素1662进行比较以确定预测平均值1671。
DDS内的信令
在某些实施方案中,位或字节流信令可用于指示来自DDS变换的系数中的一个或多个是否用于内部信令(例如,相对于携载经变换系数值)。
举例来说,在一种情况下,信令位可设定为值0以指示不使用内部信令(例如,预定义系数值携载编码单元的经变换残差值),且可设定为值1以指示使用内部信令(例如,任何现有经变换残差值被携载信息到解码器的信令值代替)。在后一种情况下,当对经变换残差进行逆变换时可忽略系数的值,例如系数的值可假定为0,而与用于其中的信令的值无关。
在一种情况下,DDS变换的HH系数可适于在信令位被设定为1的情况下携载信令。可选择此系数,因为其值已确定为对编码块的经解码残差值具有最小影响。
内部系数信令中携载的值可用于多种目的。如果解码器被配置成接收且作用于所述信息,则所述信息可在解码器处使用(例如,任凭解码器处置)。
在一种情况下,系数内信令可指示与将在较宽编码单元(例如,与信令系数相关联的编码单元)上执行的后处理相关联的信息。在一种情况下,系数内信令可指示与当经解码编码单元在层级1和层级2增强操作中的一个或多个中应用时可能存在的潜在假影或损害相关联的信息。举例来说,系数内信令可指示与编码单元相关联的经解码残差数据(和/或经重建视频帧的一部分)可经受条带化、成块效应等。一个或多个后处理算法可接着使用嵌入于系数数据内的此信息来选择性地应用一个或多个后处理操作以解决损害且改进经重建视频。
经预测残差
如上文所描述,特定实例可使用用以预测由变换级生成的系数的方法。在一种情况下,可使用“预测平均值”计算预测平均分量(A)。预测平均值计算使得能够传输差量平均值,而非完全平均值。这可节省显著数据量(例如,降低所需位速率),因为其减小待编码的平均分量的熵(例如,常常此差量平均值可较小或为零)。
举例来说,当解码层级2增强流时,层级1分辨率下的一个像元可输入到上取样操作,在该处,其用于在经上取样或层级2分辨率下创建四个像元。作为重建的一部分,四个像元的经上取样编码单元的预测平均值的值可相加到四个像元的上取样值。
在一种情况下,可应用上述预测平均值计算的变型。
在此变型中,可修改上取样之后预测平均值的加法。可由线性或非线性函数修改所述加法,所述线性或非线性函数用以将不同比例的预测平均值添加到经上取样编码块内的不同位置。
举例来说,在一种情况下,来自一个或多个相邻编码块的信息可用于针对不同像元以不同方式对预测平均值加权。在此情况下,与较低值像元相邻的像元可接收较少预测平均值,且与较高值像元相邻的像元可接收较多预测平均值。因此可基于像元的相邻像元的相对值为所述像元设定预测平均值的加权。
此可在边缘存在于编码块内时提供改进。在其中边缘存在于经上取样编码块中的情况下,可能有利的是,根据边缘位置对预测平均值加权。举例来说,如果边缘为竖直的,则编码单元的一个列内的像元可相比于编码单元的其它列与更高或更低值组合,其中准确的加权取决于边缘的梯度。不同角度的边缘可具有预测平均值的更复杂的加权。对预测平均值加法的此形式的校正可被称为添加某一形式的“倾斜”。其可形成经预测残差计算的一部分。在这些情况下,每一像元可接收不同值以供组合,这与共同单个预测平均值形成对比。
经修改变换
在某些实例中,变换过程(例如,如由图3A和3B中的变换组件322或341所应用)可经修改以便减小编码特定质量水平(例如,LoQ1或L-1)所需的位速率和/或减小当以相同输出位速率量化经变换残差(也被称为“系数”)时使用的量化步宽。
在一个实例中,可决定仅保持平均经变换系数(例如,A用于定向分解变换(例如,2×2),AA、AH、AV、AD用于DDS变换,例如4×4),且仅将那些平均经变换系数发送到量化器和熵编码器。在另一实例中,特别适用于定向分解平方(4×4)变换,可决定仅保持平均系数的平均值,即AA。在另一实施例中,保持所有系数。在某些情况下,可以差分方式对不同系数加权,例如x乘y编码单元或块内的每一系数位置可具有不同权重。可使用任何组合。
举例来说,在某些情况下,上文描述的残差处理可在变换级之后应用,这与变换级之前形成对比。在这些情况下,可作为输入残差的替代或补充为变换的结果(在本文中被称作系数)加权。举例来说,保持特定系数可等效于用1为那些系数加权以及用0为其它系数加权。
在一个实例中,关于转发什么系数以供进一步处理的决策可在变换残差之前作出。换句话说,代替于执行变换且接着丢弃未被选定用于量化和传输的系数,仅计算待量化、熵编码和传输的系数,因此节省额外计算。举例来说,代替于为变换的输出加权,可选择性地执行特定变换操作,例如可仅执行平均值变换(A或Ax)。此可对应于仅乘以变换矩阵行的子集,例如仅将残差乘以表示变换矩阵的第一行的向量以确定平均(A)系数(例如,对于具有4×4变换矩阵的2×2案例)。
上述选择中的每一个可与相应变换模式相关联。
所述选择通常基于与待用于相应增强层级(例如,层级1或层级2)的位速率相关联的相应决策,和/或待用于特定增强层级的相应量化步宽,但其还可使用上文所论述的残差模式分类作为输入。在一种情况下,待用于相应增强层级的位速率可基于经由网络接收的数据确定,如参考图14A到14C所描述。
速率控制和量化
在某些实施方案中,可控制量化操作以控制经编码流中的一个或多个的位速率。举例来说,图3A和3B中的量化组件323和/或343的量化参数可设定为提供经编码视频流中的一个或多个中的所要位速率(不论针对所有流的共同位速率以便生成共同经编码流,还是针对不同经编码流的不同位速率)。
在某些情况下,可基于基础编码和增强流编码中的一个或多个的分析设定量化参数。量化参数可经挑选以在一组预定义位速率约束内提供所要质量水平,或使质量水平最大化。多个机制可用于控制原始视频中的变型。
图17A展示实例编码器1700的示意图。编码器1700可以是图1、3A和3B中展示的编码器中的一个,其中为了清晰起见省略某些组件。编码器1700具有两个增强层级编码组件1700-1和1700-2。这些可对应于图1中的组件122和142。除图1、3A和3B的实例外,图17A的编码器1700还包括速率控制器1710。速率控制器1710可控制增强层级编码组件1700-1和1700-2中的一个或多个的编码速率。速率控制器1710可进一步接收来自基础编解码器1730的信息,所述基础编解码器可对应于基础编码器112和基础解码器114。实例编码器1700还包括缓冲器1740。不同于时间缓冲器,此为例如在传输和/或存储之前接收经编码流的缓冲器。速率控制器1710可包括如由处理器和/或专用电子电路系统执行的软件例程(例如,以比如C或C++等快速低级语言)。缓冲器1740可包括软件限定缓冲器(例如,存储器资源的预留区段)和/或专用硬件缓冲器。图17A的速率控制器1710接收来自基础处理层(例如,至少基础编解码器1730的基础编码器)和缓冲器1740的数据。缓冲器1740用于存储和/或组合至少经编码基础流(BS)和经编码增强流(L1S和/或L2S)。
图17A展示缓冲器1740相对于经编码基础流和经编码L-1流的使用;图17B展示另一实例,其中缓冲器1740接收经编码基础流以及经编码层级1和层级2增强流两者。在图17A的实例中,速率控制器1710通过供应量化参数的集合来控制层级1编码层内的量化1720。在图17B的实例中,速率控制器1710通过将量化参数供应到相应量化组件(例如,1720-1和1720-2,其可对应于量化组件323和343)来控制两个增强编码层内的量化1720。在又一情况中,缓冲器1740可被配置成接收经编码基础流和经编码层级2流。
在图17A和17B的实例中,缓冲器1740被配置成以可变位速率接收输入,同时以恒定速率读取输出。在各图中,输出展示为混合视频流(HVS)。速率控制器1710从缓冲器1740读取状态以确保其不上溢或变空,且数据始终可供在其输出处读取。
图18和19展示速率控制器(例如,速率控制器1710)的两个可能实施方案。这些实施方案使用缓冲器的状态来生成当前帧t的量化参数集合Qt。量化参数可被供应到如图3A、3B中所展示的层级1和层级2编码管线中的一个或多个中的量化组件323、343。在一种情况下,图18或图19的架构可针对层级1和层级2编码管线中的每一个复制,使得针对每一管线生成不同量化参数。
图18展示第一实例速率控制器1800,其包括Q(即,量化)估计组件1820,所述Q估计组件从缓冲器接收信号1840且在给定时间t计算量化参数的集合,即Qt。图19展示第二实例速率控制器1900,其也包括Q(即,量化)估计组件1920,所述Q估计组件从缓冲器接收信号1940且在给定时间t计算量化参数的集合,即Q′t。第二实例速率控制器1900还包括目标大小估计组件1910、用以存储下一帧的量化参数集合的Q缓冲器1930、编码组件1940和Q封端组件1950。目标大小估计组件1910从基础层接收数据1942,且编码组件1940接收输入1944。
速率控制器1800、1900的一般操作可如下。基于缓冲器(例如,缓冲器1740)内的数据量控制量化参数Qt。在图18和19两者中,经由“来自缓冲器”信号1840、1940接收缓冲器内的数据量的指示(即,缓冲器有多“满”)。此接着由Q估计组件1820、1920直接或间接使用以估计用作量化组件(例如,323和/或343)操作参数的量化参数的集合。
在一种情况下,量化参数值与缓冲器中的数据量逆相关。举例来说,如果在接收到新帧的时刻,缓冲器内存在大量数据,则速率控制器1800设定Q的低值以便减少被编码的残差数据的量,其中Q的低值对应于在给定残差值范围内产生较少量化块组或群组的较大量化步宽值。或者,如果缓冲器相对较空,则速率控制器1800被配置成设定Q的高值(即,低步宽值)以将较多残差数据编码到混合视频流中。
图19的实例使用额外组件来确定量化参数集合。在图19的实例中,速率控制器1900还使用基础编码器希望添加到其流的“填充”数据的量(例如,如经由“来自基础”信号1942接收)。在此情况下,编码器可用额外增强流数据替代基础编码器“填充”数据以使可用带宽最大化。在此情况下,如果存在高级填充,则速率控制器1900可能够设定较高Q值(例如,较低步宽值,使得许多残差数据接收在缓冲器内),因为此“填充”数据可在基础编码器流中被移除或替换(例如,在缓冲器之前或缓冲器处)。
在图19中,目标大小估计组件1910接收缓冲器的状态和关于基础编码器正计划添加到帧的“填充”数据的量的信息。保存在缓冲器内的数据量可由可正规化于0到1或0%到100%的范围内的“充满度”参数指示,其中60%指示缓冲器60%充满(即,具有40%的剩余空间)。在此情况下,可限定映射函数或查找表以从“充满度”块组映射到“目标大小”参数,其中目标大小是待由层级1和层级2增强层中的一个或多个编码的下一帧的目标大小。在一种情况下,映射函数或查找表可实施可基于实验设定的非线性映射。在一种情况下,目标大小估计还可基于配置参数设定,所述配置参数指示混合视频流的待由增强流填充的所要比例(例如,混合视频流的的剩余部分由基础流填充)。
在图19的实例中,由目标大小估计组件1910确定的目标大小传送到Q估计组件1920。在图19中,Q估计组件1920另外从Q缓冲器1930接收输入,所述Q缓冲器存储来自先前帧和增强编码管线中的至少一个的实施方案的Q值。在图19中,Q估计组件1920接收“目标大小”Qt-1(即,针对先前帧确定的量化参数集合),和以Qt-1编码的当前帧的大小(“当前大小”)。当前帧的大小由增强编码管线(例如,层级1和层级2组件)中的至少一个的实施方案供应。在某些情况下,增强编码管线中的至少一个的实施方案还可供应以Qt-1编码的一个或多个先前帧的大小。在一种情况下,“当前大小”信息可由增强编码管线中的至少一个的并行副本确定,例如将用量化参数Qt量化当前帧以供传输,但图19中的L-x编码组件1940接收Qt-1并基于这些量化参数通过执行不传输的编码来确定当前大小。在另一实例中,或者可例如基于预录制的视频的预处理从云配置接口接收当前大小。在此另一实例中,可不需要并行实施方案。
在图19中,Q估计组件1920取其输入(例如,如上文所描述),且计算初始所估计量化参数集合Q′t。在一种情况下,此可使用将数据大小(例如,如由目标或当前大小所表达)映射到量化参数的一组大小函数执行。数据大小和/或量化参数可例如正规化到0和1之间的值。量化参数可与量化步长相关联,例如其可以是与量化步长成反比的“质量因子”和/或可以是量化步长。
在图19的实例中,可限定曲线的集合以将正规化大小映射到量化参数上。每一曲线可具有乘数和偏移中的一个或多个,其可取决于当前帧的性质(例如,其可取决于待在帧内编码的信息的复杂性)。乘数和偏移可限定曲线的形状。乘数可应用于作为量化参数Q的函数的大小正规化函数。在一种情况下,当前大小(即,以Qt-1编码的帧t的大小)和Qt-1可用于限定曲线集合的空间内的点。此点可用于从曲线集合选择最接近曲线的集合。这些可以是所述点上方的曲线和所述点下方的曲线或者所述点的最高或最低曲线。最接近曲线的集合可连同所述点一起在内插函数中使用以确定与所述点相关联的新曲线。一旦确定此新曲线,就可确定用于新曲线的乘数和偏移。这些值可接着连同所接收目标大小一起用于确定Qt的值(例如,曲线可限定大小的函数和Q)。
在某些情况下,至少速率控制器的Q估计为自适应的,其中一个或多个先前帧的性质影响当前帧的Q估计。在一种情况下,曲线的集合可存储在可访问的存储器中且基于针对先前帧确定的曲线的集合而更新。在某些情况下,可针对编码单元或块内的不同系数位置,例如针对4或16个系数的阵列中的不同要素(针对2×2或4×4变换)以不同方式应用自适应量化。
最后,图19的实例表征Q封端组件1950,其接收从Q估计组件1920输出的所估计量化参数集合Q′且基于一个或多个因素校正此集合。所估计量化参数集合Q′t可包括一个或多个值。在一种情况下,可基于基础编码层的操作特性和量化参数Q的改变中的一个或多个校正初始量化参数集合Q′t。在一种情况下,可基于由基础编码层使用的可随来自此层的数据接收的量化参数的集合来对所估计量化参数集合Q′t封端。在一种情况下,在具有或不具有使用基础编码层数据的调适的情况下,可基于先前量化参数集合的值限制所估计量化参数集合Q′t。在此情况下,Q′t的最小值和最大值中的一个或多个可基于先前Q值(例如,Qt-1)设定。接着,封端的输出在图19中提供为Qt。
在一种情况下,量化参数集合包括Qt的一个值。在此情况下,由量化组件之一应用于帧t的步宽可基于Qt设定。用以确定步宽的函数还可基于最大步宽(例如,步宽可在0和10之间的范围内)。实例步宽计算为:
步宽=[(1-Q0.2)·(步宽max-1)]+1
量化特征
现将参考图20A到20D描述某些量化变型。
图20A提供可如何基于具有限定的步宽的块组执行残差和/或系数(经变换残差)的量化的实例2000。图20A的x轴2001表示残差或系数值。在此实例中,以步宽5(例如,由2003所示)限定若干块组2002。步宽2004的大小可例如基于参数值来选择。在某些情况下,可动态地例如基于上文描述的速率控制实例来设定步宽2004的大小。在图20A中,步宽2004产生对应于范围0-4、5-9、10-14、15-19(即,0到4,包含0和4两者)内的残差值的块组2002。块组宽度可被配置成视需要包含或排除端点。在此实例中,通过用整数值替换落到块组内的所有值来执行量化(例如,0和4之间(包含端点)的残差值具有量化值1)。在图20A中,通过除以步宽2004(例如,5),取结果的本底(即,对于正值,小于十进制的最接近的整数)且接着加一来执行量化(例如,3/5=0.6,floor(0.6)=0,0+1=1;或16/5=3.2,floor(3.2)=3,3+1=4)。可以类似方式处理负值,例如通过作用于绝对值,接着在计算之后转换为负值(例如,abs(-9)=9,9/5=1.8,floor(1.8)=1,1+1=2,2*-1=-2)。图20A展示线性量化的案例,其中所有块组具有共同步宽。应注意,可进行基于此方法的各种不同实施方案,举例来说,第一块组可具有量化值0而非1,或可包括值1到5(包含端点)。图20A仅为根据给定步宽的块组的量化的一个图示。
死区
图20B展示可如何实施所谓的“死区”(DZ)的实例2010。图20B中,将具有预定义范围2012内的值的残差或系数设定为0。在图20B中,预定义范围是如由范围限制2011和2013所示的值0周围的范围。图20B中,小于6且大于-6的值被设定为0,如由2014所示。死区可设定为固定范围(例如,-6到6)或可基于步宽来设定。在一种情况下,死区可设定为预定义多个步宽,例如设定为步宽值的线性函数。在图20B的实例中,死区设定为2.4*步宽。因此,在步宽5的情况下,死区从-6延伸到+6。在其它情况中,死区可设定为步宽值的非线性函数。
在一种情况下,死区基于动态步宽而设定,例如可以是自适应的。在此情况下,死区可随步宽改变而改变。举例来说,如果步宽更新为3而非5,则2.4*步宽的死区可从范围-6到+6改变为范围-3.6到3.6;或如果步宽更新为10,则死区可改变以从-12延伸到12。在一种情况下,步宽的乘数可介于2和4之间。在一种情况下,乘数还可为自适应的,例如基于例如可用位速率等操作条件。
具有死区可帮助减少待经由网络传输的数据量,例如帮助减小位速率。当使用死区时,有效地忽略落到死区内的残差或系数值。此方法还可帮助移除低电平的残差噪声。具有自适应而非恒定的死区意味着,当步宽减小时(例如,如果较多带宽可用)不会过度地对较小残差或系数值进行滤波,且如果步宽增加则位速率合适地减小。死区仅需要在编码器处执行,解码器针对落在死区内的任何残差或系数简单地接收量化值0。
块组折叠
图20C展示可如何应用称为块组折叠的方法的实例2020。在图20C的实例中,连同死区一起使用块组折叠,但在其它情况下,块组折叠可在无死区的情况下使用和/或与其它量化方法一起使用。图20C中,块组折叠用以将驻留在选定量化块组2021上方的所有残差或系数值放置到选定块组中。举例来说,此可视为一种形式的限幅。其对于正值经由限制2021和箭头2022展示,且对于负值经由限制2023和箭头2024展示。
图20C中,再次应用步宽5。还应用具有2.4*步宽的范围的死区2012,使得-6和6之间的值被设定为0。此还可视为沿循到较大第一量化块组(具有值0)中。接着针对正值和负值限定具有宽度5(如由2003所示)的两个量化块组2002。举例来说,具有量化值1的块组限定在6和11之间(例如,具有步宽5),且具有量化值2的块组限定在11和16之间。在此实例中,为了进行块组折叠,具有将通常落在第二块组(例如,其具有大于16的值)上方的块组中的值的所有残差或系数“折叠”2022到第二块组中,例如被限幅以具有量化值2。可通过将大于阈值的所有值设定为最大块组值(例如,2)来执行此操作。针对负值发生类似过程。此在图20C中由大箭头2022和2024示出。
块组折叠可以是编码器处的可选处理选项。其不需要在解码器处的解量化期间进行(例如,经“折叠”或“限幅”的值2经简单地解量化,如同其处于第二块组中那样)。可进行块组折叠以减少经由网络发送到解码器的位数目。块组折叠可基于网络条件和/或基础流处理来配置以便减小位速率。
量化偏移
图20D展示可如何在特定情况中使用量化偏移的实例2030。量化偏移可用于使量化块组的位置移位。图20D展示线2031,其指示沿着x轴残差或系数值范围的可能的现实世界计数。在此实例中,许多值接近零,其中随着从0移开,较高值的计数减少。如果计数值正规化,则所述线还可指示残差或系数值的概率分布。
图20D的左手侧条柱2032和右手侧上的虚线2033示出对量化建模的直方图。为便于说明,展示死区之后的第一到第三块组的计数值(对于正值和负值两者,使后者条带化以示出条柱)。举例来说,条柱2035展示经量化值1、2、3和-1、-2、-3的计数。归因于量化,由直方图建模的分布不同于由线所示的实际分布。举例来说,展示误差2037,其显示条柱不同于线的程度。
为了改变误差2037的性质,可应用量化偏移2036。对于正值,正量化偏移用以使每一块组向右移位,且负量化偏移用以使每一块组向左移位。在一种情况下,可基于第一阈值集合应用死区,例如小于(n*step_width)/2且大于(n*step_width*-1)/2的所有值被设定为0,且可基于第二阈值集合(例如来自上一实例)应用块组折叠,大于16或小于-16的所有值被设定为2。在此情况下,量化偏移不能使第一块组的开始或最后块组的结尾移位,因为这些基于前述较高和较低阈值设定,但可使这些阈值之间的块组的位置2034移位。实例量化偏移可为0.35。
在一种情况下,量化偏移2036可以是可配置的。在一种情况下,量化偏移可例如基于编码期间的条件动态地变化。在此情况下,量化偏移可传信到解码器以供在解量化中使用。
在一种情况下,在编码器处,可在基于步宽量化之前从残差或系数值减去量化偏移。因此,在解码器中,所传信偏移可在基于步宽解量化之前相加到所接收量化值。在某些情况下,可基于残差或系数的符号来调整偏移以允许关于0值的对称操作。在一种情况下,可通过将量化或解量化偏移值设定为0来停用偏移的使用。在一种情况下,可基于限定的死区宽度调整所应用的量化偏移。在一种情况下,可在解码器处例如依据从编码器接收的步宽和量化参数来计算死区宽度。
量化矩阵
在一种情况下,用于量化的步宽可针对2×2或4×4系数块内的不同系数变化。举例来说,较小步宽可指派到以实验方式确定为更大程度上影响经解码信号的感知的系数,例如在如上文所描述的4x4定向分解(DD-平方或“DDS”)中,可向AA、AH、AV和AD系数指派较小步宽,稍后的系数被指派较大步宽。在此情况下,可限定设定默认步宽的base_stepwidth参数,且接着可将修改符应用于此参数以计算modified_stepwidth以在量化(和解量化)中使用,例如modified_stepwidth=base_stepwidth*modifier,其中可基于块或单元内的特定系数设定modifier。
在某些情况下,modifier可另外或替代地取决于增强的层级。举例来说,对于层级1增强流来说,步宽可较小,因为其可影响较高质量水平下的多个经重建像素。
在某些情况下,可基于块内的系数和增强的层级两者限定修改符。在一种情况下,可针对不同系数和不同增强层级以修改符的集合限定量化矩阵。此量化矩阵可经预设(例如,在编码器和/或解码器处),在编码器和解码器之间传信,和/或在编码器和/或解码器处动态地构造。举例来说,在后一种情况下,可依据其它所存储和/或传信参数(例如,经由如先前描述的配置接口接收的参数)在编码器和/或解码器处构造量化矩阵。
在一种情况下,可限定不同量化模式。在一个模式中,共同量化矩阵可用于两个增强层级;在另一模式中,单独的矩阵可用于不同层级;在又一模式中,量化矩阵可用于仅一个增强层级,例如仅用于层级2。量化矩阵可由系数在块内的位置编索引(例如,对于2×2块,沿x方向0或1以及沿y方向0或1,或者对于4×4块,0到3)。
在一种情况下,可以值的集合限定基础量化矩阵。可由作为增强层级中的一个或多个的步宽的函数的缩放因子来修改此基础量化矩阵。在一种情况下,缩放因子可以是步宽变量的箝位函数。在解码器处,可针对层级1流和层级2流中的一个或多个从编码器接收步宽变量。在一种情况下,可使用缩放因子的指数函数缩放量化矩阵中的每一条目,例如每一条目可升高到缩放因子的幂。
在一种情况下,可针对层级1流和层级2流中的每一个使用不同量化矩阵(例如,当编码和解码关于这些层级的系数(经变换残差)时,使用不同量化矩阵)。在一种情况下,特定量化配置可设定为预定义默认值,且由此默认值产生的任何变型可在编码器和解码器之间传信。举例来说,如果默认将使用不同量化矩阵,则据此可不需要编码器和解码器之间的传信。然而,如果将使用共同量化矩阵,则此可经传信以超驰默认配置。具有默认配置可降低所需要的信令水平(因为默认配置可以不需要传信)。
平铺
如上文例如参考图12C所描述,在特定配置中,视频数据帧可划分成被称作“拼片”的二维部分。举例来说,640乘480视频数据帧可含有16像素乘16像素的1200个拼片(例如,40拼片乘30拼片)。因此,拼片可包括帧内的非重叠连续区域,其中每一区域具有二维中的每一个中的设定的大小。常见惯例是,拼片跨帧成行连续地延伸,例如一行拼片可跨帧的水平范围延伸,然后开始下方的一行拼片(所谓的“栅格”格式,但还可使用例如交错格式等其它惯例)。拼片可限定为特定编码单元集合,例如16乘16像素块可包括2×2编码单元的8乘8集合或4×4编码单元的4乘4集合。
在某些情况下,解码器可选择性地解码基础流、层级1增强流和层级2增强流中的一个或多个的部分。举例来说,可能需要仅解码与经重建视频帧中的关注区相关的数据。在此情况下,解码器可接收基础流、层级1增强流和层级2增强流中的一个或多个的完整数据集,但可仅解码流内的可用以渲染经重建视频帧中的关注区的数据。此可视为一种形式的部分解码。
以此方式进行的部分解码可提供若干不同方面的优点。
当实施虚拟或扩增现实应用时,任何一次仅可检视宽视场的一部分。在此情况下,仅可以高质量水平重建与检视区域相关的小关注区,其中视场的剩余区域以低(即,较低)质量水平渲染。关于此方法的另外细节可查阅以引用的方式并入本文中的专利公开案WO2018/015764 A1。类似方法可在传送关于计算机游戏的视频数据时有用。
部分解码还可为其中资源受限的移动和/或嵌入式装置提供优点。举例来说,基础流可经快速解码且呈现给用户。用户可接着选择此基础流的一部分来更详细地渲染。在选择关注区之后,层级1和层级2增强流中的一个或两者内的与关注区相关的数据可经解码且用于以高细节度渲染特定有限区域。类似方法还可对于对象辨识是有利的,借此对象可位于基础流中,且此位置可形成关注区。层级1和层级2增强流中的一个或两者内的与关注区相关的数据可接着经解码以进一步处理与对象相关的视频数据。
在当前实例中,部分解码可基于拼片。举例来说,关注区可限定为经重建视频流的帧内的一个或多个拼片的集合,例如高质量水平或全分辨率下的经重建视频流。经重建视频流中的拼片可对应于输入视频流的帧中的等效拼片。因此,覆盖小于完整视频帧的区域的拼片的集合可经解码。
在本文中所描述的特定配置中,形成至少层级1增强流和层级2增强流的部分的经编码数据可由游程长度编码及接着霍夫曼编码产生。在此经编码数据流中,如果不首先解码与经重建视频帧的特定部分相关的数据,则可能不可能辨别所述数据(例如,直至获得组织到编码单元中的至少经量化的经变换系数)。
在上述配置中,本文中所描述的实例的特定变型可包含层级1增强流和层级2增强流中的一个或多个的经编码数据内的信令的集合,使得与特定拼片相关的经编码数据可在解码之前识别。此因而可允许上文所论述的部分解码。
举例来说,在某些实例中,图10A到10I中的一个或多个中示出的编码方案可适于包含识别帧内的特定拼片的标头数据。识别符可包括16位整数,其识别规则拼片网格内的特定拼片数目(例如图12C中展示)。举例来说,在与输入视频帧的特定拼片相关的经编码数据的传输开始时,拼片的识别符可添加到经编码数据的标头字段。在解码器处,识别符之后的所有数据可被认为涉及所识别拼片,直至在经编码流内检测到新标头字段或检测到帧转变标头字段的时间。在此情况下,编码器传信层级1增强流和层级2增强流中的一个或多个内的拼片识别信息,且此信息可在流内接收且在不解码流的情况下提取。因此,在其中解码器将解码与所限定关注区相关的一个或多个拼片的情况下,解码器可仅解码增强流中的一个或多个的涉及那些拼片的部分。
在经编码增强流内使用拼片识别符允许例如由霍夫曼和游程长度编码的组合输出的可变长度数据,同时仍使得能够在解码之前确定涉及经重建视频帧的特定区域的数据。因此,拼片识别符可用于识别所接收位流的不同部分。
在当前实例中,与拼片相关的增强数据(例如,呈经变换系数和/或经解码残差数据的形式)可独立于与增强流内的其它拼片相关的增强数据。举例来说,可针对给定拼片获得残差数据,而不需要与其它拼片相关的数据。以此方式,当前实例可不同于例如与HEVC和AVC标准(例如,SVC和SHVC)相关联的对比的可缩放视频编码方案,所述对比的可缩放视频编码方案需要其它图片内或图片间数据来解码与经重建图片的特定区域或宏块相关的数据。这使得能够使用并行处理有效地实施当前实例-可并行地重建经重建帧的不同拼片和/或编码单元。这可极大地加速其中多个CPU或GPU核心可供使用的现代计算硬件上的解码和重建。
字节流内的拼片
图21A展示增强流的位或字节流结构的另一实例2100。图21A可视为类似于图9A的另一实例。图21A的顶部展示单个视频数据帧的实例字节流2110的组件2112到2118。视频流因而将包括每一视频帧的多个此类结构。单个帧的字节流包括标头2112,和与三个平面中的每一个相关的数据。在此实例中,这些平面为帧的颜色分量,即Y、U和V分量2114、2216和2218。
在图21A的第二层级中,展示给定颜色平面2115的字节流的一般结构。在此情况下,展示Y平面的子部分。其它平面可具有类似结构。在图21A中,每一平面包括与两个增强层级中的每一个相关的数据2120:第一质量水平(层级或LoQ1)2122和第二质量水平(层级或LoQ2)2124。如上文所论述,这些可包括层级1增强流和层级2增强流的数据。
在图21A的第三层级中,每一增强层级2125进一步数据2130,其包括与多个层相关的字节流部分2132。图21A中,展示N层。此处,每一层可涉及经编码系数的不同“平面”,例如变换、量化和熵编码之后的残差数据。如果使用2×2编码单元,则可存在四个此类层(例如,定向分解-DD的每一方向)。如果使用4×4编码单元,则可存在十六个此类层(例如,定向分解平方-DDS的每一方向)。在一种情况下,每一层可独立于其它层解码;如此,每一层可形成可独立解码单元-IDU。如果使用时间模式,则还可存在与时间信息相关的一个或多个层。
当例如针对部分解码使用平铺配置时,每一层的数据2140可额外分解2135为与多个拼片相关的部分2142。这些拼片可对应于原始输入视频的矩形区域。拼片大小可对于每一图片群组(GOP)为固定的。拼片可以栅格次序排序。图6B和12C展示拼片结构的实例。
图21A展示实例,借此每一层进一步包括与M个拼片相关的字节流的部分2142。每一拼片因此形成IDU且可独立于其它拼片解码。此独立性因而实现可选或部分解码。图21B展示替代性实例2150,其中每一质量水平2120或字节流2110首先分解为与M个拼片相关的部分2140,借此每一拼片部分接着分解为与每一层2130相关的部分。可使用任一方法。
在实例中,每一IDU可包括标头信息,例如isAlive字段(例如,指示使用或非零数据)、StreamLength(指示流部分的数据大小)和携载IDU的经编码数据的有效负载中的一个或多个。使用特定拼片是否含有数据(例如,isAlive=1)的指示可帮助减少待传输的数据,因为常常特定拼片可能归因于残差数据的使用而为0,且因此待传输的额外拼片数据可最小化。
当使用平铺时,例如图片群组(GOP)的标头可被修改为包含平铺模式旗标。在此情况下,第一旗标值(例如,0)可表示不支持部分解码的“空区”模式,且第二旗标值(例如,1)可表示支持部分解码的“拼片”模式。第二旗标值可指示正使用特定固定大小拼片模式,借此平面(例如,YUV平面中的一个)划分成大小TW x TH的固定大小矩形区(拼片),且拼片以栅格次序编索引。在其它情况下,不同旗标值可指示不同平铺模式,例如一个模式可指示连同标头信息一起传输的自定义拼片大小。
在一种情况下,拼片大小可在标头信息中传信。拼片大小可显式地传信(例如,通过发送像素中的拼片宽度TW和像素中的拼片高度TH)。在一种情况下,可通过发送用于存储于解码器处的查找表的索引来传信拼片大小。因此可使用指示多达255个拼片大小中的一个的一个字节来传信拼片大小。一个索引值还可指示自定义大小(例如,待另外在标头中传信)。拼片大小如果在标头信息中显式地传信,则可使用4个字节(每宽度/高度两个字节)传送。
如果传信平铺模式,则可存在在标头信息中传信的一个或多个拼片特定的配置。在一种情况下,可传信(例如,使用1位旗标)数据聚合模式。值1可指示例如上文描述的isAlive/StreamLength/Payload部分等字节流内的拼片数据段将被分组或聚合(例如,数据流首先含有拼片集合的isAlive标头信息,接着是拼片集合的StreamLength信息,然后是拼片集合的有效负载信息)。以此方式组织字节流可促进拼片的选择性解码,例如因为可在有效负载数据之前接收每一拼片的流长度信息。在此情况下,还可任选地使用游程长度和霍夫曼编码(例如,如本文所描述)压缩聚合的数据,且还可对此进行标记(例如,使用1位字段)。聚合数据流的不同部分可具有不同压缩设定。如果例如流长度字段等信息经霍夫曼编码,则这些可编码为绝对值或相对值(例如,作为相对于上一流值的差)。相对值编码可进一步减小字节流大小。
在这些实例中,描述一种编码增强流的方法,借此增强位流可拆分成表示视频帧的不同空间部分(即,拼片)的部分或组块。与每一拼片相关的数据可独立地接收和解码,从而允许并行处理和选择性或部分解码。
神经网络上取样
在某些实例中,可通过使用人工神经网络来增强上取样。举例来说,卷积神经网络可用作上取样操作的一部分来预测经上取样像素或信号要素值。使用人工神经网络来增强上取样操作在以引用的方式并入本文中的WO 2019/111011 A1中描述。神经网络上取样器可用于实施本文中的实例中描述的上取样组件中的任一个。
图22A展示神经网络上取样器2210的第一实例2200。神经网络上取样器可用于在第一层级(n-1)处的信号数据和第二层级n处的信号数据之间转换。在当前实例的上下文中,神经网络上取样器可在增强层级1(即,质量水平-LoQ-1)下处理的数据和增强层级2(即,质量水平-LoQ-2)下处理的数据之间转换。在一种情况下,第一层级(n-1)可具有第一分辨率(例如,size_1乘size_2要素),且第二层级n可具有第二分辨率(例如,size_3乘size_4要素)。第二分辨率下每一维度内要素的数目可以是第一分辨率下每一维度内要素的数目的倍数(例如,size_3=F1*size_1且size_4=F2*size_2)。在所描述的实例中,所述倍数可在两个维度中相同(例如,F1=F2=F,且在一些实例中,F=2)。
在某些实例中,人工神经网络的使用可包含将要素数据(例如,像元,比如颜色平面的值)从一个数据格式转换到另一数据格式。举例来说,要素数据(例如,在非神经案例中,作为到上取样器的输入)可呈8或16位整数的形式,而神经网络可基于浮动数据值(例如,32或64位浮点值)操作。要素数据可因此在上取样之前从整数转换为浮动格式,和/或在神经增强上取样之后从浮动格式转换为整数格式。此在图22B中示出。
在图22B中,到神经网络上取样器2210(例如,来自图22A的上取样器)的输入首先由第一转换组件2222处理。第一转换组件2222可将输入数据从整数格式转换为浮点格式。浮点数据接着输入到神经网络上取样器2210,所述神经网络上取样器自由地执行浮点操作。来自神经网络上取样器2210的输出包括呈浮点格式的数据。在图22B中,此接着由第二转换组件2224处理,所述第二转换组件将数据从浮点格式转换为整数格式。整数格式可以是与原始输入数据相同的整数格式或不同整数格式(例如,输入数据可提供为8位整数,但输出提供为10、12或16位整数)。第二转换组件2224的输出可将输出数据置于适于上部增强层级操作(例如,本文中所描述的层级2增强)的格式。
在某些实例中,作为数据格式转换的替代或补充,第一和/或第二转换组件2222和2224还可提供数据缩放。数据缩放可将输入数据置于更好地适于人工神经网络架构的应用的形式。举例来说,数据缩放可包括正规化操作。实例正规化操作在下文陈述:
norm_value=(input_value-min_int_value)/(max_int_value-min_int_value)
其中input_value为输入值,min_int_value为最小整数值,且max_int_value为最大整数值。可通过乘以缩放除数(即,除以缩放因子)和/或减去缩放偏移来应用额外缩放。第一转换组件2222可提供正数据缩放,且第二转换组件2224可应用相应逆操作(例如,逆正规化)。第二转换组件2224还可对值进行舍入以生成整数表示。
图22C展示用于简单的神经网络上取样器2210的实例架构2230。神经网络上取样器2210包括通过非线性2234分隔的两层2232、2236。还存在任选的后处理操作2238。通过简化神经网络架构,可增强上取样,同时仍允许实时视频解码。
卷积层2232、2236可包括二维卷积。卷积层可应用具有预定义大小的一个或多个滤波内核。在一种情况下,滤波内核可为3×3或4×4。卷积层可应用以权重值的集合限定的滤波内核,且还可应用偏置。偏置具有与卷积层的输出相同的维度。在图22C的实例中,两个卷积层2232、2236可共享共同结构或功能但具有不同参数(例如,不同滤波内核权重值和不同偏置值)。每一卷积层可在不同维度下操作。每一卷积层的参数可限定为具有大小-(kernel_size1、kernel_size2、input_size、output_size)的四维张量。每一卷积层的输入可包括大小-(input_size_1、input_size_2、input_size)的三维张量。每一卷积层的输出可包括大小-(input_size_1、input_size_2、output_size)的三维张量。第一卷积层2232可具有input_size为1,即,使得其接收类似于如本文所描述的非神经上取样器的二维输入。这些大小的实例值如下:kernel_size1和kernel_size2=3;对于第一卷积层2232,input_size=1且output_size=16;以及对于第二卷积层2236,input_size=16且output_size=4。可取决于实施方案和经验性能使用其它值。在输出大小为4(即,针对每一输入要素输出四个信道)的情况下,此可重构为表示给定像元的上取样输出的2×2块。
到第一卷积层2232的输入可以是二维阵列,类似于本文中所描述的其它上取样器实施方案。举例来说,神经网络上取样器2210可接收经重建帧的部分和/或完整的经重建帧(例如,基础层加上层级1增强的经解码输出)。神经网络上取样器2210的输出可包括较高分辨率下的经重建帧的一部分和/或完整的经重建帧,例如按照本文中所描述的其它上取样器实施方案。神经网络上取样器2210可因此用作模块化组件,与本文中所描述的其它可用上取样方法一样。在一种情况下,例如解码器处神经网络上取样器的选择可在所传输字节流内传信,例如在全局标头信息中传信。
非线性层2234可包括任何已知非线性,例如双弯曲函数、双曲正切函数、修正线性单元(ReLU)或指数线性单元(ELU)。还可使用常见函数的变型,例如所谓的漏ReLU或缩放ELU。在一个实例中,非线性层2234包括漏ReLU-在此情况下,层的输出等于针对大于0(或等于0)的输入值的输入,且等于针对小于0的输入值的预定义比例的输入,例如a*输入。在一种情况下,a可设定为0.2。
图22D展示具有来自图22C的任选后处理操作2238的一个实施方案的实例2240。在此情况下,后处理操作可包括逆变换操作2242。在此情况下,第二卷积层2236可输出大小(size1、size2、number_of_coefficients)的张量,即,与输入相同大小但具有表示定向分解内的每一方向的信道。逆变换操作2242可类似于层级1增强层中执行的逆变换操作。在此情况下,第二卷积层2236可被视为输出经上取样编码单元的系数估计值(例如,对于2×2编码块,4信道输出表示A、H、V和D系数)。逆变换步骤接着将多信道输出转换为二维像元集合,例如每一输入像元的[A、H、V、D]向量转换为层级n中的2×2像元块。
可针对下取样提供类似调适。可在解码器处重复编码器处应用的上取样方法。可基于可用的处理资源提供不同拓扑。
在上述实例中卷积层的参数可基于层级(n-1)和层级n数据对来训练。举例来说,训练期间的输入可包括由通过应用编码器和解码器路径中的一个或多个产生的第一分辨率下的经重构视频数据,而用于训练的地面实况输出可包括来自原始信号的实际相应内容(例如,较高或第二分辨率视频数据,而非经上取样视频数据)。因此,神经网络上取样器经训练以在给定较低分辨率表示的情况下尽可能接近地预测输入层级n视频数据(例如,输入视频增强层级2)。如果神经网络上取样器能够生成比对比的上取样器更接近输入视频的输出,则此将具有减小层级2残差的益处,这将进一步减少需要针对经编码层级2增强流传输的位数目。可离线基于多种测试介质内容执行训练。由训练产生的参数可接着在线上预测模式中使用。这些参数可针对图片群组和/或在空中或线路更新期间作为经编码字节流的一部分(例如,在标头信息)内传送到解码器。在一种情况下,不同视频类型可具有不同参数集合(例如,电影相对于实况体育运动)。在一种情况下,不同参数可用于视频的不同部分(例如,动作时段相对于相对静态场景)。
实例编码器和解码器变型
具有任选层级0向上缩放的图形实例
图23展示本文中的某些实例中描述的解码过程的图形表示2300。在图23中从左到右展示解码过程中的各个级。图23的实例展示可如何在基础图片的解码之后应用额外上取样操作。图25和26中分别展示用以执行此变型的实例编码器和实例解码器。
在图23的最左侧,展示经解码基础图片2302。此可包括如本文的实例中所描述的基础解码器的输出。在当前的实例中,对较低分辨率经解码基础图片2302执行可选上取样(即,向上缩放)。举例来说,在一种情况下,可包括在图1、3A和3B的基础编码器112或332之前的可选择性地应用的另一下取样组件。较低分辨率经解码基础图片2302可被视为层级0或层0信号。可基于所传信缩放因子应用经解码基础图片的上取样。
图23展示用以生成预备中间图片2304的第一上取样操作。此可被视为处于与层级1增强(例如,层级1或层1信号)相关联的空间分辨率。在图23中,预备中间图片2304添加2306到第一层经解码残差2308(例如,如由增强子层1产生)以生成组合中间图片2310。组合中间图片2310可接着在第二上取样操作期间上取样以生成预备输出图片2312。可取决于所传信缩放因子选择性地应用第二上取样操作(例如,可省略第二上取样操作或仅在一维而非二维中执行第二上取样操作)。预备输出图片2312可被视为处于层级2空间分辨率。组合中间图片2310可包括求和组件220或530的输出,且预备输出图片2312可包括到求和组件258或558的输入。
在级2314处,预备输出图片2312添加到第二层经解码残差2316(例如,由增强子层2产生)。所述第二层经解码残差2316展示为具有来自存储在时间缓冲器2320中的信息的添加2318份额。信息2320可减少重建第二层残差2316所需的信息量。这可能是有益的,因为归因于增加的空间分辨率(例如,相比于第一层级-层级1-分辨率),第二层级(层级2)处存在更多数据。在图23中,最后加法的输出为最终组合输出图片2322。此可视为单色视频,和/或可针对多个颜色分量或平面重复过程以生成彩色视频输出。
第四实例解码器
图24展示第四实例解码器2400。第四实例解码器2400可视为本文中所描述的其它实例解码器的变型。图24以框图表示上文和下文更详细地描述的一些过程。方案包括残差数据的增强层,一旦经处理和解码,其接着就添加到经解码基础层。增强层进一步包括两个子层1和2,其各自包括不同残差数据集合。还存在数据的时间层,其包含信令以例如使用零运动向量算法预测子层2处的一些残差。
图24中,解码器2400接收标头的集合2402。这些可形成所接收组合位流的一部分和/或可来源于云控制组件。标头2402可包括解码器配置信息,其由解码器配置组件2404使用以配置解码器2400。解码器配置组件2404可类似于图14C的配置接口1434。
图24还展示基础层2410和增强层,所述增强层由两个子层构成:子层1 2420和子层2 2440。这些子层可等效于先前描述的层级或子层级(例如,分别层级1和2)。基础层2410接收经编码基础2412。如在其它实例中,基础解码过程2414解码经编码基础2412以生成层级1基础图片2416。在不进行基础层上取样的情况下,层级l基础图片2416可包括预备中间图片2304。在某些其它实例中,基础图片2416可基于缩放信息上取样以生成预备中间图片2304。
子层1接收层级1系数层2422的集合。举例来说,层级1系数层2422可包括类似于图21A和21B中的LoQ1 2122的层2130的层。子层2接收层级2系数层2442的集合。这些可包括类似于图21A和21B中的LoQ2 2124的层2130的层。可针对如图21A和21B中所展示的多个平面接收多个层,即图24中展示的过程可并行地应用于多个(颜色)平面。图24中,还接收时间层2450。此可包括例如上文描述和图12D中所示出的时间信令。可例如沿着图9A或图21A和21B中展示的线接收经编码基础2412、层级1系数层2422、层级2系数层、时间层2450和标头2402中的两个或两个以上作为组合位流。
转向子层1 2420,经编码的经量化系数被熵解码组件2423、逆量化组件2424、逆变换组件2425和平滑滤波器2426接收和处理。经编码的经量化系数可因此经解码、解量化和逆变换,且可用解块滤波器进一步处理以生成子层1的经解码残差(例如,图23的增强子层1的残差2308)。转向子层2 2440,针对增强子层2接收经编码的经量化系数,且其由熵解码组件2443、时间处理组件2444、逆量化组件2445和逆变换组件2446处理。经编码的经量化系数可因此经解码、解量化和逆变换以生成子层2的经解码残差(例如,图23的增强子层2的残差2316)。在解量化之前,经解码的经量化变换系数可由应用时间缓冲器的时间处理组件2444处理。时间缓冲器含有先前帧的经变换残差(即,系数)。关于是否对其进行组合的决策取决于由解码器接收的关于使用帧间还是帧内预测在解量化和逆变换之前重建系数的信息,其中帧间预测意味着使用来自时间缓冲器的信息连同从经解码的经量化变换系数接收的额外信息来预测待解量化和逆变换的系数。
如上文所描述,基础层可基于缩放信息进一步经上取样(未图示)以生成经上取样基础(例如,图23中的预备中间图片2304)。在任何情况下,层级1分辨率下的基础层2410的输出在第一求和组件2430处与由增强子层1输出的经解码残差组合以生成组合中间图片(例如图23中的2310)。此图片可由上取样器2432基于缩放信息进一步上取样以生成经上取样基础(例如,图23中的预备输出图片2312)。上取样器还可包含添加经预测残差2434的步骤,如先前实例中所描述。可接着在第二求和组件2454处将预备输出图片添加到由增强子层22440输出的经解码残差以生成最终输出图片2460(例如,图23的最终组合输出图片2322)。
第五实例编码器和解码器
图25和26分别展示图1、3A和3B的编码器架构以及图2、5A和5B的解码器架构的变型。
在图25中展示用以创建位流的编码过程2500。首先,输入序列2502馈送到第一下取样器2504,接着是第二下取样器2506(即,图中称为向下缩放器的连续下取样器)且根据所挑选的缩放模式处理。图25的变型不同于先前实例的变型之处在于,存在基础层之前的额外下取样和上取样级,例如在将数据传递到基础编码器2512之前展示为第二向下缩放器2506的额外下取样级是可能的,且在从基础层接收经解码数据之后,额外上取样级(展示为图25中的第一向上缩放器2508)是可能的。在某些实例中,给定缩放模式可用于接通和断开每一级处的向下缩放器和向上缩放器对。在一种情况下,缩放模式可指示缩放方向,例如按照本文中所描述的仅水平下取样/上取样。如果第二向下缩放器2506和第一向上缩放器2508断开,则空间缩放类似于图1、3A和3B的空间缩放。
图25中,按照先前实例,使用基础编解码器,其根据其自身的规范产生基础位流2516。此经编码基础可被包含作为当前视频编码框架结构的组合位流的一部分。
在具有或不具有额外向上缩放的情况下,在第一减法组件2520处从一阶向下缩放的输入序列减去例如基础编码帧的经解码型式等经重建基础图片以便生成子层1残差(如本文描述的层级1残差数据)。这些残差形成第一增强层的编码过程的开始点。如本文所描述的变换组件2521、量化组件2523和熵编码组件2524(以及其它)处理第一(层级1)残差集合以生成(层级1)经熵编码的经量化变换系数2526。
在图25中,按照先前实例,来自子层1的经熵编码的经量化变换系数由环路内解码器处理,所述环路内解码器执行逆或解码操作。这些操作模拟原本将在解码器处执行的第一残差集合的解码过程。在图25的实例中,这些包括熵解码组件2525、逆量化组件2527、逆变换组件2528和层级1滤波器2530。这些可类似于先前描述的组件。经处理或“经解码”的第一残差集合在求和组件2532处添加到从基础编码器的输出导出(例如,经解码且任选地向上缩放)的数据以生成经重建帧。图25中,经重建帧由第二向上缩放器2534处理。向上缩放器的使用可再次取决于所挑选的缩放模式。最后,在第二减法组件2536处通过输入序列和向上缩放重建的减法来计算第二子层2(其还可称为L2层)的残差。这些形成第二(层级2)残差集合,且这些残差还由一组编码组件或工具处理,所述编码组件或工具包含变换组件2541、时间预测组件2542、量化组件2543和熵编码组件2544。输出为层级2系数层2546的集合。如其它实例中所描述,如果激活时间模式,则可由时间预测组件2542在变换系数上应用额外时间预测以便移除某些时间上冗余的信息且减少层级2残差流的能量(例如,值的数目和非零残差值的数目)。子层2以及指定以块为基础使用时间预测的时间层2556的经熵编码的经量化变换系数包含在增强位流中。时间层2556可包括参考先前实例描述的时间信令(例如,类似于参考图12C和12D所描述)。其可由熵编码组件2557进行熵编码。熵编码组件2557可应用至少游程长度编码,如参考实例所论述。
编码器2500可配置有编码器配置信息2565的集合,例如如参考图14A到14C的实例所描述。此信息可作为输出位流的标头2566的集合传输到解码器。图25中,编码器的组合位流可包括标头2566、时间层2556、层级2(L2)编码系数2546、层级1(L1)编码系数2526和经编码基础流2516。
图26展示根据一实例的解码器2600的变型。解码器可包括图2、5A、5B和24中的任一个中展示的解码器的变型。图26的解码器可连同图25的编码器一起使用。
首先,为了创建帧的输出序列,解码器2600分析位流。如图26中可以看出,过程可再次划分成三个部分。
为了生成经解码基础图片(例如,层0处),用所提取基础位流2616馈送基础解码器2618。根据所挑选的缩放模式,此经重建图片可由额外第一向上缩放器2608在求和组件2630之前向上缩放,所述求和组件将第一(层级1)残差集合相加。从第一向上缩放器2608到求和组件2630的输入可被称为预备中间图片。
在基础层解码之后(或与之并行),需要解码增强层位流(包含两个残差子层)。首先,使用编码过程期间使用的编码组件或工具的逆型式解码属于子层1(L1)的系数2626。因此,层级1系数层2626依次由熵解码组件2671、逆量化组件2672和逆变换组件2673处理。此外,可能应用子层1(L1)滤波器2632以便使变换块(即,编码单元)的边界平滑。子层1(L1)解码过程的输出可被称为增强子层1输出。此增强子层1输出在第一(较低)求和组件2630处添加到预备中间图片,从而产生组合中间图片。再次,取决于缩放模式,可应用第二向上缩放器2687,且产生所得预备输出图片。预备输出图片提供到第二上部求和组件2658。其具有与总体输出图片相同的尺寸。
作为最终步骤,解码第二增强子层2的经编码系数2646。再次,此使用如本文的其它实例中所描述的一组逆编码组件或工具。图26中,这些组件包含熵解码组件2681、逆量化组件2682和逆变换组件2683。如果激活时间模式,则时间预测组件2685可应用时间预测。可在第二增强子层2内的任一点处应用时间预测。在一种情况下,其应用于经量化变换系数。可基于作为时间层2656接收的信令来应用时间预测。图26中,时间层2656由熵解码组件2690解码(例如,可经游程长度解码)。时间预测的输出作为增强子层2输出提供到第二上部求和组件2658中。其接着由所述求和组件2658添加到预备输出图片以形成组合输出图片2660作为解码过程的最终输出。
再次,可根据在位流的标头2666内传输的解码器配置2692来控制解码过程。
如参考以上实例所描述,不同于对比的可缩放编解码器,本文中所描述的新方法可对于用于编码下层的编解码器完全不可知。这是因为可在无关于下层的任何信息的情况下解码上层,如例如图2、24和26中展示。如图26中所展示,解码器接收由编码器生成的多个流。这些可以是大约五个流,其包含:通过向基础编解码器(例如,AVC、HEVC或任何其它编解码器)馈送输入视频的下取样型式而产生的第一编码流(经编码基础);通过处理借助于取经重建基础编解码器视频和输入视频的下取样型式之间的差获得的残差(层级1残差)而产生的第二编码流(层级1系数层);通过处理借助于取经重建基础编码视频的经校正型式的上取样型式和输入视频之间的差获得的残差(层级2残差)而产生的第三编码流(层级2系数层);由时间处理产生以指示解码器的第四经编码流(例如,呈时间层的形式);以及经产生用于配置解码器的第五流(标头)。通过基础解码器实施对应于由编码器中使用的基础编解码器实施的编码算法的解码算法来解码经编码基础流,且此解码的输出为经解码基础。单独地且独立地,解码层级1系数群组以便获得层级1残差数据。此外,单独地且独立地,解码层级2系数群组以便获得层级2残差数据。接着组合经解码基础、层级1残差数据和层级2残差数据。确切地说,经解码基础与层级1残差数据组合以生成中间图片。可接着对中间图片进行上取样且进一步与层级2残差数据组合。
此外,新方法使用编码和解码过程,所述编码和解码过程处理图片而不使用任何块间预测。实际上,其通过变换像元的N×N块(例如,2×2或4×4)且彼此独立地处理所述块来处理图片。这实现有效处理以及不依赖于相邻块,因此允许图片的处理并行化。
概括来说,参考图26,展示了根据本发明的非限制性示例性实施例。图26中,描绘了示例性解码模块2600。解码模块2600接收多个输入位流,包括经编码基础2616、层级1系数群组2626、层级2系数群组2646、时间系数群组2656和标头2666。
一般来说,解码模块2600处理两层数据。第一层,即基础层,包括包含经编码基础的所接收数据流2616。经编码基础2616接着发送到基础解码模块2618,其解码经编码基础2616以产生经解码基础图片。基础解码可以是解码器实施任何现有的基础编解码器算法,例如AVC、HEVC、AV1、VVC、EVC、VC-6、VP9等,这取决于经编码基础的编码格式。
第二层,即增强层,进一步由两个增强子层组成。解码模块接收第一系数群组,即层级1系数群组2626,其接着传递到熵解码模块2671以生成经解码系数群组。这些接着传递到逆量化模块2672,所述逆量化模块使用一个或多个解量化参数以生成解量化系数群组。这些接着传递到逆变换模块2673,所述逆变换模块对解量化系数群组执行逆变换以生成增强子层1处的残差(层级1残差)。残差可接着由平滑滤波器2632滤波。层级1残差(即,经解码的第一增强子层)应用于基础图片的经处理输出。
解码模块接收第二系数群组,即层级2系数群组2646,其接着传递到熵解码模块2681以生成经解码系数群组。这些接着传递到逆量化模块2682,所述逆量化模块使用一个或多个解量化参数以生成解量化系数群组。用于增强子层2的解量化参数可不同于用于增强子层1的解量化参数。解量化系数群组接着传递到逆变换模块2683,所述逆变换模块对解量化系数群组执行逆变换以生成增强子层2处的残差(层级2残差)。
所描述实例的方面的变型
现将描述上文描述的某些方面的若干变型。
部分平铺
在某些实例中,可单独地编码和解码每一系数群组。然而,每一群组含有整个帧的相应系数(例如,对于2×2变换,一个群组可涉及所有“A”系数,且另一群组可涉及所有“V”系数)。在当前描述中,系数群组也称为系数层。
在某些变型中,帧的较小部分(例如,拼片)可由解码器个别地解码,因此实现例如部分解码等特征。
确切地说,位流向解码器传信是否已启用系数的平铺。如果启用,则解码器接着能够通过在系数群组内识别群组的对应于选定拼片的部分来选择解码哪些拼片。
举例来说,在一种情况下,图9A的层可平铺,如图21A中所展示。拼片2140中的每一个或者可被称作子系数群组(SG)。每一系数群组可拆分成M个子群组,每一子群组对应于一拼片。
在某些实例中,每一子群组的大小可在子群组之间不同,因为大小可取决于每一群组中编码的数据量。每一子群组的大小以及子群组是否活跃(子群组仅在其含有任何经编码数据的情况下活跃)可作为经压缩元数据传信,所述经压缩元数据可例如使用霍夫曼编码和/或RLE编码和解码,如相对于其它实例所描述。
例如解码特定拼片但不解码其它拼片的部分解码可特别适用于虚拟和扩增现实应用以及远程监控应用(例如,远程医疗或手术)。本文描述的解决方案使解码器能够例如基于视口区域选择性地挑选视频的要解码的部分,且仅解码所述部分。借助于非限制性实例,解码器可接收8K图片(8,192x4,320像素),但例如归因于用户的视点而决定仅显示其部分(例如,4,096x2,160像素的4K区域)。
确切地说,在比如本文的实例中描述的阶层式编码方案中,基础层可以是用传统编解码器(例如,HEVC、VVC、EVC、AV1、VP9、AVC等)编码的较低分辨率层(例如,4K),且增强层可以是用例如本文中所描述的低复杂性增强视频编码等增强编解码器编码的较高分辨率层(例如,8K)。解码器可选择8K全分辨率图片的一部分来解码,例如4K部分。解码器将首先使用传统编解码器解码基础层,且接着将取决于解码器的决策仅选择8K增强层的所关注部分,例如4K区域或稍大的区域。以此方式,解码器将显著加速解码图片的关注区的时间,而不会损失分辨率。
上述变型的示例性方法可包括:接收第一和第二重建数据集合,所述重建数据将用于重建视频序列(例如,包括本文中所描述的经编码残差数据);选择视频序列中的关注区;基于选定关注区解码第一重建数据集合的第一部分;以及基于选定关注区解码第二重建数据集合的第二部分。第一部分可对应于第一集合的全部。方法可包括处理第一部分以产生视频序列的预备重建的步骤。方法可进一步包括将经解码的第二部分与预备重建组合以产生视频序列的最终重建。最终重建可对应于原本在整个第一和第二集合将被解码和组合到一起的情况下将产生的重建的关注区。
用户数据信令
在本文中所描述的实例的某些变型中,位流中的位可用于传信存在户用数据代替与变换块相关联的系数中的一个(例如,HH系数),尤其是在4×4变换的情况下。举例来说,此可包括传信用户数据代替相对于其它实例描述(和例如图11C中展示)的时间信令。
在某些实例中,代替系数中的一个的用户数据的编码可配置如下:如果位被设定为“0”,则解码器将把所述数据解译为相关变换系数。如果位被设定为“1”,则相关系数中所含的数据被认为是用户数据,且解码器被配置成忽略所述数据,即将相关系数解码为零。
以此方式传输的用户数据可用于使解码器能够获得补充信息,包含例如各种特征提取和导出,如以引用的方式并入本文中的共同提交的第GB1914413.8号专利申请中所描述。
参数的模块化信令
在本公开的一方面中,提供一种用于以模块化方式传信特定解码参数的方法。确切地说,一个或多个位可在位流的信令部分中(例如,在指示与序列(例如,序列参数集(SPS))或与图片(例如图片参数集(PPS))相关联的参数的标头中)使用以指示在位流中指示特定参数。
确切地说,位流可含有一个或多个位,其当设定为一个或多个特定值时向解码器指示存在待解码的额外信息。一旦接收了位流,解码器就解码所述一个或多个位,且在确定所述一个或多个位对应于所述一个或多个特定值后,将位流中的一个或多个后续位集合解译为一个或多个特定参数以在解码位流(例如,位流中包含的有效负载)时使用。
在非限制性实例中,所述一个或多个特定参数可与经编码数据的一部分的解码相关联。举例来说,所述一个或多个特定参数可与一个或多个量化参数相关联以解码经编码数据的一部分。举例来说,如果经编码数据包括经编码数据的两个或更多个部分(例如,每一部分可以是如先前所描述的增强层的子层),则所述一个或多个特定参数可以是与解码经编码数据的所述两个或更多个部分中的一些相关联的一个或多个量化参数。在另一实例中,所述一个或多个特定参数可以是与待在解码器处执行的一些后处理操作(例如,应用抖动功能)相关联的一个或多个参数。
在特定实例中,所述一个或多个位可以是仅在需要时实现量化参数(例如,step_width_level1)的显式传信的位(例如,step_width_level1_enabled位)。举例来说,此可仅当存在子层1中编码的数据时发生,如上文所描述。确切地说,如果位step_width_level1_enabled被设定为“0”,则子层1的步宽的值将默认地设定为最大值。另一方面,当位step_width_level1_enabled被设定为“1”时,则显式地传信step_width_level1且从其导出子层1的步宽的值。解码模块/解码器将解码位step_width_level1_enabled,且如果其确定所述位被设定为“0”,则其能够将子层1的步宽的值设定为最大值。另一方面,如果其确定所述位被设定为“1”,则其能够将子层1的步宽的值设定为对应于参数step_width_level1的值(例如,0和2N-1之间的值,其中N是与step_width_level1相关联的位数目)。
在不同实例中,所述一个或多个位可以是某一位(例如,decoder_control位)以使得能够在decoder_control被设定为“1”的情况下以每图片为基础传信两个参数(例如,抖动控制变量dithering_type和dithering_strength)。解码模块/解码器将解码位decoder_control,且如果其确定所述位被设定为“1”,则其将解码抖动控制变量dithering_type和dithering_strength且应用抖动,如本申请中所描述。
上述机制提供一些重要技术优点,此处参考特定实例描述但其可容易地一般化为一般案例。第一,存在来自位step_width_level1_enabled的使用的一些效率增益,这在不针对子层1使用增强的情况下实现每图片N位节省。对于50fps序列,这可例如实现800bps的节省。第二,位step_width_level1_enabled的使用可使解码模块/解码器能够完全“绕过”针对增强子层1的任何处理,因此进一步降低解码复杂性。
相对于下文的语法和语义章节描述不同传信方法的其它实例。
混合解码模块
在本公开的一方面中,提供一种解码模块以使得能够解码组合位流,所述组合位流至少由可以第一解码算法(例如,基础编解码器,比如AVC、HEVC、VVC等)解码的第一位流和可以第二解码算法(例如,本文中所描述的增强编解码器)解码的第二位流组成。两个位流可包括在本文中被称作经编码基础流和经编码增强流的位流,其中经编码增强流可具有对应于多个层、层级或子层级中的每一个的两个子流。
在第一非限制性方面中,组合位流由接收模块接收,所述接收模块分隔第一位流和第二位流,且将第一位流发送到第一解码模块(能够以第一解码算法解码)并将第二位流发送到第二解码模块(能够以第二解码算法解码)。此可包括一种形式的解复用器。此外,所述模块可从第一解码模块接收对应于经解码第一位流的流,且将其传递到第二解码模块。第二解码模块可接着使用所述流来生成最终经解码流,如本说明书中更详细描述。
在第二非限制性方面中,组合位流由第一解码模块(能够以第一解码算法解码)接收且同时由第二解码模块(能够以第二解码算法解码)接收。第一解码模块将仅解码第一位流且丢弃第二位流。第二解码模块将仅解码第二位流且丢弃第一位流。第二解码模块可接着接收经解码第一位流且接着使用其来生成最终经解码流,如在其它实例中更详细描述。
下文陈述的NALU处理的实例更详细地描述这些方面中的某些方面。
NALU处理
本文中描述实例,其中基础流和增强流可囊封在网络抽象层单元或NALU的集合内。网络抽象层或NAL作为H.264/AVC和HEVC视频编码标准的一部分引入。提供一种机制,借此,例如可包括基础流和增强流中的一个或多个的视频编码层映射到例如RTP/IP(用于因特网业务)和MPEG-2(用于广播信号)等基本网络输送层上。
每一NALU可视为含有整数数目的字节的信息包。字节的一个集合形成NAL标头。NAL标头可指示含于NALU内的数据的类型。此例如在位流的语法的稍后实例中说明。NAL标头可以是若干字节(例如,1或2个字节)。NALU的剩余字节包括由NAL标头指示的类型的有效负载数据。NAL标头可包括nal_unit_type变量,其指示NALU类型。此在稍后所描述实例的一些中展示。
NAL单元可指定通用格式以供在包定向和位流定向输送系统两者中使用,且由编码器生成的一系列NALU可被称为NALU流。在当前情况中,基础层和增强层两者可囊封为NALU流。在某些情况下,每一层可包括不同NALU流。在那些情况下,第一和第二增强层流(例如,如本文所描述的层级1和层级2)可囊封于单个NALU流(例如,“增强流”)中且作为单独的NALU流(例如,增强流1和增强流2)供应。
在一个实施例中,如关于语法的稍后章节中所指示,包括经编码增强数据的至少一个增强流以特定NAL标头单元类型值(例如,稍后章节中,0)指示。此向解码器指示NAL流涉及本文的实例中描述的视频编码规范。
在某些实施方案中,可能需要传统解码器能够接收和解码如本文所描述的经编码基础流。然而,某些解码器可能无法解析增强层的NALU,例如其仅可被配置成处理例如AVC或HEVC等传统视频编码标准的NALU。在此情况下,如果解码器接收不符合传统视频编码标准的指定配置的NALU,则其可经历错误和/或拒绝解码经编码基础流以及经编码增强流。举例来说,传统解码器可接收经编码基础流和经编码增强流两者;然而,因为经编码增强流具有并非传统解码器预期的NALU类型,所以其可能导致异常,所述异常防止经编码基础流的处理,即使经编码基础流是根据传统标准配置的。或替代地,由增强流使用的NALU类型可根据传统标准以不同方式解析,从而产生解码器的不可预测操作。
此问题的一个解决方案是,在解码器处提供前端组件,其解析所接收NALU且配置有对增强编码技术以及基础编码技术的了解,且因此可对发送到下游传统解码器的NALU进行滤波。然而,这可能使解码复杂化且需要解码管线内的额外实体。
另一解决方案是经编码增强流使用基础编码技术(例如,基础编解码器)所支持的NALU结构,但其中NALU标头指示未由基础编码技术使用的单元类型。在这些实例中,将参考单个增强流,其中此流囊封所描述的两层增强流。然而,在其它实例中,可存在两个单独的增强流。
在上文所论述的第二解决方案中,增强流可使用基础流所支持的NALU结构,但可将NALU类型设定为基础编码技术内未指定的或设定为预留单元类型的单元类型。举例来说,基础编码技术可具有由一个字节或两个字节设定的单元类型,从而分别指示表示相同数目的可能单元类型的256或65536个可能的整数值。仅少量这些单元类型可实际上由基础编码技术使用(例如,如所述技术的解码规范中所指定),剩余单元类型指示为一系列“非指定”单元类型。在某些情况下,可预留特定整数值范围,作为指示为“非指定”的补充或替代。
在此情况下,增强流的编码器可使用符合基础编码技术的结构但具有设定为非指定或预留值的NALU类型的NALU来囊封流。传统解码器可接着能够接收和解析增强流的NALU的标头,但将单元类型指示为非指定或预留可能致使传统解码器简单地忽略或丢弃这些单元(例如,如基础编码技术所指示)。传统解码器可接着还接收经编码基础流的NALU,其将具有与增强流的NALU相同的NAL结构,但NALU类型将不是非指定或预留。因为使用相同NAL结构,所以NALU的标头可根据传统标准处理为常规流。在此情况下,被配置成处理增强流的增强解码器可接收增强流作为NALU的集合,且解析NAL标头以确定单元类型。在此情况下,尽管单元类型可相对于基础编码技术为非指定或预留,但其可在增强编码技术的规范中指定,意味着增强解码器能够解析和处理增强流。
举例来说,实例基础编码技术的NALU标头可为1个字节。在此实例基础编码技术中,0到128的范围可指示不同的经指定(即,支持的)单元类型,129到192的范围可指示一系列非指定单元类型,且193到255的范围可指示预留值。如本文所描述的经编码基础流可因此使用基础编码技术所支持的NALU结构,且具有所支持范围(0到128)内的单元类型。增强编码技术可使用相同NALU标头和结构,但使用范围129到255(或者,129到192或193到255中的一个)内的NALU类型。传统解码器和增强解码器可接收经编码基础流和经编码增强流两者。增强编码技术可被配置成使用基础编码技术中指定为由解码器忽略或丢弃的NALU类型。因此,传统解码器接收两个流但仅处理基础流,丢弃增强流的NALU(即,包)。另一方面,增强解码器能够处理增强流的包,但如果如此配置,则丢弃基础流的NALU(即,包)。以此方式,不存在前端解析器分配包的要求。此全部基于如NALU标头中指定的NALU类型执行。
因此,在某些实例中,存在包(例如,NALU)的流,其中所述包涉及经编码基础流或经编码增强流。经编码基础流和经编码增强流的包具有与基础编码技术(例如,基础编解码器)兼容的结构。所述包包括标头,其中所述标头指示包类型(例如,NALU类型)。与经编码基础流相关的包具有基础编码技术支持的包类型值的第一范围(例如,其具有可由根据基础编码技术配置的解码器解析和处理的值)。与经编码增强流相关的包具有包类型值的第二范围,其不同于包类型值的第一范围且不具有基础编码技术内的功能(例如,其为非指定或预留)。因此,包类型允许包和适于处理那些包的解码器之间的映射。
根据基础编码技术配置的解码器可因此处理经编码基础流,且使用与经编码基础流相关的包输出经解码基础流。相同解码器可处理与经编码增强流相关的包的标头(即,在中断内处理经编码增强流包),但可根据基础编码技术的规范丢弃或忽略。经解码基础流可渲染于显示装置上或连同经解码增强流一起使用,如下文陈述。
根据增强编码技术配置的解码器(例如,如本文相对于“增强”编码所描述,在本文中也被称为低复杂性增强视频编码或LCEVC编解码器)可因此处理经编码增强流,且使用与经编码增强流相关的包输出经解码增强流。相同解码器可根据增强编码技术的规范丢弃或忽略与经编码基础流相关的包。经解码增强流可与如本文所描述的经解码基础流组合,例如以在高于基础流的质量水平的质量水平下生成增强的经重建视频。
在两种情况下,如包标头中陈述的包类型(例如,NALU标头中的NALU类型)实现NALU和解码器之间的映射。可因此由传统和增强解码器两者接收和处理相同数据流。但基于单元类型值将选择性处理应用于所述流的不同分量(例如,基础和增强部分)。传统解码器还可利用增强编码技术无错地操作。两个解码器仅需要解析NALU的标头,这允许有效地处理大量数据,例如两个解码器都不需要解析其不处理的数据流的有效负载数据。
由增强编码器选择NAL结构
在上文的情况下,在先前所描述实例的上下文中,可使用不同基础编码技术。举例来说,可由增强编码器基于配置数据选择基础编码技术(即,基础编解码器)。配置数据可表示用户选择和/或根据一个或多个操作参数的选择。在此情况下,增强编码器支持多个基础编码。
在增强编码器支持多个基础编码的情况下,增强编码器可被配置成基于选定的基础编码选择NAL结构,例如NALU的格式和NALU类型。举例来说,混合编码可包括如本文所描述的基础编码和增强编码。在上述实例中,基础编码和增强编码两者的NALU具有其中NALU标头可由基础解码器解析的结构。在此情况下,用于基础编码和增强编码两者的结构可基于选定的基础编码来选择。虽然基础编码器可默认地生成具有兼容的NALU结构的经编码基础流,但增强编码器可能需要被配置成生成具有与基础编码兼容的NALU结构的一个或多个增强流。换句话说,增强编码器可支持多个NAL结构且选择基于基础编码器需要的结构。增强编码器可确定正使用的基础编码技术(例如,AVC或HEVC),且接着根据基础编码技术配置NALU和标头中的NALU类型。此在不同基础编码技术具有不同的非指定和/或预留单元类型的情况下可能是有用的。举例来说,不同基础编码技术可使用NALU标头的不同数目的字节,且因此,非指定和/或预留单元类型的整数值可对于基础编码技术是不同的。上述实例中的增强编码器适于选择与基础编码技术兼容的NALU标头值(例如,非指定和/或预留单元类型)以便于成功地解码基础和增强流两者。
类似地,当多个基础编码技术可选时,增强解码器可被配置成确定正与所接收流(例如,与相应基础流相关联的增强流)相关使用的基础编码技术,且相应地解析NAL。举例来说,增强解码器可确定正使用的基础编解码器,且使用此确定来配置NALU的解析,至少包含NALU标头的解析。在一种情况下,基础编码技术可由增强编码器传信。在另一情况下,增强解码器可被配置成使所接收NALU对照可能NALU的集合匹配,例如无来自增强编码器的显式传信。举例来说,NALU标头的字节大小可指示特定基础编码技术。增强解码器可被配置成解析经编码基础流和经编码增强流中的一个或多个的一个或多个NALU标头以确定基础编码技术。在又一情况中,增强解码器可被配置成接收来自基础编解码器的指示正使用哪一基础编解码器的信息。此信息可接着用于选择NALU配置来解析经编码基础流(例如,忽略)和经编码增强流(例如,处理)中的一个或多个。在此情况下,基础编解码器和/或配置层可包括应用编程接口,其中使用方法调用来传回基础编解码器类型(即,至少确定用于解码基础流的基础解码器)。
上取样器系数信令
如本文所描述的增强编码器和解码器可执行上取样(“向上缩放”)以从一个空间层转换到另一空间层(例如,从较低分辨率到较高分辨率)。上取样可在一个或多个维度中执行,且在某些情况下可省略。
可使用不同类型的上取样。本文的实例中描述至少最近邻、双线性、双三次、经修改三次和神经网络上取样器。这些上取样器可使用上取样内核。上取样内核可包括一个或多个系数值以实施上取样。举例来说,所述一个或多个系数值可在例如加法或乘法等一个或多个上取样计算中使用。在一种情况下,上取样内核可包括系数值以供在一个或多个矩阵变换中使用。上取样内核可包括多维阵列(例如,矩阵或张量)。举例来说,三次上取样器可使用二维矩阵作为上取样内核,且神经网络上取样器可使用利用一个或多个多维张量的一系列一个或多个卷积(例如,具有或不具有非线性激活函数)(见本文中所描述的4D和3D实例)。
在上述情况下,上取样器(或上取样组件、过程或操作)可借助于上取样器类型和可配置系数集合(上文描述的“内核”)来限定。可配置系数集合可传信到增强解码器。信令可从增强编码器和/或从云配置服务器发送。在一种情况下,上取样器类型可由增强解码器通过解析(例如,处理或以其它方式检查)所接收可配置系数集合来确定。此可避免需要显式地传信上取样器类型且因此释放带宽。
在一种情况下,多个不同上取样器类型可具有以共同或共享格式(例如,作为一个或多个矩阵或多维阵列)供应的可配置系数的集合。举例来说,一组三次、经修改三次或神经网络上取样器可使用具有存储为多维阵列的系数的内核。这些系数的值可接着确定应用哪一类型的上取样器。以此方式,可通过改变传信到增强解码器的内核系数值来改变上取样器。这再次可避免需要显式地传信上取样器类型,且上取样器定义的效率可由多个上取样器类型共享(例如,所编译计算机程序代码内的优化)。
时间信令和时间修改符
在本申请的一方面中,存在一种用于与经编码数据(经编码系数)分开管理时间信息的机制。确切地说,经由单独的经编码数据层发送时间信令信息。在不发送系数的情况下(例如,通过将层级2增强子层的步宽设定为最大值),时间缓冲器可用于继续将先前帧中计算的且存储在缓冲器中的残差应用于当前帧。
确切地说,如果不发送增强(例如,通过将no_enhancement_flag设定为零),时间缓冲器可基于信令针对整个帧复位(例如,通过将temporal_refresh_bit设定为1),在此情况下,没有残差应用于当前帧。然而,在不基于信令针对整个帧复位缓冲器的情况下(例如,通过将temporal_refresh_bit设定为零),可使用第二旗标来确定是否应由解码器读取时间信令。确切地说,编码器将把旗标设定为1(例如,temporal_signalling_present_flag设定为1)以便告知解码器存在时间信令层。在这种情况下,解码器应读取时间信令,且将由编码器指示的时间逻辑应用于经解码位流。确切地说,其应刷新信令中指示的拼片和/或块。另一方面,如果编码器将旗标设定为零(例如,temporal_signalling_present_flag设定为零),则不发送时间信令,且解码器将把时间缓冲器中所含的残差应用于当前帧。
通过上述机制,属于静态区域的时间信息和残差可保留,即使在不发送进一步数据的情况下也如此,因此允许维持高质量和细节。
在第二方面中,针对图片的静态区域减小待应用于增强子层的步宽。确切地说,基于识别待使用来自缓冲器的信息和来自当前帧的额外差量残差(即,静态拼片)解码的拼片(即,块群组)的信令,步宽可减小与所传信参数(例如,stepwidth_modifier)成比例的因子以便实现视频的那些静态且因此更可能视觉上相关的部分的较大量化粒度。并且,因为步宽应用于差量残差(即,当前帧的残差和已经存储在时间缓冲器中的协同定位残差之间的差),所以较低步宽(即,较高量化步长)将实现有可能比所述残差小得多的差量残差的量化中的更大准确性。因此,将实现改进的质量。
用于无损编码的量化死区
在无损编码的情况下,可能需要将死区改变为较小大小。这是因为,在无损案例中,可能必须确保编码接近零的系数,而非将其设定为零。在这种情况下,可通过将其例如设定为步宽的大小,而非如对于有损编码来说高于步宽的大小的大小,来创建不同死区。死区改变所处的典型值在8和16之间的步宽范围内,且通常处于16。
位流
由本文中所描述的视频编码构架生成的实例位流可含有可处于较低分辨率的基础层,和由多达两个子层组成的增强层。以下子章节简要阐释此位流的结构和可如何提取信息。
可使用任何视频编码器创建基础层,且所述基础层可使用多种多样的现有和将来的视频编码技术灵活地实施。来自基础层的位流可类似于如由现有编解码器输出的位流。增强层具有额外不同结构。在此结构内,语法要素囊封于网络抽象层(NAL)单元的集合中。这些还使增强层信息能够与基础层解码信息(例如,在解码器处以便重建视频)同步。取决于图片群组(GOP)内视频帧的位置,可存在指定全局配置和用于控制解码器的额外数据。
如本文的实例中所描述,且如图9A、21A和21B中所展示,可将一个增强图片的数据编码为若干组块。这些数据组块可以阶层方式组织,如前述图中所展示。在这些实例中,对于每一平面(例如,对应于颜色分量),提取多达两个增强子层。其中的每一个再次展开为变换系数的许多系数群组。系数的数目取决于所挑选变换类型(例如,应用于2×2编码单元的4×4变换可生成4个系数,且应用于4×4编码单元的16×16变换可生成16个系数)。此外,如果使用时间处理模式,则可存在具有一个或多个增强子层的时间数据的额外组块(例如,层级1和层级2子层中的一个或多个)。增强位流内的经熵编码的变换系数可由本文中所描述的编码工具在解码器处处理。
如本文所描述,术语位流、字节流和NALU流可互换使用。实例的实施方案可仅包括增强层级的实施方案和基础层实施方案,例如基础编码器和解码器可由第三方组件实施,其中基础层实施方案的输出可被接收且与具有如本文所描述的增强解码的增强层级的经解码平面组合。
在某些实例中,位流可呈两个格式中的一个:NAL单元流格式或字节流格式。NAL单元流格式可概念上视为较“基本”类型。其由称为NAL单元的语法结构序列组成。此序列按解码次序排序。可存在强加于NAL单元流中的NAL单元的解码次序(和内容)的约束。字节流格式可由NAL单元流格式构成,方式是按解码次序对NAL单元排序且用开始代码前缀和零或更多零值字节为每一NAL单元加前缀以形成字节流。可通过在此字节流内搜索唯一开始代码前缀样式的位置而从字节流格式提取NAL单元流格式。
对于位定向递送,字节流格式的位次序可被指定为以第一字节的最高有效位开始,继续到第一字节的最低有效位,然后是第二字节的最高有效位,等等。字节流格式可由字节流NAL单元语法结构的序列组成。每一字节流NAL单元语法结构可含有一个4字节长度指示,继之以一个nal_unit(NumBytesInNalUnit)语法结构。此语法结构可如下:
字节流中的字节流NAL单元的次序可遵循字节流NAL单元中所含的NAL单元的解码次序。每一字节流NAL单元的内容可与同字节流NAL单元中所含的NAL单元相同的存取单元相关联。在上述nal_unit_length中为4字节长度字段,指示nal_unit()语法结构内NAL单元的长度。
基础位流与增强位流之间的关系
可使用以下两个机制中的一个实现基础位流与增强位流之间的关系。在第一情况中,如果基础位流和增强位流不交错,则可指定基础解码器的存取单元和增强解码器(即,增强层)的存取单元之间的关系。在第二情况中,如果基础解码器位流和增强位流在单个基本流中交错,则可通过使基础位流的存取单元与增强位流的存取单元交错来实现关系。
举例来说,在第一情况中,可使用由国际标准(IS)13818-1程序流指定的交错和同步机制或由IS 14496-14文件格式指定的交错和同步机制来指定所述关系。在第二情况中,基础存取单元和相应增强存取单元的交错可以若干约束来实施。这些约束可包括以下中的一个或多个:在交错的基础和增强位流中保留输入基础位流中的存取单元的次序;关联到相应基础存取单元的增强存取单元被插入成紧接在基础存取单元之后且紧接在位流次序中的后续基础存取单元之前;借助于NAL单元类型实现属于基础位流的存取单元和属于增强位流的存取单元之间的鉴别,如相对于稍后实例所描述;以及增强解码器推断通过解码增强存取单元获得的残差将与通过解码紧接在前的基础存取单元获得的基础图片的样本组合处理。
有效负载处理
有效负载数据块单元过程可应用于输入位流。有效负载数据块单元过程可包括将输入位流分离为数据块,其中每一数据块囊封到NALU中。NALU可如上文描述用于使增强层级与基础层级同步。每一数据块可包括标头和有效负载。有效负载数据块单元可包括解析每一数据块以导出标头和有效负载,其中所述标头包括配置元数据以便于解码,且所述有效负载包括经编码数据。用于解码经编码数据的有效负载的过程可包括检索经编码数据的集合,且此可在标头的集合的解码过程之后执行。可基于图9A、21A和21B中的一个或多个中展示的结构处理有效负载,例如经熵编码系数的集合分组为平面、增强层级或层。如所提到,每一NALU的每一图片的前面可以是图片配置有效负载参数。
应注意,举例来说,每一层是含有与特定变换系数集合相关的经编码数据的语法结构。因此,例如在使用2×2变换的情况下,每一层可包括每一块(或编码单元)的‘平均’值的集合、每一块的‘水平’值的集合、每一块的‘竖直’的集合和每一块的‘对角’值的集合。当然,应理解,包括在每一层中的特定变换系数集合将涉及用于所述特定增强层级(例如,第一,或进一步,层级1或2,上文限定)的特定变换。
位流语法
在某些实例中,本文中所描述的位流(例如,确切地说,增强位流)可根据限定配置。此章节呈现可使用的实例语法。实例语法可用于解译数据,且可指示可能的处理实施方案以辅助本文中所描述的实例的理解。应注意,下文描述的语法不具限制性,且与下文呈现的语法不同的语法可在实例中使用以提供所描述功能性。
一般来说,语法可提供实例方法,借助于所述方法可识别什么内容含于标头内以及什么内容含于伴随着标头的数据内。标头可包括如先前实例中所示出的标头,例如标头256、556、2402、2566或2666。语法可指示表示什么数据但不一定指示如何对所述数据进行编码或解码。举例来说,关于上取样操作的特定实例,所述语法可描述标头包括被选定用于较宽编码操作(即,过程的编码器侧)中的上取样操作的指示符。还可指示所述指示包括在标头中何处以及可如何确定所述指示符。与下文描述的语法实例一样,解码器还可实施用于识别到位流中的进入点的组件、用于识别和处置非相符位流的组件,以及用于识别和处置错误的组件。
下表提供如何呈现实例语法的大体引导。当语法要素出现时,其经由例如syntax_element等变量指示;此指定语法要素从位流解析且位流指针在位流解析过程中前进到超出语法要素的下一位置。字母“D”指示描述符,其在下文阐述。以最高有效位到最低有效位的次序呈现语法的实例。
在语法的实例中,如下表中所陈述限定函数。依据指示待由解码过程从位流读取的下一位的位置的位流指针的值来表达函数。
可在实例表的“D”列中使用的以下描述符指定每一语法要素的解析过程:
b(8):具有任何样式的位串(8位)的字节。对于此描述符的解析过程由函数read_bits(8)的传回值指定。
f(n):使用以左位在第一写入(从左到右)的n个位的固定样式位串。对于此描述符的解析过程由函数read_bits(n)的传回值指定。
u(n):使用n个位的无符号整数。当n为语法表中的“v”时,位数目以取决于其它语法要素的值的方式变化。对于此描述符的解析过程由函数read_bits(n)的传回值指定,所述传回值解译为最高有效位在第一写入的无符号整数的二进制表示。
ue(v):左位在第一的无符号整数0阶指数-哥伦布编码的语法要素。对于此描述符的解析过程在稍后实例中指定。
mb:读取多个字节。对于此描述符的解析过程由函数read_multibyte(bitstream)的传回值指定,所述传回值解译为最高有效位第一写入的多个无符号字符及第一写入的无符号字符序列的最高有效字节的二进制表示。
NAL单元和NAL单元标头语法
NAL单元和NAL单元标头语法可被配置成如相应两个下表中所陈述:
过程块语法
实例过程块语法在下表中陈述:
过程有效负载-序列配置
过程有效负载序列配置语法可在下表中陈述:
过程有效负载-全局配置
过程有效负载全局配置语法可在下表中陈述:
过程有效负载-图片配置
例如用于视频帧的过程有效负载图片配置语法可在下表中陈述:
过程有效负载-经编码数据
过程有效负载经编码数据语法可在下表中陈述:
过程有效负载-经编码拼片数据
过程有效负载经编码拼片数据语法可在下表中陈述:
过程有效负载-表面
过程有效负载表面语法(例如,可包括经编码系数和/或时间信令的数据集的语法)可在下表中陈述:
过程有效负载-额外信息
过程有效负载额外信息语法可在下表中陈述:
过程有效负载-填充
过程有效负载填充语法可在下表中陈述:
字节对准
字节对准语法可在下表中陈述:
位流语义
以下章节提供关于上表中陈述的特定变量的含义的进一步细节。此细节可被称为位流的“语义”。与语法结构以及与这些结构内的语法要素相关联的实例语义在此章节描述。在某些情况下,语法要素可具有可能值的封闭集合,且这些情况的实例在某些下表中呈现。
NAL单元语义
现将描述大体上涉及NAL单元的变量或参数的若干实例。这些不应视为限制性的。
变量NumBytesInNalUnit可用于指定NAL单元的大小,以字节计。此值可用于NAL单元的解码。NAL单元边界的某一形式的分界可用于实现NumBytesInNalUnit的推断。参考字节流格式的NALU的其它实例描述一种此分界方法。可使用多种分界方法。
变量rbsp_byte[i]为原始字节序列有效负载(RBSP)的第i字节。RBSP可指定为字节的有序序列且含有数据位串(SODB)如下:
如果SODB为空(即,长度为零位),则RBSP也为空。
否则,RBSP含有SODB如下:
1.RBSP的第一字节含有SODB的(最高有效、最左)八个位;RBSP的下一字节含有SODB的接下来八个位,等等,直至留下SODB的少于八个位。
2.1SODB之后存在rbsp_trailing_bits()如下:
i.最终RBSP字节的第一(最高有效、最左)位含有SODB的剩余位(如果存在)。
ii.下一位由等于1的单个rbsp_stop_one_bit组成。
iii.当rbsp_stop_one_bit不是字节对准字节的最后位时,存在一个或多个rbsp_alignment_zero_bit以实现字节对准。
具有上述RBSP性质的语法结构在以上语法表中使用“_rbsp”后缀表示。这些结构可作为rbsp_byte[i]数据字节的内容携载于NAL单元内。RBSP语法结构到NAL单元的关联可在下表中陈述。当RBSP的边界已知时,解码器可通过串接RBSP的字节的位且丢弃作为等于1的最后(最低有效、最右)位的rbsp_stop_one_bit,且丢弃等于0的在其之后的任何后续(最低有效、向右更远)位,来从RBSP提取SODB。解码过程的数据可包含在RBSP的SODB部分中。
变量emulation_prevention_three_byte为等于0x03的字节。当emulation_prevention_three_byte存在于NAL单元中时,其可由解码过程丢弃。在某些情况下,防止NAL单元的最后字节等于0x00,且在NAL单元内,在任何字节对准位置处排除后续三个字节序列:0x000000、0x000001和0x000002。还可配置成,在NAL单元内,以0x000003开始(后续序列除外)的任何四个字节序列不会发生在任何字节对准位置处(例如,后续四个字节序列0x00000300、0x00000301、0x00000302和0x00000303)。
NAL单元标头语义
现将描述可用于携载与NAL单元标头相关的信息的变量或参数的若干实例。这些不应视为限制性的。
在某些实例中,变量forbidden_zero_bit设定为等于0,且变量forbidden_one_bit设定为等于1。变量nal_unit_type可用于指定如下表中所指定的NAL单元中所含的RBSP数据结构的类型:
在此实例中,具有UNSPEC0...UNSPEC27范围内(包含端点)及对于其未指定语义的UNSPEC31的nal_unit_type的NAL单元可被配置成不影响增强解码过程。reserved_flag可等于位序列111111111。UNSPEC0...UNSPEC27范围内及UNSPEC31的NAL单元类型可如特定应用或实施方案所确定而使用。这些可涉及如本文所描述的“增强”解码过程,其可与LCEVC_LEVEL nal_unit_type相关联。不同应用可针对不同目的使用UNSPEC0...UNSPEC27范围内及UNSPEC31NAL的NAL单元类型,且编码器和解码器可相应地调适。出于除确定位流的解码单元中的数据量(例如,如特定文本配置中所使用)外的目的,解码器可被配置成忽略(从位流移除并丢弃)使用nal_unit_type的预留值的所有NAL单元的内容。针对本文中所描述的方面的将来兼容扩展可使用预留和/或未指定的NAL单元类型。
数据块单元一般语义
现将描述可用于携载关于NAL单元的数据块的信息的变量或参数的若干实例。这些不应视为限制性的。
变量payload_size_type可用于指定有效负载的大小。其可取0和7之间的值,如下表所指定。
payload_size_type | 大小(字节) |
0 | 0 |
1 | 1 |
2 | 2 |
3 | 3 |
4 | 4 |
5 | 5 |
6 | 保留 |
7 | 自定义 |
变量payload_type可指定所使用的有效负载的类型(例如,有效负载的内容)。其可取0和31之间的值,如下表所指定。下表还指示实例位流内每一内容的所建议最小出现频率。
payload_type | 有效负载的内容 | 最小频率 |
0 | process_payload_sequence_config() | 至少一次 |
1 | process_payload_global_config() | 至少每隔一个IDR |
2 | process_payload_picture_config() | 图片 |
3 | process_payload_encoded_data() | 图片 |
4 | process_payload_encoded_data_tiled() | 图片 |
5 | process_payload_additional_info() | 图片 |
6 | process_payload_filler() | 图片 |
7-30 | 保留 | |
31 | 自定义 |
数据块语义
下文描述数据块单元中的每一个的语义,例如由NAL单元携载的数据。下文论述的某些变量涉及配置文件、层级和工具集。配置文件、层级和工具集可用于指定对于位流的限制,且因此对解码位流所需的能力施加限制。配置文件、层级和工具集也可以用以指示个别解码器实施方案之间的互操作点。可能需要避免解码器处的个别可选“选项”,因为这可能增加互操作难度。
“配置文件”可指定所有解码器遵照所述配置文件所支持的算法特征和限制的子集。在某些情况下,编码器可能不需要利用配置文件中支持的特征的任何特定子集。
“层级”可指定对可由语法要素(例如,上文描述的要素)取的值的限制的集合。相同的层级定义集合可与所有配置文件一起使用,但个别实施方案可针对每一所支持配置文件支持不同层级。对于任何给定配置文件,层级可大体上对应于特定解码器处理负载和存储器能力。可在遵照配置文件和层级的约束解码视频流的能力方面指定遵照本文中所描述的实例的视频解码器的实施方案,例如配置文件和/或层级可指示视频解码器的特定规范,例如所支持和/或使用的某一特征集合。如此,可使用配置文件和用于所述配置文件的给定层级来指定解码器的特定实施方案的能力。变量profile_idc可用于指示位流的配置文件,且变量level_idc可用于指示层级。这些变量的值可局限于一组限定的规范。指定值的集合之间的profile_idc的预留值可能不指示指定配置文件之间的中间能力;然而,指定值的集合之间的level_idc的预留值可用于指示指定层级之间的中间能力。变量sublevel_idc还可以用于指示能力的集合的子层级。这些层级和子层级不能与增强编码器和解码器的层级和子层级混淆,它们是不同的概念。
作为实例,可存在“主”配置文件。位流对此实例“主”配置文件的顺应性可由profile_idc等于0指示。遵照此实例“主”配置文件的位流可具有活跃全局配置数据块具有仅等于0或1的chroma_sampling_type的约束。针对所指定的全局配置参数集的所有约束可以是针对当解码位流时激活的全局配置参数集的约束。特定层级(例如,如由level_idc的特定值识别)处遵照当前实例“主”配置文件的解码器可能够解码所有后续条件应用于的所有位流和子层表示:位流指示为顺应“主”配置文件,且位流或子层表示指示为顺应小于或等于指定层级的层级。还可限定此实例“主”配置文件的变型,且为其给定profile_idc的不同值。举例来说,可存在“主4:4:4”配置文件。位流对实例“主4:4:4”配置文件的顺应性可由profile_idc等于1指示。遵照实例“主4:4:4”配置文件的位流可具有活跃全局配置数据块将具有0到3范围内(包含端点)的chroma_sampling_type的约束。再次,特定层级(例如,如由level_idc的特定值识别)处遵照实例“主4:4:4”配置文件的解码器可能够解码所有后续条件应用于的所有位流和子层表示:位流指示为顺应“主”配置文件,且位流或子层表示指示为顺应小于或等于指定层级的层级。变量extended_profile_idc和extended_level_idc可分别用于指示使用扩展配置文件和扩展层级。
在特定实施方案中,可基于两个参数限定与配置文件相关联的“层级”:输出图片的明度样本在时间上的计数(即,输出样本速率)和用于增强编码的经编码图片缓冲器(CPBL)的最大输入位速率。可在一秒观察周期内考虑样本速率和位速率两者(例如,可依据位/秒/每千输出样本测量最大CPBL位速率)。下表指示一些实例层级和子层级。
层级 | 子层级 | 最大输出样本速率 | 最大CPBL位速率 | 实例分辨率和帧速率 |
1 | 0 | 29,410,000 | 4 | 1280x720(30fps) |
1 | 1 | 29,410,000 | 40 | 1280x720(30fps) |
2 | 0 | 124,560,000 | 4 | 1920x1080(60fps) |
2 | 1 | 124,560,000 | 40 | 1920x1080(60fps) |
3 | 0 | 527,650,000 | 4 | 3840x2160(60fps) |
3 | 1 | 527,650,000 | 40 | 3840x2160(60fps) |
4 | 0 | 2,235,160,000 | 4 | 7640x4320(60fps) |
4 | 1 | 2,235,160,000 | 40 | 7640x4320(60fps) |
返回到NAL单元数据块的更多变量,如果变量conformance_window_flag等于1,则此可用于指示序列配置数据块中存在一致性裁剪窗偏移参数。如果变量conformance_window_flag等于0,则此可指示不存在一致性裁剪窗偏移参数。变量conf_win_left_offset、conf_win_right_offset、conf_win_top_offset和conf_win_bottom_offset指定从解码过程输出的经编码视频序列(即,所得输出视频)中的图片的样本,依据用于输出的图片坐标中所指定的矩形区。当conformance_window_flag等于0时,conf_win_left_offset、conf_win_right_offset、conf_win_top_offset和conf_win_bottom_offset的值可推断为等于0。一致性裁剪窗可限定为含有具有从(SubWidthC*conf_win_left_offset)到(width-(SubWidthC*conf_win_right_offset+1))的水平图片坐标以及从(SubHeightC*conf_win_top_offset到height-(SubHeightC*conf_win_bottom_offset+1))的竖直图片坐标(包含端点)的明度样本。Sub WidthC*(conf_win_left_offset+conf_win_right_offset)的值可被约束为小于width,且SubHeightC*(conf_win_top_offset+conf_win_bottom_offset)的值可被约束为小于height。两个色度阵列的相应指定样本(例如,YUV实例中)可类似地限定为具有图片坐标(x/Sub WidthC,y/SubHeightC)的样本,其中(x,y)是指定明度样本的图片坐标。Sub WidthC和SubHeightC的实例值在上文的“实例图片格式”章节中指示。应注意,一致性裁剪窗偏移参数仅可应用于输出处;所有内部解码过程可应用于未裁剪的图片大小。
数据块单元全局配置语义
现将描述如上述语法中指示的特定全局配置变量的短描述。将描述可用于携载关于全局配置的信息的变量或参数的若干实例。这些不应视为限制性的。
变量processed_planes_type_flag可用于指定待由解码器处理的平面。其可等于0或1。对于YUV实例,如果其等于0,则仅可处理明度(Y)平面;如果其等于1,则可处理所有平面(例如,一个明度和两个色度)。在此情况下,如果processed_planes_type_flag等于0,则nPlanes将等于1,且如果processed_planes_type_flag等于1,则nPlanes将等于3。在图9A中展示变量nPlanes的图示。
变量resolution_type可用于指定经增强解码图片的明度(Y)平面的分辨率。其可限定为0和63之间的值,如下表中所指定。类型的值表达为NxM,其中N为经增强解码图片的明度(Y)平面的宽度,且M为经增强解码图片的明度(Y)平面的高度。举例来说,以下值(以及其它)可供使用:
变量chroma_sampling_type限定经增强解码图片的颜色格式,如“实例图片格式”章节中的表中陈述。
变量transform_type可用于限定待使用的变换的类型。举例来说,以下值(以及其它)可供使用:
transform_type | 类型的值 |
0 | 2×2定向分解变换 |
1 | 4×4定向分解变换 |
在以上实例中,如果transform_type等于0,则nLayers(例如,如图9A中所展示)可等于4,且如果transform_type等于1,则nLayers可等于16。
变量base_depth_type可用于限定经解码基础图片的位深度。举例来说,以下值(以及其它)可供使用:
base_depth_type | 类型的值 |
0 | 8 |
1 | 10 |
2 | 12 |
3 | 14 |
类似地,变量enhancement_depth_type可用于限定经增强解码图片的位深度。举例来说,以下值(以及其它)可供使用:
enhancement_depth_type | 类型的值 |
0 | 8 |
1 | 10 |
2 | 12 |
3 | 14 |
变量temporal_step_width_modifier_signalled_flag可用于指定是否传信temporal_step_width_modifier参数的值。其可等于0或1。如果等于0,则可不传信temporal_step_width_modifier参数。
变量predicted_residual_mode_flag可用于指定解码器是否应在解码过程期间激活经预测残差过程。如果值为0,则将停用经预测残差过程。
变量temporal_tile_intra_signalling_enabled_flag可用于指定是否应在解码拼片(例如,32×32拼片)时使用时间拼片预测。如果值为1,则将启用时间拼片预测过程。
变量upsample_type可用于指定待用于解码过程中的上取样器的类型。举例来说,以下值可供使用:
变量level_1_filtering_signalled可用于指定解块滤波器是否应使用所传信参数的集合,例如代替默认参数。如果值等于1,则可传信解块系数的值。
变量temporal_step_width_modifier可用于指定待用于计算用于使用时间预测的变换的变量步宽修改符的值。如果temporal_step_width_modifier_signalled_flag等于0,则此变量可设定为预定义值(例如,48)。
变量level_1_filtering_first_coefficient可用于指定解块掩码中的第一系数的值(例如,来自上文较早章节的实例中的α或4×4块隅角残差权重)。第一系数的值可在0和15之间。
变量level_1_filtering_second_coefficient可用于指定解块掩码中的第二系数的值(例如,来自上文较早章节的实例中的βα或4×4块侧部残差权重)。第二系数的值可在0和15之间。
可提供变量scaling_mode_level1以指定是否以及如何应在经解码基础图片和预备中间图片之间执行上取样过程(例如,图26中的向上缩放器2608)。用于层级1的缩放模式参数(例如,用以从层级0转换到层级1)可具有若干可能的值,包含:
scaling_mode_level1 | 类型的值 |
0 | 无缩放 |
1 | 仅跨水平维度的一维2∶1缩放 |
2 | 跨两个维度的二维2∶1缩放 |
3 | 保留 |
类似的变量scaling_mode_level2可用于指定是否以及如何在组合中间图片和预备输出图片之间执行上取样过程(例如,按照图26中的向上缩放器2687)。组合中间图片对应于过程8.9.1的输出。用于层级2的缩放模式参数(例如,用以从层级1转换到层级2)可具有若干可能的值,包含:
scaling_mode_level2 | 类型的值 |
0 | 无缩放 |
1 | 仅跨水平维度的一维2∶1缩放 |
2 | 跨两个维度的二维2∶1缩放 |
3 | 保留 |
如上文章节标题“用户数据信令”中所描述,变量user_data_enabled可用于指定用户数据是否包含在位流中以及用户数据的大小。举例来说,此变量可具有以下值:
user_data_enabled | 类型的值 |
0 | 停用 |
1 | 启用2位 |
2 | 启用6位 |
3 | 保留 |
还可限定变量以指示基础层和两个增强子层中的一个或多个的位深度。举例来说,变量level1_depth_flag可用于指定层级1处的编码和/或解码组件使用基础深度类型还是增强深度类型处理数据(即,根据基础位深度或针对一个或多个增强层级限定的位深度)。在某些情况下,基础和增强层可使用不同位深度。还有可能在不同位深度处执行层级1和层级2处理(例如,层级1可使用比层级2低的深度,因为层级1可容纳较低层级位量化,或层级2可使用较低位深度以减少用于编码层级2残差的字节数目)。在其中提供例如level1_depthflag等变量的情况下,值0可指示将使用基础深度类型处理层级1子层。如果使用值1,则此可指示将使用增强深度类型处理层级1子层。
可指定变量tile_dimensions_type以指示图片拼片的分辨率。此变量的实例值在下表中展示。类型的值可映射到NxM分辨率,其中N为图片拼片的宽度且M为图片拼片的高度。
tile_dimensions_type | 类型的值 |
0 | 无平铺 |
1 | 512x256 |
2 | 1024x512 |
3 | 自定义 |
如由上述类型“3”所指示,在某些情况下,可限定自定义拼片大小。如果指示自定义拼片大小(例如,经由上表中的值3),则变量custom_tile_width和custom_tile_height可用于指定拼片的自定义宽度和高度。
可限定一个或变量以指示用于与图片拼片相关联的数据的压缩方法。压缩方法可应用于文件的信令。举例来说,compression_type_entropy_enabled_per_tile_flag可用于指定用于编码每一图片拼片的entropy_enabled_flag字段的压缩方法。其可取如下表中所展示的值。
compression_type_entropy_enabled_per_tile_flag | 类型的值 |
0 | 不使用压缩 |
1 | 游程长度编码 |
类似地,可限定变量compression_type_size_per_tile以指示用于编码每一图片拼片的大小字段的压缩方法。在此情况下,compression_type_size_per_tile可取下表中指示的值(其中术语霍夫曼编码和前缀编码可互换地使用)。
compression_type_size_per_tile | 类型的值 |
0 | 不使用压缩 |
1 | 前缀编码编码 |
2 | 关于差的前缀编码编码 |
3 | 保留 |
最后,变量custom_resolution_width和custom_resolution_height可用于分别指定自定义分辨率的宽度和高度。
数据块单元图片配置语义
现将描述可用于携载关于图片配置的信息的变量或参数的若干实例。这些不应视为限制性的。
在某些实例中,可限定变量以指示某些层将不表征增强。这可指示增强层针对某些图片有效地断开或停用。举例来说,如果存在网络拥塞,则可能需要切断若干帧的增强层,且因此不接收和添加任何增强数据(例如,不添加经解码残差的第一集合和第二集合中的一个或多个)。在某些实例中,可指定no_enhancement_bit_flag变量以指示图片中不存在所有layerIdx<nLayers的增强数据(例如,如相对于图9A所展示)。no_enhancement_bit_flag值0可指示正使用增强且存在增强数据。
如本文中的其它实例中所描述,量化矩阵可用于指示量化和/或解量化。对于解码器处的解量化,可提供信令,其指示量化矩阵模式,例如用于生成和使用一个或多个量化矩阵的特定操作模式。举例来说,例如quant_matrix_mode等变量可用于根据下表指定将如何在解码过程中使用量化矩阵。在某些情况下,当quant_matrix_mode不存在时,即当不显式地传信模式时,可假定所述模式取默认值,例如所述模式被推断为等于0,如下指示。通过允许缺少量化矩阵模式值,可节省每一图片的信令带宽(例如,解码器的量化组件可使用默认设定)。使用例如以下实例中指示的模式可以允许有效地实施量化控制,借此量化参数可在某些情况下动态地变化(例如,当编码必须适应改变的条件时),且在其它情况下基于默认值检索。下表中的实例并不希望为限制性的,且可提供其它模式,如相对于本文中所描述的其它实例所指示。
如上文所描述,在某些实例中,可使用量化偏移。对于解码器处的解量化,量化偏移(也称为用于对称量化和解量化的解量化偏移)可由编码器或另一控制装置传信或可从本地解码器存储器检索。举例来说,变量dequant_offset_signalled_flag可用于指定是否传信将在解量化时应用的偏移方法和偏移参数的值。在此情况下,如果值等于1,则可传信用于解量化偏移的方法和/或解量化偏移参数的值。当dequant_offset_signalled_flag不存在时,其可推断为等于0。再次,具有其不存在的推断值可帮助减少需要发送以编码特定图片或帧的位数目。
依据上文,变量dequant_offset_mode_flag可用于指定用于应用解量化偏移的方法。举例来说,不同模式可用于指示不同的应用偏移的方法。可以是默认模式的一个模式可涉及使用指定待应用的解量化偏移参数的值的所传信dequant_offset变量。此可动态地变化。在一种情况下,如果dequant_offset_mode_flag等于0,则应用前述默认模式;如果dequant_offset_mode_flag的值等于1,则应用恒定偏移方法,其也可使用所传信dequant_offset参数。在某些实施方案中,解量化偏移参数dequant_offset的值可在0和127之间(包含端点)。
还可使用更多的量化变量。在一种情况下,变量的集合可用于传信一个或多个量化步宽以用于增强层内的图片或帧。步宽值可用于应用量化和/或解量化,如相对于以上实例的量化和/或解量化组件所解释。举例来说,step_width_level1可用于指定将在解码增强子层1(即,层级1)中的经编码残差时使用的步宽的值,且step_width_level2可用于指定将在解码增强子层2(即,层级2)中的经编码残差时使用的步宽值的值。
在某些实例中,可针对增强子层中的一个或多个(即,层级1和2)限定步宽。在某些情况下,可针对特定子层但不针对其它子层传信步宽。举例来说,step_width_level1_enabled_flag变量可用于指定将在解码增强子层1(即,如本文所描述的层级1)中的经编码残差时使用的步宽的值是否为默认值或经传信(例如,从编码器)。其可为0(默认值)或1(指示值由step_width_level1传信)。实例默认值可为32,767。当step_width_level1_enabled_flag不存在时,其推断为等于0。
在某些实例中,可限定阵列的集合以指定量化缩放参数的集合。量化缩放参数可指示如何缩放编码单元或块内的每一系数(例如,对于2×2变换,如何缩放表示A、H、V和D分量的四个层中的每一个)。在一个实例中,可限定阵列qm_coefficient_0[layerIdx]以指定当quant_matrix_mode等于上表中的2、3或5时量化矩阵缩放参数的值,且阵列qm_coefficient_1[layerIdx]可用于指定当quant_matrix_mode等于上表中的4或5时量化矩阵缩放参数的值。索引layerIdx表示特定层(例如,如图9A中所展示),其继而涉及特定系数集合(例如,一个层可包括A系数等)。
在实例中,picture_type_bit_flag变量可用于指定以帧为基础(例如,渐进模式或交错模式)还是以字段为基础(例如,交错模式)发送经编码数据。可能的值的实例在下表中展示。
picture_type_bit_flag | 类型的值 |
0 | 帧 |
1 | 字段 |
如果指定字段图片类型(例如,经由来自上表的值1),则可提供另一变量以指示特定字段。举例来说,变量field_type_bit_flag可用于指定在picture_type_bit_flag等于1的情况下所发送数据是针对顶部字段还是底部字段。field_type_bit_flag的实例值在下文展示。
field_type_bit_flag | 类型的值 |
0 | 顶部 |
1 | 底部 |
如上文陈述的“时间预测和信令”章节中所论述,可限定若干变量以向解码器传信时间预测配置和设定。特定变量可在图片或帧层级处限定(例如,以应用于特定图片或帧)。此章节中进一步论述一些实例。
在一种情况下,可传信temporal_refresh_bit_flag变量以指定是否应针对图片刷新时间缓冲器。如果等于1,则此可指示时间缓冲器的刷新(例如,将缓冲器内的值设定为零,如上文所描述)。
在一种情况下,可传信temporal_signalling_present_flag变量以时间信令系数群组是否存在于位流中。如果temporal_signalling_present_flag不存在,则在temporal_enabled_flag等于1且temporal_refresh_bit_flag等于0的情况下,其可推断为等于1;否则,其可推断为等于0。
最后,变量的集合可用于指示和控制增强层内的滤波,例如如相对于各图的实例所描述。在一种情况下,层级1处(例如,由图2、5A到5C、24或26中的滤波组件232、532、2426或2632)应用的滤波可使用来自编码器的信令选择性地控制。在一种情况下,可提供信令以接通和断开滤波。举例来说,level1_filtering_enabled_flag可用于指定是否应使用层级1解块滤波器。值0可指示停用滤波,且值1可指示启用滤波。当level1_filtering_enabled_flag不存在时,其可推断为等于0(即,如果不存在旗标,则默认地停用滤波)。尽管相对于层级1增强子层中解码的残差的滤波呈现实例,但在其它实例中(例如,作为补充或替代),滤波还可选择性地应用于层级2增强子层中解码的残差。在使用类似于本文描述的实例的信令的层级中的一个或多个中,滤波可断开和接通,和/或根据所限定变量配置。
如上文的实例中所描述,在某些实例中,抖动可应用于输出的经解码图片。这可涉及应用由随机数生成器生成的随机值以减少由量化产生的视觉假影。可使用信令信息控制抖动。
在一个实例中,dithering_control_flag可用于指定是否应应用抖动。其可以与残差滤波控制旗标类似的方式应用。举例来说,值0可指示停用抖动,且值1可指示启用抖动。当dithering_control_flag不存在时,其可推断为等于0(例如,按照上文的层级滤波停用)。还可限定一个或多个变量以指定额外随机数将具有的值范围。举例来说,可限定变量dithering_strength以指定用于随机数的缩放因子。其可用于设定[-dithering_strength,+dithering_strength]之间的范围。在某些实例中,其可具有0和31之间的值。
在某些实例中,可限定和应用不同类型的抖动。在此情况下,可从编码器传信抖动类型和/或每一抖动类型的参数。举例来说,变量dithering_type可用于指定将什么类型的抖动应用于最终经重建图片。变量dithering_type的实例值在下表中陈述。
dithering_type | 类型的值 |
0 | 无 |
1 | 均一 |
2-3 | 保留 |
数据块单元经编码数据语义
以下章节陈述可如何配置经编码数据的一些实例。在某些实例中,经编码数据的例如涉及给定系数的一部分被称作组块(例如,相对于图9A)。图9A中的数据结构920或图21中指示的2130可被称为“表面”。表面可存储为多维阵列。多维阵列中的第一维度可指示不同平面且使用平面索引-planeIdx;多维阵列中的第二维度可指示不同层级,即与增强子层相关,且使用层级索引-levelIdx;且多维阵列中的第三维度可指示不同层,即与不同系数(例如,系数块内的不同位置,其可被称为用于2×2变换的A、H、V和D系数)相关),且使用层索引-layerIdx。此在图9A中示出,其中存在nPlanes、nLevels和nLayers(其中这些指示每一维度中有多少要素)。
如相对于图25和26的实例所描述,在某些情况下,可添加额外自定义层。举例来说,除系数层外,时间信令还可编码为非系数层。还可添加其它用户信令作为自定义层。在其它情况下,例如除如图9A中所指示结构化的主“表面”阵列外,还可为这些用途提供单独的“表面”阵列。
在某些情况下,“表面”阵列可具有指示例如图21A中展示的拼片等分组的另一维度。“表面”阵列的布置也是灵活的,例如拼片可布置在层下方,如图21B中所展示。
返回到上文语法章节的实例,可限定涉及表面的若干控制旗标。一个控制旗标可用于指示表面阵列内是否存在经编码数据。举例来说,surfaces[planeIdx][levelIdx][layerIdx].entropy_enabled_flag可用于指示surfaces[planeIdx][levelIdx][layerIdx]中是否存在经编码数据。类似地,控制旗标可用于指示如何编码特定表面。举例来说,surfaces[planeIdx][levelIdx][layerIdx].rle_only_flag可指示仅使用游程长度编码还是使用游程长度编码和前缀(即,霍夫曼)编码编码surfaces[planeIdx][levelIdx][layerIdx].中的数据。
如果时间数据被配置成额外表面集合,则temporal_surfaces阵列可以具备反映在一个还是两个增强层级上执行时间处理的维度。相对于图3A和图24到26中展示的实例,可提供一维temporal_surfaces[planeIdx]阵列,其中每一平面具有不同时间表面(例如,提供用于层级2时间处理的信令,其中所有系数使用相同信令)。在其它实例中,在更具选择性的时间处理的情况下,时间表面阵列可扩展为更多维度以反映不同层级、不同层(即,系数群组)和不同拼片中的一个或多个。
相对于上文语法实例的时间表面信令,可提供与其它表面类似的旗标。举例来说,temporal_surfaces[planeIdx].entropy_enabled_flag可用于指示temporal_surfaces[planeIdx]中是否存在经编码数据,且temporal_surfaces[planeIdx].rle_only_flag可用于指示仅使用游程长度编码还是使用游程长度编码和前缀(即,霍夫曼)编码编码temporal_surfaces[planeIdx]中的数据。
数据块单元经编码拼片数据语义
与上文针对表面陈述的变量类似的变量可用于使用拼片的经编码数据。在一种情况下,经编码拼片数据块单元,例如拼片数据,可具有类似的surfaces[planeIdx][levelIdx][layerIdx].rle_only_flag。然而,其可具有反映分割成拼片的额外维度(或变量集合)。此可使用数据结构surfaces[planeIdx][levelIdx][layerIdx].tiles[tileIdx]指示。如上文实例中陈述,拼片数据还可具有surfaces[planeIdx][levelIdx][layerIdx].tiles[tileIdx].entropy_enabled_flag,其针对每一拼片指示相应拼片中(例如,surfaces[planeIdx][levelIdx][layerIdx].tiles[tileIdx]中)是否存在经编码数据。
拼片数据结构还可具有类似于上文针对表面描述的相关联时间处理信令。举例来说,temporal_surfaces[planeIdx].rle_only_flag可再次用于指示仅使用游程长度编码还是使用游程长度编码和前缀(即,霍夫曼)编码编码temporal_surfaces[planeIdx]中的数据。每一拼片可具有temporal_surfaces[planeIdx].tiles[tileIdx].entropy_enabled_flag,其指示temporal_surfaces[planeIdx].tiles[tileIdx]中是否存在经编码数据。
拼片数据可具有涉及拼片的使用的一些额外数据。举例来说,变量entropy_enabled_per_tile_compressed_data_rle可含有每一图片拼片的RLE编码信令。变量compressed_size_per_tile_prefix还可用于指定每一图片拼片的经编码数据的压缩大小。变量compressed_prefix_last_symbol_bit_offset_per_tile_prefix可用于指定前缀(即,霍夫曼)编码编码数据的最后符号位偏移。使用此信令的解码实例在下文稍后陈述。
数据块单元表面语义
上文描述的较高层级“表面”阵列可另外具有一些相关联数据结构。举例来说,变量surface.size可指定经熵编码数据的大小,且surface.data可含有经熵编码数据本身。变量surface.prefix_last_symbol_bit_offset可用于指定前缀(即,霍夫曼)编码编码数据的最后符号位偏移。
数据块单元额外信息语义
额外信息数据结构可用于传送例如可随经编码视频使用的额外信息。额外信息可根据一个或多个额外信息类型限定。这些可经由additional_info_type变量指示。作为实例,额外信息可以补充增强信息(SEI)消息或视频可用性信息(VUI)消息的形式提供。相对于稍后实例提供这些形式的额外信息的其它实例。当使用SEI消息时,payload_type变量可指定SEI消息的有效负载类型。
数据块单元填充语义
在某些情况下,可能需要用填充符来填充NAL单元。举例来说,可能需要这样做以当增强层含有大量0值时(即,当增强层的大小为小时,这可取决于正被编码的图片实现)维持限定的恒定位速率。可使用有效负载的恒定填充符字节值构造填充符单元。填充符字节可以是等于0xAA的字节。
应注意,上文陈述的实例语法和语义仅以举例的方式提供。其可以允许构造合适的实施方案。然而,应注意,变量名称和数据格式可不同于所描述的变量名称和数据格式,同时维持类似的功能性。此外,并非需要所有特征,且取决于实施方案要求,某些特征可省略或变化。
解码过程的详细实例实施方案
下文陈述解码过程的一个实施方案的详细实例。参考图27的方法2700描述详细实例。下文的描述参考上文语法和语义章节中限定的一些变量。详细实例可被视为图2、5A到5C、24和26中展示的示意解码器布置的一个可能实施方案。确切地说,下文的实例集中于增强层的解码方面,其可视为增强编解码器的实施方案。增强编解码器编码和解码残差数据流。这不同于对比的SVC和SHVC实施方案,在对比的SVC和SHVC实施方案中,编码器在每一空间分辨率水平下接收视频数据作为输入,且解码器在每一空间分辨率水平下输出视频数据。如此,对比的SVC和SHVC可视为一组编解码器的并行实施方案,其中每一编解码器具有视频输入/视频输出编码结构。另一方面,本文中所描述的增强编解码器在每一空间分辨率水平下接收残差数据并且还输出残差数据。举例来说,在SVC和SHVC中,每一空间分辨率水平的输出不求和以生成输出视频-这将是没有意义的。
如上文“语法”章节中陈述,语法可经限定以处理所接收位流。“语法”章节陈述实例方法,例如从标头随附数据检索指示符,其中可从标头的预定位置检索指示符,且所述指示符可指示根据以下章节的语法的一个或多个动作。作为实例,指示符可指示是否执行使残差相加和/或预测残差的步骤。指示符可指示解码器是否应执行特定操作,或被配置成执行特定操作,以便解码位流。指示符可指示是否已经在编码器级执行此些步骤。
大体概要
转向图27A的方法2700,到当前描述的解码过程的输入为增强位流2702(也被称为低复杂性增强视频编码位流),其含有由多达两个子层组成的增强层。解码过程的输出为:1)将增强残差平面(子层1残差平面)添加到从基础解码器经重建图片获得预备图片的集合;以及2)将增强残差平面(子层2残差平面)添加到由向上缩放以及经由经预测残差修改预备图片1和子层1残差平面的组合而产生的预备输出图片。
如上文所描述,且参考图9A、21A和21B,数据可布置成组块或表面。每一组块或表面可根据大体上类似于下文所描述和各图中所展示的实例过程解码。如此,解码过程对数据块操作,如上文章节中所描述。
现将陈述方法2700的框的概要。在后续子章节中更详细地描述每一框。
在方法2700的框2704中,解码有效负载数据块单元的集合。这允许识别和提取位流的在NAL单元标头之后的部分(即,有效负载数据块单元)。
在方法2700的框2706中,针对图片的解码过程接收有效负载数据块单元,且开始使用上文陈述的语法要素解码图片图片可经循序解码以在解码之后输出视频序列。框2706提取(数据)表面的集合和时间表面的集合,如上文所描述。在某些情况下,可在此框处应用熵解码。
在方法2700的框2710中,应用用于基础编码数据提取的解码过程以获得经重建的经解码基础样本的集合(recDecodedBaseSamples)。此可包括应用先前实例的基础解码器。如果单独地实施基础编解码器或解码器,则增强编解码器可指示特定帧的基础解码(包含帧的子部分和/或帧的特定平面)。经重建的经解码基础样本的集合(例如,图23中2302)接着传递到框2712,在该处,可应用任选的第一组向上缩放以生成预备中间图片(例如,图23中的2304)。举例来说,框2712可对应于图26的向上缩放器2608。框2712的输出是经重建层级1基础样本的集合(其中层级0可包括基础层级分辨率)。
在框2714处,执行用于增强子层1(即,层级1)编码数据的解码过程。此可接收指示变换大小(nTbs)、用户数据启用旗标(userDataEnabled)和步宽(即,用于解量化)的变量,以及层级1熵解码的经量化变换系数(TransformCoeffQ)和经重建层级1基础样本(recL1BaseSamples)的块。还可传递平面索引(IdxPlanes)以指示哪一平面正被解码(在单色解码中,可不存在索引)。变量和数据可使用上述语法从位流的有效负载数据单元提取。
框2714展示为包括若干子框,其对应于先前实例的逆量化、逆变换和层级1滤波(例如,解块)组件。在第一子框2716处,执行用于解量化的解码过程。此可从上述语法接收下文更详细地描述的若干控制变量。可输出解量化系数编码单元或块的集合。在第二子框2718处,执行用于变换的解码过程。可输出经重建残差的集合(例如,层级1残差的第一集合)。在第三子框2720处,可应用用于层级1滤波器的解码过程。此过程的输出可以是经重建和滤波(即,经解码)残差的第一集合(例如,图23中的2308)。在某些情况下,残差数据可布置成NxM块以便在子框2720处应用NxM滤波器。
在框2730处,组合从框2714输出的经重建层级1基础样本和经滤波残差。此在图中参考为针对层级1块的残差重建。在此框的输出处是经重建层级1样本的集合(例如,图23中的2310)。这些可视为视频流(如果针对彩色信号组合多个平面)。
在框2732处,应用第二向上缩放过程。此向上缩放过程取从框2730输出的组合中间图片(例如,图23中的2310)且生成预备输出图片(例如,图23中的2312)。其可包括应用图26中的向上缩放器2687或先前描述的上取样组件中的任一个。
图27中,框2732包括若干子框。在框2734处,取决于所传信的上取样器类型实施切换。子框2736、2738、2740和2742表示最接近样本上取样过程、双线性上取样过程、三次上取样过程和经修改三次上取样过程的相应实施方案。子框可视需要扩展以适应新的上取样方法(例如,比如本文中所描述的神经网络上取样)。以例如经重建的上取样样本的集合(例如,图23中的2312)等共同格式提供来自子框2736、2738、2740和2742的输出,且所述输出连同较低分辨率经重建样本的集合(例如,作为来自框2730的输出)一起传递到经预测残差过程2744。此可实施本文中所描述的经修改上取样以应用预测平均值部分。框2744和框2732的输出为经重建的层级2经修改上取样样本的集合(recL2ModifiedUpsampledSamples)。
框2746展示用于增强子层2(即,层级2)编码数据的解码过程。以与框2714类似的方式,其接收指示步宽(即,用于解量化)的变量,以及层级2熵解码的经量化变换系数(TransformCoeffQ)和经重建的层级2经修改上取样样本的集合(recL2ModifiedUpsampledSamples)的块。还传递平面索引(IdxPlanes)以指示哪一平面正被解码(在单色解码中,可不存在索引)。变量和数据可再次使用上述语法从位流的有效负载数据单元提取。
框2746包括若干时间预测子框。在当前的实例中,时间预测应用于增强子层2(即,层级2)。框2746可因此接收如上文所指示的涉及时间处理的包含变量temporal_enabled、temporal_refresh_bit、temporal_signalling_present和temporal_step_width_modifier的更多变量,以及提供时间信令数据的数据结构TransformTempSig和TileTempSig。
展示两个时间处理子框:第一子框2748,其中使用TransformTempSig和TileTempSig数据结构应用用于时间预测的解码过程;以及第二子框2750,其应用拼片时间刷新(例如,如参考图11A到13B的实例所解释)。子框2750被配置成取决于刷新信令将时间缓冲器的内容设定为零。
在子框2752和2756处,用于解量化和变换的解码过程以类似于子框2718和2720(后者应用于层级1数据)的方式应用于层级2数据。从子框2756处的逆变换处理输出的经重建残差的第二集合接着在子框2756处添加到从子框2748输出的经时间预测的层级2残差的集合;此实施时间预测的一部分。框2746的输出为经重建的层级2残差的集合(resL2Residuals)。
在框2758处,在针对增强子层2的残差重建过程中组合经重建的层级2残差(resL2Residuals)和经重建的层级2经修改上取样样本(recL2ModifiedUpsampledSamples)。此框的输出为层级2处的经重建图片样本的集合(recL2PictureSamples)。在框2760处,层级2处的这些经重建图片样本可经受应用抖动滤波器的抖动过程。到此过程的输出为层级2处的经重建的抖动图片样本的集合(recL2DitheredPictureSamples)。这些可在框2762处检视为输出视频序列(例如,对于组成视频帧的多个连续图片,其中平面可组合成多维阵列以供在显示装置上检视)。
有效负载数据块单元过程
现将更详细地描述在框2704处执行的操作。到此过程的输入为增强层位流。增强层位流囊封于NAL单元中,例如如上文所指示。NAL单元可用于使增强层信息与基础层解码信息同步。
位流组织于NAL单元中,其中每一NAL单元包含一个或多个数据块。对于每一数据块,使用process_block()语法结构(如上文“语法”章节中所展示)来解析块标头(在某些情况下,仅块标头)。其可基于块标头中的信息调用相关process_block_()语法要素。包含经编码数据的NAL单元可包括至少两个数据块:图片配置数据块和经编码(拼片)数据块。可能的不同数据块的集合在展示可能的有效负载类型的上表中指示。
序列配置数据块可在位流开始时发生至少一次。全局配置数据块可至少针对每个瞬时解码刷新图片发生。经编码(拼片)数据块之前可以是图片配置数据块。当NAL单元中存在时,全局配置数据块可以是NAL单元中的第一数据块。
图片增强解码过程
本章节更详细地描述在框2706处执行的图片增强解码过程。
此过程的输入可为位流的在上文陈述的“过程块语法”章节中描述的标头解码过程之后的部分。输出为属于正被解码的图片增强的经熵编码的变换系数。经编码图片之前可以是上文“过程有效负载-图片配置”和“数据块单元图片配置语义”章节中描述的图片配置有效负载。
图片增强经编码数据可接收为payload_encoded_data,用于此数据的处理的语法在“过程有效负载-经编码数据”章节中描述。用于图片增强经编码数据的处理的输入可包括:含有平面的数目(其可取决于变量processed_planes_type_flag的值)的变量nPlanes、变量nLayers(其可取决于transform_type的值),和变量nLevels(其指示待处理的层级的数目)。这些在图9A中展示。如果使用和处理两个增强子层,则变量nLevels可以是恒定的,例如等于2。
框2706过程的输出可包括具有要素surfaces[nPlanes][nLevels][nLayers]的(nPlanes)x(nLevels)x(nLayers)表面的集合(例如,布置为阵列-优选为多维)。如果temporal_signalling_present_flag等于1,则还可检索具有要素temporal_surface[nPlanes]的大小nPlanes的额外时间表面。可使用以下处理导出变量nPlanes:
且可使用以下处理导出变量nLayers:
经编码数据可组织为组块,如图9A(以及其它)中所展示。组块total_chunk_count的总数目可计算为:nPlanes*nLevels*nLayers*(no_enhancement_bit_flag==0)+nPlanes*(temporal_signalling_present_flag==1)。对于每一平面,提取若干(例如,多达2个)增强子层。对于每一增强子层,可提取若干((例如,对于4×4变换,多达16个)变换系数的系数群组。此外,如果temporal_signalling_present_flag等于1,则可提取具有增强子层2的时间数据的额外组块。在此处理内,等于1的变量levelIdx的值可用于指代增强子层1,且等于2的变量levelIdx的值可用于指代增强子层2。在解码过程期间,可以一次2个位的方式读取组块。surfaces[planeIdx][levelIdx][layerIdx].entropy_enabled_flag、surfaces[planeIdx][levelIdx][layerIdx].rle_only_flag、temporal_surfaces[planeIdx].entropy_enabled_flag和temporal_surfaces[planeIdx].rle_only_flag的值可导出如下:
与经熵编码的变换系数和经熵编码的时间信号系数群组相关联的数据可根据entropy_enabled_flag和rle_only_flag字段的相应值导出。此处,熵编码可包括仅游程长度编码或前缀/霍夫曼编码和游程长度编码。surfaces[planeIdx][levelIdx][layerIdx].data的内容提供与特定数据组块相关的经熵编码的变换系数的开始地址,且temporal_surfaces[planeIdx].data提供与特定数据组块相关的经熵编码的时间信号系数群组的开始地址。这些数据部分可如下文所陈述而导出:
长度surfaces[planeIdx][levelIdx][layerIdx].size且从surfaces[planeIdx][levelIdx][layerIdx].data address开始的字节的块中所含的变换系数可接着被提取且传递到熵解码过程,所述熵解码过程可应用上文关于图10A到10I所描述的方法,和/或下文的描述中更详细地描述的方法。
如果temporal_signalling_present_flag被设定为1,则长度temporal_surfaces[planeIdx].size且从temporal_surfaces[planeIdx].data address开始的字节的块中所含的时间信号系数群组也可传递到类似的熵解码过程。
图片增强解码过程-拼片数据
用于图片增强经编码拼片数据(payload_encoded_tiled_data)的解码过程可视为上文描述的过程的变型。用于此过程的语法在标题为“过程有效负载-经编码拼片数据”的上文章节中描述。
到此过程的输入可为:如上所述的变量nPlanes、nLayers和nLevels;变量nTilesL2,其等于Ceil(Picture_Width/Tile_Width)xCeil(Picture_Height/Tile_Height)且指代层级2子层中拼片的数目;变量nTilesL1,其指代层级1子层中拼片的数目且等于:(a)nTilesL2,条件是变量scaling_mode_level2等于0,(b)Ceil(Ceil(Picture_Width/2/Tile_Width)xCeil(Ceil(Picture_Height)/Tile_Height),条件是变量scaling_mode_level2等于1,以及(c)Ceil(Ceil(Picture_Width/2)/Tile_Width)xCeil)(Ceil(Picture_Height/2)/Tile_Height),条件是变量scaling_mode_level2等于2;Picture_Width和Picture_Height,其指代如从变量resolution_type的值导出的图片宽度和高度;以及Tile_Width和Tile_Height,其指代如从变量tile_dimensions_type的值导出的拼片宽度和高度。此处参考的变量的另外细节在上文的数据块语义章节中陈述。
此过程的输出为具有要素surfaces[nPlanes][nLevels][nLayer]的(nPlanes)x(nLevels)x(nLayer)阵列“表面”。如果temporal_signalling_present_flag被设定为1,则输出还可包括具有要素temporal_surface[nPlanes]的大小nPlanes的额外时间表面。变量nPlanes和nLayers的值可如上文章节中陈述而导出。
如上所述,经编码数据组织为组块。在此情况下,每一组块可对应于拼片,例如图21A中展示的部分2140中的每一个。组块的总数目total_chunk_count被计算为:nPlanes*nLevels*nLayers*(nTilesL1+nTilesL2)*(no_enhancement_bit_flag==0)+nPlanes*nTilesL2*(temporal_signalling_present_flag==1)。增强图片数据组块可以阶层方式组织,如图21A和21B中的一个中展示。根据本文中所描述的实例,对于每一平面,多达2层的增强子层可经提取,且对于每一增强子层,多达16个变换系数的系数群组可经提取。具有不同数目的子层或不同变换的其它实施方案可具有不同数目的经提取层级和层。如前所述,因为本实例应用层级2中的时间预测,如果temporal_signalling_present_flag被设定为1,则提取具有增强子层2的时间数据的额外组块。变量levelIdx可如下文陈述而使用。
在此拼片情况中,可以一次1位的方式读取每一组块。surfaces[planeIdx][levelIdx][layerIdx].rle_only_flag,以及如果temporal_signalling_present_flag被设定为1,则temporal_surfaces[planeIdx].rle_only_flag可导出如下:
surfaces[planeIdx][levelIdx][layerIdx].tiles[tileIdx].entropy_enabled_flag,以及如果temporal_signalling_present_flag被设定为1,则temporal_surfaces[planeIdx].tiles[tileIdx].entropy_enabled_flag可导出如下:
根据entropy_enabled_flag和rle_only_flag字段的值,surfaces[planeIdx][levelIdx][layerIdx].tiles[tileIdx].data的内容(即,指示与特定数据组块相关的仅RLE或前缀编码和RLE编码系数的开始),以及如果temporal_signalling_present_flag被设定为1,则根据entropy_enabled_flag和rle_only_flag字段的值,temporal_surfaces[planeIdx].tiles[tileIdx].data的内容(指示与特定数据组块相关的仅RLE或前缀编码和RLE编码时间信号系数群组的开始)可导出如下:
长度surfaces[planeIdx][levelIdx][layerIdx].tiles[tileIdx].size且从surfaces[planeIdx][levelIdx][layerIdx].tiles[tileIdx].data address开始的字节的块中所含的系数可接着传递到熵解码过程,如其它地方所描述。如果temperal_signalling_enabled_flag被设定为1,则长度temporal_surfaces[planeIdx].tiles[tileIdx].size且从temporal_surfaces[planeIdx].tiles[tileIdx].data address开始的字节的块中所含的时间信号系数群组也针对熵解码传递。
用于增强子层1(L-1)经编码数据的解码过程
此章节描述可作为图27中的框2714的一部分执行的特定过程。此过程的结果可以是增强残差表面(即,层级1残差的第一集合)添加到预备中间图片。
作为第一操作,可导出层级1图片的维度。残差表面的层级1维度与例如如由框2712输出的预备中间图片相同。如果scaling_mode_level2(如上文所描述)等于0,则层级1维度可被视为与从resolution_type导出(例如,也在上文参考)的层级2维度相同。如果scaling_mode_level2等于1,则层级1长度可设定为与如从resolution_type导出的层级2长度相同,同时可通过使如从resolution_type导出的层级2宽度减半来计算层级1宽度。如果scaling_mode_level2等于2,则将通过使如从resolution_type导出的层级2维度减半来计算层级1维度。
用于层级1编码数据块(例如,图27中的框2714)的一般解码过程可取以下作为输入:样本位置(xTb0,yTb0),其指定当前变换块的左上样本相对于当前图片的左上样本;变量nTbS,其指定当前变换块的大小,例如从如上文所描述的变量transform_type的值导出-如果transform_type等于0,则nTbS=2,且如果transform_type等于1,则nTbS=4;大小(nTbS)x(nTbS)的阵列TransformCoeffQ,其指定层级1熵解码的经量化变换系数;大小(nTbS)x(nTbS)的阵列recL1BaseSamples,其指定由基础解码器或较早的向上缩放产生的当前块的预备中间图片经重建样本;stepWidth value,其如上文陈述从变量step_width_level1的值导出,例如此可通过将step_width_level1向左移位一位来获得(即,step_width_level1<<1);变量IdxPlanes,其指定变换系数属于哪一平面;以及变量userDataEnabled,其从变量usep_data_enabled的值导出。
过程2714的输出可以是具有要素resL1FilteredResiduals[x][y]的残差resLlFilteredResiduals的(nTbS)x(nTbS)阵列。可计算与相对于图片的不同块位置相关的残差的阵列。
指定当前变换块的左上样本相对于当前图片的左上样本的样本位置(xTbP,yTbP)可导出如下:(xTbP,yTbP)=(IdxPlanes==0)?(xTb0,yTb0):(xTb0>>ShifiWidthC,yTb0>>ShifiHeightC),例如其中取决于变换系数涉及哪一平面,P可与任一明度或色度平面相关。可如上文陈述导出ShiftWidthC和ShiftHeightC。
如果no_enhancement_bit_flag等于0,则可存在增强数据,以下有序步骤适用:
1)如果nTbs等于4,则TransCoeffQ(1)(1)可在变量userDataEnabled被设定为1的情况下向右移位两个位(>>2),或在userDataEnabled被设定为2的情况下向右移位六个位(>>6)。此外,如果TransCoeffQ(1)(1)的最后位被设定为0,则TransCoeffQ(1)(1)可向右移位一个位(>>1);否则(例如,如果TransCoeffQ(1)(1)的最后位被设定为1),TransCoeffQ(1)(1)向右移位一个位(>>1)且TransCoeffQ(1)(1)被设定为具有负值。
2)如果nTbs等于2,则TransCoeffQ(0)(1)在变量userDataEnabled被设定为1的情况下向右移位两个位(>>2),或在userDataEnabled被设定为2的情况下向右移位六个位(>>6)。此外,如果TransCoeffQ(0)(1)的最后位被设定为0,则TransCoeffQ(0)(1)向右移位一个位(>>1);否则(例如,如果TransCoeffQ(0)(1)的最后位被设定为1),TransCoeffQ(0)(1)向右移位一个位(>>1)且TransCoeffQ(0)(1)被设定为具有负值。
3)在变换大小设定成等于nTbS、阵列TransformCoeffQ具有大小(nTbS)x(nTbS)及变量stepWidth作为输入的情况下调用如下文所描述的子框2716的解量化过程,且输出为(nTbS)x(nTbS)阵列或解量化系数dequantCoeff。
4)在明度位置(xTbX,yTbX)、变换大小设定成等于nTbS、阵列dequantCoeff具有大小(nTbS)x(nTbS)作为输入的情况下调用子框2718的变换过程,且输出为经重建层级1残差resL1Residuals的(nTbS)x(nTbS)阵列。
5)在明度位置(xTbX,yTbX)、阵列resL1Residuals具有大小(nTbS)x(nTbS)作为输入的情况下调用子框2720的层级1滤波器过程,且输出为经重建的经滤波层级1残差resL1FilteredResiduals的(nTbS)x(nTbS)阵列。
可针对组成平面或帧的所有编码单元重复上述步骤。如果no_enhancement_bit_flag等于1,则不应用增强。在此情况下,大小(nTbS)x(nTbS)的阵列resLlFilteredResiduals可设定为仅含有零。
遵循上文所论述的操作,在变换块位置(xTb0,yTb0)、变换块大小nTbS、变量IdxPlanes、(nTbS)x(nTbS)阵列resL1FilteredResiduals和(nTbS)x(nTbS)阵列recL1BaseSamples作为输入的情况下调用用于每一平面的图片重建过程,即图27的框2730且如下文更详细地描述。
用于增强子层2(L-2)经编码数据的解码过程
框2746处的用于增强子层2(层级2)经编码数据的解码过程可类似于上文描述的用于增强子层1(层级1)经编码数据的解码过程。此过程的结果为层级2增强残差平面添加到向上缩放的层级1增强经重建图片。
作为第一操作,可导出层级2图片的维度。这些可从上文描述的变量resolution_type导出。层级2残差平面的维度可与层级2图片的维度相同。
用于层级2编码数据块的一般解码过程可取以下作为输入:样本位置(xTb0,yTb0),其指定当前变换块的左上样本相对于当前图片的左上样本;变量nTbS,其指定从变量transform_type的值导出的当前变换块的大小(例如,如上文所描述-在其它实例中,每一层级可具有不同变换大小);变量temporal_enabled_flag;变量temporal_refresh_bit_flag;变量temporal_signalling_present_flag;变量temporal_step_width_modifier;大小(nTbS)x(nTbS)的阵列recL2ModifiedUpsampledSamples,其指定由图27中的向上缩放过程2732产生的上取样的经重建样本;大小(nTbS)x(nTbS)的阵列TransformCoeffQ,其指定层级2熵解码的经量化变换系数;如果变量temporal_signalling_present_flag等于1且temporal_tile_intra_signalling_enabled_flag等于1,则变量TransformTempSig,其对应于位置(xTb0>>nTbs,yTb0>>nTbs)处TempSigSurface中的值(例如,见时间处理章节);如果另外temporal_tile_intra_signalling_enabled_flag被设定为1,则变量TileTempSig,其对应于位置((xTb0%32)*32,(yTb0%32)*32)处TempSigSurface中的值;stepWidth value,其如上文“语义”章节中陈述从变量step_width_level2的值导出;以及变量IdxPlanes,其指定变换系数属于哪一平面。这些变量的另外细节在上文的“语法”和“语义”章节中陈述。
框2746如下文所描述处理所述输入,且输出具有要素resL2Residuals[x][y]的层级2残差resL2Residuals的(nTbS)x(nTbS)阵列。
样本位置(xTbP,yTbP)的导出可遵循类似于上文章节中针对层级1残差陈述的过程。
如果no_enhancement_bit_flag被设定为0,即将应用增强,则可进行以下有序步骤:
1)如果变量temporal_enabled_flag等于1且temporal_refresh_bit_flag等于0,则在明度位置(xTbY,yTbY)、变换大小设定成等于nTbS、变量TransformTempSig和变量TileTempSig作为输入的情况下调用时间预测过程(例如,如上文和下文的实例中所指定)。输出为大小(nTbS)x(nTbS)的经时间预测的层级2残差tempPredL2Residuals阵列。
2)如果变量temporal_enabled_flag等于1且temporal_refresh_bit_flag等于1,则如上文指定的经时间预测的层级2残差被设定为仅含有零。
3)如果变量temporal_enabled_flag等于1,temporal_refresh_bit_flag等于0,temporal_tile_intra_signalling_enabled_flag等于1且TransformTempSig等于0,则可修改变量stepWidth。其可使用temporal_step_width_modiffer,例如使用如下计算修改:Floor(stepWidth*(1-(Clip3(0,0.5,temporal_step_width_modifier)/255)))。
4)在变换大小设定成等于nTbS、大小(nTbS)x(nTbS)的阵列TransformCoeffQ和变量stepWidth作为输入的情况下调用如其它章节中所指定和展示为子框2752的解量化过程。输出为解量化系数的(nTbS)x(nTbS)阵列dequantCoeff。
5)在明度位置(xTbY,yTbY)、变换大小设定成等于nTbS、大小(nTbS)x(nTbS)的解量化系数dequantCoeff阵列作为输入的情况下调用如其它章节中指定且展示为子框2756的变换过程。输出为经重建层级2残差resL2Residuals的(nTbS)x(nTbS)阵列。
6)如果变量temporal_enabled_flag等于1,则大小(nTbS)x(nTbS)的经时间预测的层级2残差tempPredL2Residuals的阵列添加到经重建层级2残差resL2Residuals的(nTbS)x(nTbS)阵列,且经重建层级2残差resL2Residuals的阵列在明度位置(xTbY,yTbY)处存储到temporalBuffer。
按照层级1残差处理,可对组成图片多个编码单元的执行以上操作。因为编码单元不取决于其它编码单元,按照层级1残差处理,可针对大小(nTbS)x(nTbS)的编码单元并行地执行以上操作。
如果no_enhancement_bit_flag被设定为1,即至少针对层级2停用增强,则以下有序步骤适用:
1)如果变量temporal_enabled_flag等于1,temporal_refresh_bit_flag等于0且变量temporal_signalling_present_flag等于1,则在明度位置(xTbY,yTbY)、变换大小设定成等于nTbS、变量TransformTempSig和变量TileTempSig作为输入的情况下调用如其它章节和下文中所指定的时间预测过程。输出为大小(nTbS)x(nTbS)的阵列tempPredL2Residuals(例如,按照上文的操作1)。
2)如果变量temporal_enabled_flag等于1,temporal_refresh_bit_flag等于0且变量temporal_signalling_present_flag等于,则在明度位置(xTbY,yTbY)、变换大小设定成等于nTbS、变量TransformTempSig设定成等于0及变量TileTempSig设定成等于0作为输入的情况下调用时间预测过程,且输出为大小(nTbS)x(nTbS)的阵列tempPredL2Residuals。
3)如果变量temporal_enabled_flag等于1且temporal_refresh_bit_flag等于1,则大小(nTbS)x(nTbS)的阵列tempPredL2Residuals被设定为仅含有零。
4)如果变量temporal_enabled_flag等于1,则大小(nTbS)x(nTbS)的tempPredL2Residuals的阵列存储于(nTbS)x(nTbS)阵列resL2Residuals中,且resL2Residuals阵列在明度位置(xTbY,yTbY)处存储到temporalBuffer。否则,大小(nTbS)x(nTbS)的阵列resL2Residuals被设定为仅含有零。
在变换块位置(xTb0,yTb0)、变换块大小nTbS、变量IdxPlanes、(nTbS)x(nTbS)阵列resL2Residuals和(xTbY)x(yTbY)recL2ModifiedUpsampledSamples作为输入的情况下调用如框2758中所展示的用于每一平面的图片重建过程。输出为经重建图片。
用于时间预测的解码过程
例如子框2752等用于时间预测的解码过程可取以下作为输入:位置(xTbP,yTbP),其指定当前明度或色度变换块的左上样本相对于当前图片的左上明度或色度样本(其中,取决于变换系数属于哪一平面,P可与任一明度或色度平面相关);变量nTbS,其指定当前变换块的大小(例如,如在上文的实例中导出);变量TransformTempSig;以及变量TileTempSig。在此实例中,到此过程的输出为具有要素tempPredL2Residuals[x][y]的经时间预测的层级2残差tempPredL2Residuals的(nTbS)x(nTbS)阵列。
过程2752可应用以下有序步骤。
1)如果变量temporal_tile_intra_signalling等于1且xTbP>>5等于0且yTbP>>5等于0且TileTempSig等于1,则以位置(xTbP,yTbP)调用如下文所描述且展示为子框2750的拼片时间刷新过程。
2)如果变量TransformTempSig等于0,则tempPredL2Residuals[x][y]=temporalBuffer[xTbP+x][yTbP+y],其中x和y在[0,(nTbS-1)]范围内。否则,tempPredL2Residuals[x][y]全部设定为0。因而,此有条件地加载来自时间缓冲器的值以应用于层级2残差(例如,类似于其它实例的时间预测过程)。
拼片时间刷新
到子框2750处的拼片时间刷新的输入可包括位置(xTbP,yTbP),其指定当前明度或色度变换块的左上样本相对于当前图片的左上明度或色度样本(其中,取决于变换系数属于哪一平面,P可与任一明度或色度平面相关)。此过程的输出为,位置(xTbP,yTbP)处(即,与限定的拼片相关)temporalBuffer的大小32×32的区域的样本被设定为零。因此,可认为此过程复位或刷新如参考其它实例所描述的时间缓冲器。
用于解量化的解码过程
以下过程可应用于层级1和层级2数据块两者。其还可作为层级1解码管线的一部分在编码器中应用。其可实施实例的解量化组件。参考图27,其可用于实施子框2716和2752。用于解量化的解码过程概要
传递到此过程的每个变换系数群组属于特定平面和增强子层。其可能已使用均一量化器以死区缩放。量化器可使用非居中解量化偏移(例如,如参考图20A到20D所描述)。
解量化可视为用于变换系数的缩放过程。在一个实例中,解量化过程可配置如下。解量化过程可取以下作为输入:变量nTbS指定,其指定当前变换块的大小(例如,按照上文的其它过程);含有熵解码的经量化变换系数的大小(nTbS)x(nTbS)阵列TransformCoeffQ;变量stepWidth,其指定步宽值参数;变量levelIdx,其指定增强子层的索引(levelIdx=1用于增强子层1,且levelIdx=2用于增强子层2);变量dQuantOffset,其指定解量化偏移(如上文所描述,从变量dequant_offset导出);如果quant_matrix_mode不同于0,则大小1x nTbS2的阵列QmCoeff0(从变量qm_coefficient_0导出),且另外,如果quant_matrix_mode等于4,则大小1 x nTbS2的阵列QmCoeff1(从变量qm_coefficient_1导出);如果nTbS==2,则含有前一图片中使用的缩放参数阵列的大小(3*nTbS)x(nTbS)的阵列QuantScalerDDBuffer;以及如果nTbS==4,则含有前一图片中使用的缩放参数阵列的大小(3*nTbS)x(nTbS)的阵列QuantScalerDDSBuffer。
当前解量化过程的输出为具有要素d[x][y]的经解量化变换系数的(nTbS)x(nTbS)阵列d和经更新的阵列QuantMatrixBuffer。
对于经缩放变换系数d[x][y](其中x=0...nTbS-1,y=0...nTbS-1)和给定量化矩阵qm[x][y]的导出,可使用以下计算:d[x][y]=(TransformCoeffQ[x][y]*((qm[x+(levelIdxSwap*nTbS)][y]+stepWidthModifier[x][y])+appliedOffset[x][y]
上述解量化过程使用解量化偏移和步宽修改符。用于导出这些变量(例如呈appliedOffset[x][y]和stepWidthModifier[x][y]的形式)的过程在下文展示:
如上文其它实例中所描述,解量化可使用具有变量宽度的死区。变量deadZoneWidthOffset可根据以下过程导出:
if stepWidth>16:
deadZoneWidthOffset[x][y]=((1<<16)-((Aconst*(qm[x+(1evelIdxSwap*nTbs)][y]+stepWidthModifier[x][y]))+Bconst)>>1)*(qm[x+(levelIdxSwap*nTbs)][y]+stepWidthModifier[x][y])))>>16
if stepWidth<=16:
deadZoneWidthOffset[x][y]=stepWidth>>1
在以上计算中,可使用以下常数:Aconst=39;Bconst=126484;Cconst=9175;以及Dconst=79953。
变量dQuantOffsetActual[x][y]可计算如下:
变量levelIdxSwap可导出如下:
量化矩阵的导出
各种量化和解量化过程可使用量化矩阵。在上文的实例中,此被称作qm[x][y]。量化矩阵qm[x][y]含有待用于解码每一系数群组的实际量化步宽。在一个实例中,可如下文陈述导出量化矩阵qm[x][y],其取决于缩放模式和增强层级从预备量化矩阵qm_p[x][y]构建量化矩阵:
预备量化矩阵qm_p[x][y]可计算如下:
在此情况下,取决于所使用变换的大小,从量化矩阵缩放缓冲器的内容和stepWidth变量构建预备量化矩阵qm_p[x][y]。不同量化矩阵缩放缓冲器可用于每一变换,例如第一量化矩阵缩放缓冲器QuantScalerDDBuffer可用于2×2定向分解变换,且第二量化矩阵缩放缓冲器QuantScalerDDSBuffer可用于4×4定向分解变换。这些缓冲器可如下文所陈述而构造。
量化矩阵缩放缓冲器的导出
可基于默认矩阵参数的集合(其可本地存储在解码器处)、先前图片的缓冲器的内容和所传信量化矩阵系数的集合(例如,从编码器接收)中的一个或多个导出量化矩阵缩放缓冲器。针对实例中描述的变换大小中的每一个(例如,2×2和4×4)的缓冲器的导出可以是类似的。量化矩阵缩放缓冲器的初始化可取决于(即,由其控制)所传信或默认的(如果省略信号)量化矩阵模式(例如,如上文参考)。
用于2×2变换的缩放参数(呈量化矩阵缩放缓冲器QuantScalerDDBuffer[x][y]的形式)可导出如下(即,当变量nTbS等于2时)。首先,默认缩放参数default_scaling_dd[x][y]可设定如下:
应注意,这些值可取决于实施方案改变。
接着可基于当前图片是否为IDR图片来初始化阵列QuantScalerDDBuffer。如果当前图片为IDR图片,则QuantScalerDDBuffer可初始化为等于default_scaling_dd,如上文初始化。如果当前图片不是IDR图片,则QuantScalerDDBuffer矩阵可保持例如相对于先前图片不变。
初始化之后,可基于例如如由quant_matrix_mode的值所指示的量化矩阵模式修改量化矩阵缩放缓冲器QuantScalerDDBuffer。
如果quant_matrix_mode等于0且当前图片不是IDR图片,则QuantScalerDDBuffer可保持不变。
如果quant_matrix_mode等于1,则QuantScalerDDBuffer可等于default_scaling_dd。
如果quant_matrix_mode等于2,则可基于所传信量化矩阵系数QmCoeff0集合修改QuantScalerDDBuffer如下:
如果quant_matrix_mode等于3,则可基于所传信量化矩阵系数QmCoeff0集合修改QuantScalerDDBuffer如下:
如果quant_matrix_mode等于4,则可基于所传信量化矩阵系数QmCoeff1集合修改QuantScalerDDBuffer如下:
如果quant_matrix_mode等于5,则可基于两个所传信量化矩阵系数QmCoeff0和QmCoeff1的集合修改QuantScalerDDBuffer如下:
用于4×4变换的缩放参数的导出可类似于上文描述的过程。用于4×4变换的缩放参数(呈量化矩阵缩放缓冲器QuantScalerDDSBuffer[x][y]的形式)可导出如下(即,当变量nTbS等于4时)。首先,可设定默认缩放参数default_scaling_dds[x][y]:
再次,所展示的值仅为实例,且可针对不同实施方案变化。
接着可基于当前图片是否为IDR图片来初始化阵列QuantScalerDDSBuffer。如果当前图片为IDR图片,则QuantScalerDDSBuffer可初始化为等于default_scaling_dds,如上文初始化。如果当前图片不是IDR图片,则QuantScalerDDSBuffer矩阵可保持例如相对于先前图片不变。
初始化之后,可再次基于例如如由quant_matrix_mode的值所指示的量化矩阵模式修改量化矩阵缩放缓冲器QuantScalerDDSBuffer。
如果quant_matrix_mode等于0且当前图片不是IDR图片,则QuantScalerDDSBuffer可保持不变。
如果quant_matrix_mode等于1,则QuantScalerDDSBuffer可等于default_scaling_dds。
如果quant_matrix_mode等于2,则可基于所传信量化矩阵系数QmCoeff0集合修改QuantScalerDDSBuffer如下:
如果quant_matrix_mode等于3,则可基于所传信量化矩阵系数QmCoeff0集合修改QuantScalerDDSBuffer如下:
如果quant_matrix_mode等于4,则可基于所传信量化矩阵系数QmCoeff1集合修改QuantScalerDDSBuffer如下:
如果quant_matrix_mode等于5,则可基于两个所传信量化矩阵系数QmCoeff0和QmCoeff1的集合修改QuantScalerDDSBuffer如下:
大体向上缩放过程描述
向上缩放过程可在解码器处应用于图27中的框2712处的经解码基础图片和框2732处的组合中间图片。在当前实例中,可基于所传信缩放模式配置向上缩放。在下文描述的过程中,基于向上缩放到层级1的scaling_mode_level1的指示且基于向上缩放到层级2的scaling_mode_level2的指示配置向上缩放。
从经解码基础图片向上缩放到预备中间图片
如在框2712中执行的从经解码基础图片到预备中间图片的向上缩放可取以下输入:位置(xCurr,yCurr),其指定当前块的左上样本相对于当前图片分量的左上样本;变量IdxPlanes,其指定当前块的颜色分量;变量nCurrS,其指定一般解码过程中使用的残余块的大小;(nCurrS)x(nCurrS)阵列recDecodedBaseSamples,其指定当前块的经解码基础样本;变量srcWidth和srcHeight,其指定经解码基础图片的宽度和高度;变量dstWidth和dstHeight,其指定所得向上缩放图片的宽度和高度;以及变量is8Bit,其用于选择缩放待应用于的内核系数,例如如果样本为8位,则变量is8Bit将等于0,如果样本为16位,则变量is8Bit将等于1。框2712的输出可包括像元的(nCurrX)x(nCurrY)阵列recL1ModifiedUpsampledBaseSamples。
在要素阵列recL1ModifiedUpsampledBaseSamples[x][y]中,变量nCurrX和nCurrY可基于缩放模式导出。举例来说,如果scaling_mode_level1等于0,则不执行向上缩放,且recL1ModifiedUpsampledBaseSamples[x][y]被设定为等于recDecodedBaseSamples[x][y]。如果scaling_mode_level1等于1,则nCurrX=nCurrS<<1,且nCurrY=nCurrS。如果scaling_mode_level1等于2,则nCurrX=nCurrS<<1,且nCurrY=nCurrS<<1。
在框2712处应用的向上缩放可涉及可切换向上缩放滤波器的使用。经解码基础样本可由位流中传信的类型的向上缩放滤波器处理。向上缩放器的类型可从章节“数据块单元全局配置语义”中描述的过程导出。取决于变量upsample_type的值,可应用若干不同内核类型。举例来说,每一内核类型可被配置成接收图片样本的集合recDecodedBaseSamples作为输入,且产生经上取样图片样本的集合recL1UpsampledBaseSamples作为输出。可存在四个可能的向上缩放器内核(但取决于实施方案,这些可在数目和类型方面变化)。这些还在标题为“实例上取样方法”的章节中描述。在当前的实例中,如果upsample_type等于0,则可选择上文“最接近上取样”章节中描述的最接近样本向上缩放器。如果upsample_type等于1,则可选择上文章节“双线性上取样”中描述的双线性向上缩放器。如果upsample_type等于2,则可选择上文章节“三次上取样”中描述的双三次向上缩放器。如果upsample_type等于3,则可选择上文章节“三次上取样”中描述的经修改三次向上缩放器。
在某些情况下还可应用经预测残差(例如,预测平均值)解码计算,如下文相对于层级1到层级2向上缩放所描述。
一般向上缩放器可将待向上缩放的图片划分为2个区域:如图9B和9C中所展示的中心区域和边界区域。杜宇双线性和双三次内核,边界区域由四个片段组成:如图9B中所展示的顶部、左、右和底部片段,而对于最接近内核,由2个片段组成:如图9C中所展示的右和底部。这些片段由可设定为2个样本(对于最接近方法,1个样本)的边界大小参数限定。
层级1位深度转换
在某些实例中,向上缩放过程还可涉及位深度转换,例如不同层级(包含本文中所描述的层级0、1和2)可处理具有不同位深度的数据。每一层级的位深度可例如基于可从编码器传信到解码器的配置数据来配置。举例来说,每一层级的位深度和任何所需转换可取决于如上文实例中处理的全局配置中的位流字段的值。在一种情况下,位深度转换作为向上缩放过程的一部分执行。可使用位移位以及向上缩放中的下部和上部层级的位深度之间的差来应用位深度转换。
当应用框2712时,层级1的样本位深度可基于level1_depth_flag。如果level1_depth_flag等于0,则预备中间图片样本在与其针对经解码基础图片所表示相同的位深度下处理。如果level1_depth_flag等于1,则可取决于变量base_depth和变量enhancement_depth的值转换预备中间图片样本。变量base_depth指示基础层的位深度。在某些实例中,如果例如取决于如上文“数据块单元全局配置语义”章节中所指定的字段base_depth_type的值,base_depth被指派8和14之间的值,则取决于如前述语义章节中所指定的字段enhancement_depth_type的值,enhancement_depth被指派8和14之间的值。
如果base_depth等于enhancement_depth,则不需要进一步处理。
如果enhancement_depth大于base_depth,则层级1上取样基础样本阵列recL1ModifiedUpsampledBaseSamples可修改如下:
recL1ModifiedUpsampledBaseSamples[x][y]=
recL1ModifiedUpsampledBaseSamples[x][y]<<(enhancement_depth-base_depth)
如果base_depth大于enhancement_depth,则阵列recL1ModifiedUpsampledBaseSamples可修改如下:
recL1ModifiedUpsampledBaseSamples[x][y]=
recL1ModifiedUpsampledBaseSamples[x][y]>>(base_depth-enhancement_depth)
从组合中间图片向上缩放到预备输出图片
可在框2732处执行一组类似的过程。到此过程的输入可包括:位置(xCurr,yCurr),其指定当前块的左上样本相对于当前图片分量的左上样本;变量IdxPlanes,其指定当前块的颜色分量;变量nCurrS,其指定残余块的大小;(nCurrS)x(nCurrS)阵列recL1PictureSamples,其指定当前块的组合中间图片样本;变量srcWidth和srcHeight,其指定经重建基础图片的宽度和高度;变量dstWidth和dstHeight,其指定所得向上缩放图片的宽度和高度;以及变量is8Bit,其用于选择缩放待应用于的内核系数。如果样本为8位,则变量is8Bit可等于0,如果样本为16位,则变量is8Bit可等于1。过程2732的输出为具有要素recL2ModifiedUpsampledSamples[x][y]的预备输出图片样本的(nCurrX)x(nCurrY)阵列recL2ModifiedUpsampledSamples。
可基于缩放模式以与上文描述的过程类似的方式导出变量nCurrX和nCurrY。如果scaling_mode_level2等于0,则不执行向上缩放,且recL2ModifiedUpsampledSamples[x][y]被设定为等于recL1PictureSamples[x][y]。如果scaling_mode_level2等于1,则nCurrX=nCurrS<<1,且nCurrY=nCurrS。如果scaling_mode_level2等于2,则nCurrX=nCurrS<<1,且nCurrY=nCurrS<<1。
如上文章节中所描述,在框2732处执行的向上缩放还可涉及向上缩放滤波器的选择性应用,其中在位流中传信向上缩放类型。取决于变量upsample_type的值,每一内核类型可被配置成recL1PictureSamples作为输入且产生recL2UpsampledSamples作为输出。可存在四个可能的向上缩放器内核(但取决于实施方案,这些可在数目和类型方面变化)。这些还在标题为“实例上取样方法”的章节中描述。在当前的实例中,如果upsample_type等于0,则可选择上文“最接近上取样”章节中描述的最接近样本向上缩放器。如果upsample_type等于1,则可选择上文章节“双线性上取样”中描述的双线性向上缩放器。如果upsample_type等于2,则可选择上文章节“三次上取样”中描述的双三次向上缩放器。如果upsample_type等于3,则可选择上文章节“三次上取样”中描述的经修改三次向上缩放器。
可如上文参考图9B和9C的章节中所描述执行图片到多个区域的划分。
向上缩放之后,如果如上文所描述的predicted_residual_mode_flag等于1过程,则可在指定当前块的组合中间图片样本的(nCurrX)x(nCurrY)阵列recL2UpsampledSamples和(nCurrS)x(nCurrS)阵列recL1PictureSamples作为输入的情况下调用如上文和下文所描述(见图27中的子框2744)的经预测残差(即,经修改上取样)模式。此过程的输出可包括像元的(nCurrX)x(nCurry)阵列recL2ModifiedUpsampledSamples。否则,如果predicted_residual_mode_flag等于0,则不应用经预测残差模式,且recL2ModifiedUpsampledSamples[x][y]被设定为等于recL2UpsampledSamples[x][y](即,设定为上取样值,而无修改)。
层级2位深度转换
如上文所描述的用于层级1的位深度转换还可(或替代地)在从层级1向上缩放到层级2时应用。再次,可取决于全局配置中的位流字段的值执行位深度转换。
相对于层级2,可从level1_depth_flag导出样本位深度。如果level1_depth_flag等于1,则预备输出图片样本在与其针对预备中间图片所表示相同的位深度下处理。如果level1_depth_flag等于0,则取决于变量base_depth和enhancement_depth的值转换输出的中间图片样本。这些可如上文章节层级1位深度转换中所论述而导出。再次,如果base_depth等于enhancement_depth,则不需要进一步处理。如果enhancement_depth大于base_depth,则阵列recL2ModifiedUpsampledSamples修改如下:
recL2ModifiedUpsampledSamples[x][y]=
recL2ModifiedUpsampledSamples[x][y]<<(enhancement_depth-base_depth)
如果base_depth大于enhancement_depth,则阵列recL2ModifiedUpsampledSamples修改如下:
recL2ModifiedUpsampledSamples[x][y]=
recL2ModifiedUpsampledSamples[x][y]>>(base_depth-enhancement_depth)
最接近样本上取样器内核描述
下文的章节陈述关于上文描述的实例上取样器的额外细节。
第一上取样器是如子框2736中所展示和上文“最接近上取样”章节中论述的最接近样本上取样器。子框2736的实例取以下作为输入:变量srcX和srcY,其指定输入阵列的宽度和高度;变量dstX和dstY,其指定输出阵列的宽度和高度;以及输入样本的(srcX)xsrcY)阵列recInputSamples[x][y]。到此过程的输出为输出样本的(dstX)x(dstY)阵列recUpsampledSamples[x][y]。
最接近内核通过将当前源样本复制到目的地2×2网格上来执行向上缩放。此在图9D中展示且在上文的附随描述中描述。通过使两个轴上的源样本的索引加倍且加上+1以扩展范围以覆盖4个样本来计算目的地样本位置,如图9D中所展示。
每当(xCurr,yCurr)块属于图片或边界区域时(如图9D中所指定),可应用最接近样本内核向上缩放器,如以下有序步骤所指定。
如果scaling_mode_levelX等于1,则计算可如下:
如果scaling_mode_levelX等于2,则计算可如下:
双线性上取样器内核描述
在上文标题为“双线性上取样”的章节中描述双线性上取样器内核过程。现参考图27中的子框2738描述其它实例。到子框2738的输入和输出可与子框2736相同。双线性上取样内核由三个主要步骤组成。第一步骤涉及用定位于右下角处的基础样本构建源样本的2×2网格。第二步骤涉及执行双线性内插。第三步骤涉及将内插结果写入到目的地样本。双线性方法通过考虑与基础样本最接近的3个样本的值来执行上取样。基础样本是从其中导出目的地样本的地址的源样本。图9E展示内核中使用的实例源网格。
双线性内插是源网格中所有样本的经加权求和。所采用的权重取决于正导出的目的地样本。算法相对于目的地样本的位置应用对于源样本的位置的权重。如果计算左上目的地样本的值,则左上源样本将接收最大加权系数,而右下样本(对角相对)将接收最小加权系数,且剩余两个样本将接收中间加权系数。此在图9F中显示且在上文详细地描述。
图9G中示出实例双线性内核向上缩放器。其可如下文的以下有序步骤指定在(xCurr,yCurr)块不属于边界区域(如图9B和9C中所指定)时应用。
如果scaling_mode_levelX等于1,则可执行以下向上缩放计算:
如果scaling_mode_levelX等于2,则可执行以下向上缩放计算:
如下文的以下有序步骤指定在(xCurr,yCurr)块属于边界区域(如图9B和9C中所指定)时应用双线性内核向上缩放器。
如果scaling_mode_levelX等于1:
如果scaling_mode_levelX等于2:
如上文陈述的函数bilinear1D(in00,in10,out00,out10)可如下文所陈述而应用:
in00x3=in00*3 |
in10x3=in10*3 |
out00=((in00x3+in10+2)>>2) |
out10=((in00+in10x3+2)>>2) |
如上文陈述的函数bilinear2D(in00,in10,in01,in11,out00,out10,out01,out11)可如下文所陈述而应用:
三次上取样器内核描述
子框2740中展示的三次上取样器内核过程可如此章节中陈述而应用。输入和输出与上文章节中所描述相同。进一步参考图9H、9I和9J及标题为“三次上取样”的章节。
子框2740的三次上取样内核可划分成三个主要步骤。第一步骤涉及用定位于局部索引(2,2)处的基础样本构建源样本的4×4网格。第二步骤涉及执行双三次内插。第三步骤涉及将内插结果写入到目的地样本。
可通过使用4×4源网格执行三次上取样内核,所述4×4源网格随后乘以4×4内核。在源网格的生成期间,落在源帧的帧限制外部的任何样本被帧的边界处的源样本的值替换。此在图9H和9I中显示。
用于三次上取样过程的内核通常具有4×4系数网格。然而,目的地样本关于源样本的相对位置将产生不同系数集合,且因为上取样是二的因子,所以将存在上取样过程中使用的4×4内核的4个集合。这些集合由4维系数网格(2×2x4×4)表示。从固定参数集合计算双三次系数;核心参数(或双三次参数)和四个样条创建参数。这些可分别具有例如-0.6和[1.25,0.25,-0.75,-1.75]的值。滤波器的实施方案使用固定点计算。
三次内核向上缩放器在图9J中展示且在上文的“三次上取样”章节中更详细地描述。如果(xCurr,yCurr)块属于边界(如图9B和9C中所指定),则向上缩放器在时间上在一个方向(竖直和水平)上应用且遵循不同步骤。
实例系数的集合给定如下:
其中y=0...1是待与10位样本一起使用的系数,且y=2...3待与8位样本一起使用。因此,可根据以下伪码应用向上缩放器。
如上文参考的函数ConvolveHorizontal(input,output,x,y,kernel,border)可如下文陈述而应用:
如上文参考的函数ConvolveVertical(input,output,yDst0,yDst1,x,ySrc,kernel)可如下文陈述而应用:
如上文参考的函数ConvolveHorizontal(kernel,input,shift)可如下文陈述而应用:
accumulator=0 |
for(int32_t x=0;x<kernelSize;x++) |
accumulator+=input[x]*kernel[x] |
offset=1<<(shift-1) |
output=((accumulator+offset)>>shift) |
经修改三次上取样器内核描述
最后在本章节中,呈现子框2742的实例实施方案的简短描述。输入和输出可限定为与上文的其它上取样过程相同。经修改三次滤波器的实施方案再次使用固定点计算。其可视为上文描述的三次上取样器内核的变型,但具有以下内核系数:
其中y=0...1是待与10位样本一起使用的系数,且y=2...3待与8位样本一起使用,kernelOffset等于4,且kernelSize等于4。
应注意,本文提供的内核仅为实例,且其它实施方案可使用不同内核。
经预测残差过程描述
以下章节将简要提供图27的子框2744中展示的经预测残差过程的实例实施方案。在其它实例中,其还可作为框2712的向上缩放的一部分应用。到此过程的输入展示为:变量srcX和srcY,其指定较低分辨率阵列的宽度和高度;变量dstX和dstY,其指定经上取样阵列的宽度和高度;作为输入提供到向上缩放过程的样本的(srcX)x(srcY)阵列recLowerResSamples[x][y];以及作为向上缩放过程的输出的样本的(dstX)x(dstY)阵列recUpsampledSamples[x][y]。到此过程的输出为输出样本的(dstX)x(dstY)阵列recUpsampledModifiedSamples[x][y]。
在当前的实例中,如果scaling_mode_levelX等于2(即,为二维),则经预测残差过程使用2×2网格修改recUpsampledSamples,且如果scaling_mode_levelX等于1(即,为一维),则经预测残差过程使用2×1网格。如果scaling_mode_levelX等于0(例如,不执行向上缩放),则不应用经预测残差过程。
每当(xCurr,yCurr)块属于图片或边界区域(如图9B和9C中所指定)时,可应用经预测残差过程,如由以下有序步骤指定:
如果scaling_mode_levelX等于1(即,缩放为一维),则可执行以下计算:
如果scaling_mode_levelX等于2(即,缩放为二维),则可执行以下计算:
变换输入和输出、变换类型和残差样本导出
用于变换的解码过程展示为图27中的子框2718和2756。这些过程可在解码器处执行逆变换。到这些过程的输入可为:位置(xTbP,yTbP),其指定当前明度或色度变换块的左上样本相对于当前图片的左上明度或色度样本(如前所述,取决于变换系数属于哪一平面,P可与任一明度或色度平面相关);变量nTbS,其指定当前变换块的大小(例如,如上导出);以及具有要素d[x][y]的经解量化变换系数的(nTbS)x(nTbS)阵列d。此过程的输出为具有要素R[x][y]的残差的(nTbS)x(nTbS)阵列R。
在本文中所描述的实例中,存在可以在编码过程中使用的两个类型的变换。这些不必为限制性的,且可使用其它变换。本文中所描述的两个变换都利用小内核,其直接应用于在应用经预测残差的级之后保留的残差(例如,按照上文描述的预测平均值计算)。残差可类似于图6A中展示的残差。
可以两种方式中的一个导出残差样本的(nTbS)x(nTbS)阵列R。对于第一变换(在本文中被称作2×2或定向分解-DD),可通过针对本文中所描述的第一变换在nTbS等于2的情况下调用二维变换过程,将经解量化变换系数d[x][y]的每一(竖直)列(其中x=0...nTbS-1,y=0...nTbS-1)变换为R[x][y](其中x=0...nTbS-1,y=0...nTbS-1)。对于第二变换(在本文中被称作4×4或定向分解平方-DDS),通过针对第二变换在nTbS等于4的情况下调用二维变换过程,将经解量化变换系数d[x][y]的每一(竖直)列(其中x=0...nTbS-1,y=0...nTbS-1)变换为R[x][y](其中x=0...nTbS-1,y=0...nTbS-1)。
2×2定向分解变换
现将简要描述第一变换(2×2或DD)。
如果nTbS等于2,则变换具有应用于每一2×2变换系数块的2×2内核。所得残差如下文陈述而导出。
如果相应增强子层的scaling_mode_levelX等于0或2,则根据以下矩阵乘法执行逆变换:
如果相应增强子层的scaling_mode_levelX等于1(即,缩放处于一个方向),则根据以下矩阵乘法执行逆变换:
4×4定向分解变换
现将简要描述第二变换(4×4或DDS)。
如果nTbS等于4,则变换具有应用于4×4变换系数块的4×4内核。所得残差如下文陈述而导出。
如果相应增强子层的scaling_mode_levelX等于0或2,则根据以下矩阵乘法执行逆变换:
如果相应增强子层的scaling_mode_levelX等于1,则根据以下矩阵乘法执行逆变换:
用于残差重建的解码过程
图27中的框2730和2758展示用于重建残差的过程。此过程涉及将从增强解码导出的残差数据应用于各种图片以增强那些图片。此可在可反映多个维度中的多个缩放水平的多个层级处执行(例如,如经由所传输的缩放因子所配置)。框2730和2758,如同图27中展示的其它操作一样,展示为应用于数据的块或编码单元(例如,残差和像元的2×2或4×4块)。可接着跨组成完整图片或帧的所有块或编码单元应用所述操作。因为块或编码单元不取决于其它块或编码单元,所以这些操作可针对例如图形处理单元(GPU)和/或多核处理器上(包含那些存在于例如平板电脑和智能电话等移动装置中)的块或编码单元并行化。
现在转而参看用以实施图27中的一个或多个框2730和2758的过程,可如本文陈述导出每一块或编码单元的经重建残差。首先,如果transform_type,则变量nCbSL可设定成等于2,或如果transform_type等于1,则变量nCbSL可设定成等于4(例如,反映在所描述的实例中变换的类型-2×2或4×4)。变量nCbSC接着设定成等于nCbSL>>1。
如果IdxPlanes等于0,则在明度编码块位置(xCb,yCb)、变量nCurrS设定成等于nCbSL及变量IdxPlanes设定成等于0作为输入的情况下调用如下文指定的用于颜色分量的残差重建过程。此对应于针对明度平面的处理。
如果IdxPlanes等于1,则在色度编码块位置(xCb>>ShifiWidthC,yCb>>ShifiHeightC)、变量nCurrS设定成等于nCbSC及变量IdxPlanes设定成等于作为输入的情况下调用如下文指定的用于颜色分量的残差重建过程。此对应于针对色度平面的处理,其中色度样本可相对于明度样本布置,如图7A到7C中所展示(以及上文参考参数ShiftWidthC和ShiftHeightC描述)。
现将描述针对层级1块的残差重建,例如如图27中展示为框2730(且比方说与由图2中的求和组件220应用的操作相关)。到此过程的输入可包括:位置(xCurr,yCurr),其指定当前块的左上样本相对于当前图片分量的左上样本;变量IdxPlanes,其指定当前块的颜色分量;变量nCurrS,其指定残余块的大小;(nCurrS)x(nCurrS)阵列recL1BaseSamples,其指定当前块的预备中间图片经重建样本(例如,与图23中的2304相关);以及(nCurrS)x(nCurrS)阵列resL1FilteredResiduals,其指定当前块的经层级1滤波残差(例如,与图23中的2308相关)。此过程的输出为具有要素recL1Samples[x][y]的组合中间图片(nCurrS)x(nCurrS)阵列recL1Samples(例如,与图23中的2310相关)。
位置(xCurr yCurr)处经重建样本阵列recL1Samples的(nCurrS)x(nCurrS)块可导出如下:
recL1Samples[xCurr+i][yCurr+j]=recL1BaseSamples[i][j]+resL1FilteredResiduals[i][j]
其中i=0...nCurrS-1,j=0...nCurrS-1
可以看出,此可逐块执行或针对完整平面执行(因为逐要素地添加残差和经重建基础解码图片)。在上文中,位置(xCurr,yCurr)简单地提供当前块或编码单元相对于增强型层级1输出图片的二维偏移。
在框2730处的重建之后,可在以下作为输入的情况下调用如上文指定(且展示为框2732)的用于颜色分量的向上缩放过程:位置(xCurr,yCurr);变换块大小nTbS、(nCurrS)x(nCurrS)阵列recL1Samples;变量srcWidth和srcHeight,其指定经重建基础图片的大小;变量dstWidth和dstHeight,其指定向上缩放的所得图片的宽度和高度;以及变量is8Bit(例如,如果enhancement_depth_type等于0,则后者等于1)。
现将描述用于层级2块的残差重建,例如如展示为图27中的框2758(且比方说与由图2中的求和组件258应用的操作相关)。到此过程的输入类似于上文关于层级1重建所陈述。举例来说,输入可包括:位置(xCurr,yCurr),其指定当前块的左上样本相对于当前图片分量的左上样本;变量IdxPlanes,其指定当前块的颜色分量;(nCurrS)x(nCurrS)阵列recL2ModifiedUpscaledSamples,其指定当前块的预备输出图片样本(例如,与图23中的2312相关);以及(nCurrS)x(nCurrS)阵列resL2Residuals,其指定当前块的层级2残差(例如,与图23中的2316相关)。此过程的输出为具有要素recL2PictureSamples[x][y]的组合输出图片样本的(nCurrS)x(nCurrS)阵列recL2PictureSamples(例如,与图3中的2322相关)。
位置(xCurr,yCurr)处经重建样本阵列recL2PictureSamples的(nCurrS)x(nCurrS)块可计算如下:
recL2PictureSamples[xCurr+i][yCurr+j]=recL2ModifiedUpscaledSamples[i][j]+resL2Residuals[i][j]
其中i=0...nCurrS-1,j=0...nCurrS-1
如果如至少上文“语义”章节中描述的dithering_type不等于0,则以位置(xCurr,yCurr)和(nCurrS)x(nCurrS)阵列recL2PictureSamples调用如由框2760所示的抖动过程。此可接着输出最终阵列recL2DitheredPictureSamples,其连同组成图片的其它编码单元一起使用以在框2762处输出视频的经重建图片。
用于L-1滤波器的解码过程
如其它实例中陈述,滤波器可应用于经解码层级1残差。类似的滤波器也可部署在编码器处(例如,模拟的层级1解码路径)。此滤波器可被描述为“环路内”滤波器,因为其用作不同编码单元周围的处理环路。图27中,层级1残差滤波器在方法框2720处应用于层级1残差表面块上,然后将残差添加到基础经重建图片(例如,在方法框2730处)。在某些情况下,可基于变换类型选择性地应用层级1滤波器。在某些情况下,其仅可在使用4×4变换时应用,即滤波器可被配置成仅当变量transform_type等于1时才操作。在其它实例中,当2×2变换与不同内核一起使用时,或在样本重新格式化为不同大小的块之后,还可应用框2720。
框2720的层级1滤波器可通过应用掩码而在经变换残差的每一4×4块上操作,所述掩码的权重结构化如下(且还参考上文的处理组件的描述而陈述):
{α,β,β,α}
{β,1,1,β}
{β,1,1,β}
{α,β,β,α}
转向图27的框2720,到此过程的输入为:样本位置(xTb0,yTb0),其指定当前变换块的左上样本相对于当前图片的左上样本;以及大小4×4的阵列resL1Residuals,其指定增强子层1的残差。到此过程的输出为具有要素resL1FilteredResiduals[x][y]的经滤波残差resL1FilteredResiduals的4×4阵列。可通过首先如下获得变量deblockEnabled、α和β来应用环路内层级1残差滤波器:
如果deblockEnabled为真,则给定图6A中的残差表示,应用以下步骤:
如果deblockEnabled为假,则resL1FilteredResiduals简单地设定为等于resL1Residuals(例如,滤波器用作穿通滤波器,而无修改)。
用于基础解码器数据提取的解码过程
现将描述框2710的简明概要。然而,应注意,按照其它实例,基础解码可视为可由第三方组件执行的单独的独立过程。在某些情况下,可指示硬件和软件基础解码器中的一个或多个以在增强解码器(即,其实施图27中展示的残差解码处理)的控制下解码所接收基础流。在其它情况下,增强解码器可被配置成以特定速率接收基础解码图片,所述基础解码图片接着与增强子层的残差解码同步。下文描述的过程可被视为用于基础解码过程的封装,其不实际上实施基础解码过程,而是例如从经解码基础图片缓冲器读取由单独的过程输出的数据。
在图27的实例中,用于基础解码器数据提取的解码过程可接收以下输入:位置(xCurr,yCurr),其指定当前块的左上样本相对于当前图片分量的左上样本;变量IdxBaseFrame,其指定待从其读取样本的基础解码器图片缓冲器;以及变量IdxPlanes,其指定当前块的颜色分量。此过程的输出展示为为具有要素recDecodedBaseSamples[x][y]的图片样本的(nCurrX)x(nCurrY)阵列recDecodedBaseSamples。过程2710可从位置(xCurr,yCurr)和由变量IdxBaseFrame指向的帧读取大小(nCurrS)x(nCurrS)的样本块。所述块可以栅格次序读取。
当存在明度和色度平面时(例如如图7A到7C中所展示而布置),样本块大小变量nCurrX和nCurrY可导出如下:
nCurrX=(IdxPlanes==0)?nCurrX:nCurrX>>ShifiWidthC
nCurrY=(IdxPlanes==0)?nCurrY:nCurrY>>ShiftHeightC
用于抖动滤波器的解码过程
如上文在关于残差重建的章节中所提及,抖动滤波器可应用于层级2重建的输出。可应用抖动滤波器来改进输出图片的图像质量,例如通过隐藏由于应用量化而生成的假影。图27中抖动过程展示为框2760。
在图27的实例中,到抖动过程2760的输入包括:位置(xCurr,yCurr),其指定当前块的左上样本相对于当前图片分量的左上样本;以及(nCurrS)x(nCurrS)阵列recL2PictureSamples,其指定经重建的组合输出图片样本(例如,与图23中的2322相关)。过程2760的输出展示为具有要素recL2DitheredPictureSamples[x][y]的残差的(nCurrS)x(nCurrS)阵列recL2DitheredPictureSamples。
可应用已知抖动方法的不同形式和变型。可使用变量dithering_type(如上文所描述)传信抖动的类型。举例来说,如果dithering_type等于1(例如,均一抖动),则位置(xCurr,yCurr)处经重建样本阵列recL2DitheredPictureSamples的(nCurrS)x(nCurrS)块可导出如下:
recL2DitheredPictureSamples[xCurr+i][yCurr+j]=recL2PictureSamples[i][j]+rand(i,j)
其中i=0...nCurrS-1,j=0...nCurrS-1。函数rand(i,j)为伪随机数,例如如利用已知伪或真随机数生成器生成。函数rand(i,j)可被配置成输出预定义范围内的值。可传信此预定义范围。在当前实例中,使用如上文“语法”和“语义”章节中所描述的变量dithering_strength设定预定义范围,其中所限定范围可设定为[-dithering_strength,+dithering_strength]。
用于经熵编码的变换系数的解析过程
此章节描述可应用于经熵编码的变换系数的熵解码过程。到此过程的输入可包括属于含有从展示为框2706的图片增强解码过程导出的经熵编码的变换系数的数据组块的位。本文中所描述的过程还可以用于实施先前解码器实例的熵解码组件。
如上文陈述,应注意,对如本文所描述的霍夫曼编码和解码的参考也视为参考前缀编码。前缀代码也被称为无前缀代码、无逗点代码、前缀条件代码和瞬时代码。尽管霍夫曼编码仅为用于导出前缀代码的许多算法之一,但前缀代码广泛地被称作“霍夫曼代码”,即使在代码并非由霍夫曼算法产生时也如此。因此,“霍夫曼代码”在本文中用作较一般“前缀码”的同义词。
更详细地且参考图27的框2706,可取决于数据是否平铺而发生不同处理操作。如果数据未平铺,例如如由tile_dimensions_type等于0所指示,对于每一组块,提供以下信息:变量surfaces[planeIdx][levelIdx][layerIdx].rle_only_flag,其指定是否需要前缀编码解码器(或是否将在无前缀编码的情况下将数据解码为仅游程长度编码数据);变量surfaces[planeIdx][levelIdx][layerIdx].size,其指定数据组块的大小(例如,其中组块对应于图9A中展示数据部分);以及变量surfaces[planeIdx][levelIdx][layerIdx].data,其指定组块的开始。变量planeIdx、levelIdx和layerIdx可如上文描述用于指示组块属于的平面、增强子层和系数群组。此过程的输出为经熵解码的经量化变换系数,其将用作上文描述的展示为图27中的框2714和2746的解码过程的输入。
如果启用拼片数据(例如,如图21A中所展示),则tile_dimensions_type可设定为非零值。在此情况下,为每一组块提供以下信息:变量surfaces[planeIdx][levelIdx][layerIdx].tiles,其指向经解码图片的拼片;以及变量surfaces[planeIdx][levelIdx][layerIdx].rle_only_flag,其指定是否所有拼片需要前缀编码解码器。在此情况下,数据组块进一步拆分为较小数据组块,其被称为拼片。对于每一拼片提供以下信息:变量surfaces[planeIdx][levelIdx][layerIdx].tiles[tileIdx].size,其指定拼片数据的组块的大小;以及变量surfaces[planeIdx][levelIdx][layerIdx].tiles[tileIdx].data,其指定组块的开始。索引planeIdx、levelIdx、layerIdx和tileIdx指示组块属于的平面、增强子层、系数群组和拼片。此过程的输出再次为经熵解码的经量化变换系数,其将用作展示为图27中的框2714和2746的过程的输入(例如,按图21A中展示的次序)。
实例熵解码器可由两个组件组成:前缀编码解码器和游程长度解码器。此在上文参考图10A的章节“实例熵编码”中描述。
用于经熵编码的时间信号系数群组的解析过程
时间信令数据还可经熵编码,例如如图24到26的实例中所展示以及参考图12A到12E描述。图27的实例中的时间信令数据组织于经熵编码的时间信号系数群组中。这些还可解析为图片增强解码过程2706的一部分或解析为单独过程的一部分。它们可以与上文描述的过程类似的方式进行熵解码。
如上文陈述,时间信令表面的处理可取决于数据是否平铺。此可使用变量tile_dimensions_type指示。到用于时间信令数据的此解析过程的输入可包括属于含有从框2706导出的经熵编码的时间信号系数群组的数据组块的位。
如果tile_dimensions_type等于0,则对于每一组块提供以下信息:变量temporal_surfaces[planeIdx].rle_only_flag,其指定是否需要前缀编码解码器;变量temporal_surfaces[planeIdx].size,其指定数据组块的大小;以及变量temporal_surfaces[planeIdx].data,其指定组块的开始。在此情况下,planeIdx为指示组块属于的平面的索引。此过程的输出为待存储于TempSigSurface中的熵解码的时间信号系数群组,如上文及下文更详细描述。
如果启用平铺数据,例如tile_dimensions_type不等于0,则可针对每一组块提供以下信息:变量temporal_surfaces[planeIdx].tiles,其指向经解码图片的拼片;以及变量temperal_surfaces[planeIdx].rle_enly_flag,其指定是否所有拼片需要前缀编码解码器。在此情况下,数据组块进一步拆分为较小数据组块,其被称为拼片(例如,如图21A中所展示,但对于时间信令-时间信令可视为额外层)。对于每一拼片可提供以下信息:变量temporal_surfaces[planeIdx].tiles[tileIdx].size,其指定拼片数据的组块的大小;以及变量temporal_surfaces[planeIdx].tiles[tileIdx].data,其指定组块的开始。在此情况下,索引planeIdx和tileIdx指示组块属于的平面和拼片。此过程的输出为待存储于TempSigSurface中的熵解码的时间信号系数群组,如上文及下文更详细描述。
再次,实例熵解码器可由两个组件组成:前缀编码解码器和游程长度解码器。此可如相对于上文参考图10A的章节“实例熵编码”中的变换系数所描述而应用。
前缀编码解码器描述
实例前缀编码解码器的某些方面涉及上文标题为“实例熵编码”的章节和图10A到10I。
在某些实例中,如果变量rle_only_flag等于1,则跳过前缀编码解码器过程,且调用本文中所描述的游程长度解码过程。如果变量rle_only_flag等于0,则应用前缀编码解码器。
可通过从流标头大小读取代码长度来初始化前缀编码解码器。如果存在超过31个非零值,则流标头如图10B中所展示。否则,流标头可如图10C中所展示而布置。在频率全部为零的特殊情况中,流标头可如图10D中所展示而布置。在其中前缀编码树中仅存在一个代码的特殊情况中,流标头可如图10E中所展示而布置。这些数据结构的另外细节可查阅上文的“实例熵编码”章节。
在初始化之后,前缀编码解码器可进行以下步骤:
1)针对每一符号设定代码长度;
2)依据代码长度将代码指派到符号;以及
3)生成用于搜索具有相同长度的代码的子集的表。在此步骤中,表的每一要素可用于记录给定长度的第一索引和相应代码(例如,呈firstIdx,firstCode的形式)。
前缀编码解码器表生成
现将参考下文的符号表和图28A到28E描述如上文陈述的步骤3)的短实例,例如前缀编码解码器表生成。
为了找到用于给定符号集合的前缀编码代码,可创建前缀编码树。下表展示假想实例,其具有6个符号(A、B、C、D、E和F),各自在不同频率处发生。首先,依据频率对符号分类。此在下表中展示:
符号 | 频率 |
A | 3 |
B | 8 |
C | 10 |
D | 15 |
E | 20 |
F | 43 |
两个最低要素接着从列表移除且成为树的叶,其中父节点的频率是两个较低要素的频率的总和。第一部分树在图28A中展示。接着以组合要素生成新分类的频率列表,如下表中所展示:
符号 | 频率 |
C | 10 |
* | 11 |
D | 15 |
E | 20 |
F | 43 |
接着重复环路,组合两个最低要素,如图28B中所展示。具有更新的经分类频率的新列表如下所示:
符号 | 频率 |
D | 15 |
E | 20 |
* | 21 |
F | 43 |
重复此过程直至列表中仅剩下一个要素。迭代在图28C和28D和三个连续下表中展示。
符号 | 频率 |
* | 21 |
* | 35 |
F | 43 |
符号 | 频率 |
F | 43 |
* | 56 |
符号 | 频率 |
* | 99 |
一旦构建树,为了生成符号的前缀编码代码,所述树从根部穿越到此符号,每当取左侧分支则附加0,且每当取右侧分支则附加1。此在图28E中展示。在此处呈现的假想实例中,此给出以下代码,如下表中所指定:
符号 | 代码 | 代码长度 |
A | 1010 | 4 |
B | 1011 | 4 |
C | 100 | 3 |
D | 110 | 3 |
E | 111 | 3 |
F | 0 | 1 |
符号的代码长度为其相应代码的长度。为了解码前缀编码代码,树在根部处开始穿越,如果读取0则取左侧路径,且如果读取1则取右侧路径。当到达叶时找到所述符号。
用于拼片数据大小的前缀编码解码器
此章节描述可用于平铺数据的前缀编码解码器。在此情况下,解码器逐字节地读取每一拼片的前缀编码经编码数据大小。用于此解码的状态机具有两个状态:LSB前缀码状态和MSB前缀码状态。依据构造,保证数据的第一字节的状态为LSB前缀码状态。如果上溢旗标为0,则状态机保持处于LSB前缀码状态。如果上溢旗标为1,则状态机转变到MSB前缀码状态。解码器此状态机来确定数据的下一字节的状态。状态告知解码器如何解译当前数据字节。两个状态可为图10G中所示出的状态。
LSB前缀编码状态可编码非零值的7个较低有效位。在此状态下,划分字节,如图10G中所展示。如果值不拟合在7个数据位内,则设定上溢位。当设定上溢位时,下一字节的状态将为MSB前缀编码状态。MSB前缀编码状态编码不拟合在7个数据位内的值的位8到15。字节的所有8个位可以是数据位(例如,类似于图10H和10I,无游程位)。针对每一状态创建频率表以供由前缀编码编码器使用。
如果此过程参考经熵编码的变换系数以表面调用,则经解码值存储到大小nTilesL1或nTilesL2(分别为增强子层1和子层2的拼片的数目)的临时缓冲器tmp_size_per_tile中。这些可使用索引planeIdx、levelIdx、layerIdx和tileIdx映射到surfaces[planeIdx][levelIdx][layerIdx].tiles[tileIdx].size如下:
如果此过程参考经熵编码的变换信号系数群组以temporal_surfaces调用,则经解码值可存储到大小nTilesL2的临时缓冲器tmp_size_per_tile中,且映射到temporal_surfaces[planeIdx].tiles[tileIdx].size如下:
每拼片的最后位符号偏移可使用与上文所描述相同的前缀编码解码过程。如果此过程参考经熵编码的变换系数以表面调用,则经解码值存储到大小nTilesL1或nTilesL2(分别为增强子层1和子层2的拼片的数目)的临时缓冲器tmp_decoded_tile_prefix_last_symbol_bit_offset中,且映射到surfaces[planeIdx][levelIdx][layerIdx].tiles[tileIdx]。接着导出变量prefix_last_symbol_bit_offset如下:
如果此过程参考经熵编码的变换信号系数群组以temporal_surfaces调用,则经解码值存储到大小nTilesL2的临时缓冲器tmp_decoded_tile_prefix_last_symbol_bit_offset中。其可接着映射到temporal_surfaces[planeIdx].tiles[tileIdx].prefix_last_symbol_bit_offset如下:
RLE解码器
现将描述实例游程长度编码(RLE)解码器。游程长度编码器和解码器的另外细节还查阅上文陈述的章节“实例熵编码”和图10A到10I。
RLE解码器的输入在rle_only_flag等于零的情况下可以是前缀编码解码数据的字节流,或在rle_only_flag等于1的情况下仅为原始数据的字节流。此过程的输出是属于由变量planeIdx、levelIdx和layerIdx指向的组块的经量化变换系数流或属于时间组块的时间信号流。
当解码系数群组时,RLE解码器可使用如上文所描述图10F中展示的状态机1050。游程长度状态机1050可由前缀编码编码和解码过程使用以知晓针对当前符号或码字使用哪一前缀编码代码。RLE解码器解码零的序列。其还可解码用于构建前缀编码树的频率表。RLE解码器逐字节地读取游程长度编码数据。依据构造,保证数据的第一字节的状态为RLC残差LSB状态1051。RLE解码器使用状态机1050来确定数据的下一字节的状态。状态告知RLE解码器如何解译当前数据字节。三个状态1051、1052和1053的另外细节提供于上文对图10F的描述中。还参考图10G到10I中展示的字节编码。可针对每一状态创建频率表以供由前缀编码编码器使用。为了使解码器在已知状态开始,经编码流中的第一符号将始终为残差。
3}用于时间信号系数群组的RLE解码器可以类似方式操作。用于时间信号系数群组的实例RLE解码器在上文标题为“时间预测和信令”的章节中描述。用于时间信号系数群组的RLE解码器可使用类似于图12E中展示的状态机1280的状态机。状态机1280可由前缀编码编码和解码过程使用以知晓针对当前符号或码字使用哪一前缀编码代码。用于时间信号系数群组的RLE解码器解码零的序列和一的序列。其还可解码用于构建前缀编码树的频率表。用于时间信号系数群组的RLE解码器可逐字节地读取所接收游程长度编码数据。依据构造,可保证数据的第一字节的状态为流中的第一符号的真值(例如,图12E中的状态1281)。RLE解码器可使用状态机1280来确定数据的下一字节的状态。状态告知RLE解码器如何解译当前数据字节。如上文参考图12E所描述,用于时间信号系数群组的RLE解码器除第一符号状态外还可具有两个状态:如展示为图12E中的状态1283的RLC零游程状态,和如展示为图12E中的状态1282的RLC一个游程状态。零游程状态1283编码零游程计数的7位。如果编码计数需要较多位,则游程位为高。用于零游程状态的字节的游程长度编码可类似于图10H或10I中所展示。一个游程状态1282编码一个游程计数的7位。如果编码计数需要较多位,则游程位为高。用于一个游程状态的字节的游程长度编码也可类似于图10H或10I中所展示。可针对每一状态创建频率表以供由前缀编码编码器使用。为了使RLE解码器在已知状态(例如,状态1281)开始,第一符号可含有实值0或1。
当解码时间信号系数群组时,RLE解码器将0和1值写入到时间信号表面TempSigSurface中。此可具有大小(PictureWidth/nTbS,PictureHeight/nTbS),其中nTbS为变换大小。
可使用相对于图12C和12D以及图13A和13B的流程图描述的编码。在此情况下,时间信号的解码可涉及以下步骤。如果temporal_tile_intra_signalling_enabled_flag等于1,且如果将写入在TempSigSurface中的写入位置(x,y)处的值等于1,且x%(32/nTbS)==0且y%(32/nTbS)==0,则当(x+32/nTbS)<(PictureWidth/nTbs)时下一写入位置移动到(x+32/nTbS,y),否则,其移动到(0,y+32/nTbS)。此可解码如图12D中所展示时间信令,其中此图可表示对于4×4变换,在nTbs=4的情况下,用于时间信号系数群组的RLE解码器将值写入到时间信号表面。
在某些实例中,可如上文和其它实例中针对时间信令所陈述编码和/或解码其它信令。
举例来说,在一种情况下,可以此方式编码和解码拼片的entropy_enabled_flag。在此情况下,待用于对拼片中的每一个的entropy_enabled_flag字段进行编码的游程长度状态机可以与图12E中展示且用于上文的时间信令的状态机1280类似的方式配置。RLE解码器可再次解如码针对上文的时间信令论述的零的序列和一的序列(利用相同状态布置)。
当使用经编码拼片entropy_enabled_flag时,RLE数据可组织为块。每一块可具有4096字节的输出容量。在此情况下,RLE解码器可在以下案例中切换到新块:1)当前块已满;2)当前RLE数据为游程且当前块中剩下少于5个字节;以及3)当前RLE数据产生LSB/MSB对且当前块中剩下少于2个字节。在此实例中,RLE解码器可将0和1值写入到大小如下的临时信号表面tmp_decoded_tile_entropy_enabled中:
(nPlanes)x(nLevels)x(nLayers)x(nTilesL1+nTilesL2)x(no_enhancement_bit_flag==0)+(temporal_signalling_present_flag==1)x(nPlanes)x(nTilesL2)
在此情况下,所得临时信号表面tmp_decoded_tile_entropy_enabled可映射到surfaces[planeIdx][levelIdx][layerIdx].tiles[tileIdx].entropy_enabled_flag和temporal_surfaces[planeIdx].tiles[tileIdx].entropy_enabled_flag如下:
用于指数-哥伦布代码的解析过程
在本文中所描述的某些实例中,可用指数-哥伦布代码编码数据。这些代码可为0阶。此章节陈述解析过程,其可在语法表中的语法要素的描述符等于ue(v)时调用(例如,如上文“位流语法”章节中陈述。
在所述实例中,到指数-哥伦布代码解析过程的输入可包括来自原始字节序列有效负载(RBSP)的位。此过程的输出可包括语法要素值。
编码为ue(v)的语法要素可以0阶进行指数-哥伦布编码。这些语法要素的解析过程以如下操作开始:读取位流中当前位置处开始的位直至且包含第一非零位,并对等于0的前导位的数目计数。此过程可指定如下:
leadingZeroBits=-1 |
for(b=0;!b;leadingZeroBits++) |
b=read_bits(1) |
变量codeNum可接着被指派如下:
codeNum=(2leadingZeroBits-1)+read_bits(leadingZeroBits)
其中从read_bits(leadingZeroBits)传回的值解译为具有首先写入的最有效位的无符号整数的二进制表示。
下表示出通过将位串分为“前缀”和“后缀”位的0阶指数-哥伦布代码的实例结构。“前缀”位是如上文针对leadingZeroBits的计算所指定而解析的那些位,且展示为表的位串列中的0或1。“后缀”位是如在codeNum的计算中解析的那些位,且展示为表中的xi,其中i在范围0到leadingZeroBits-1内(包含端点)。每一xi等于0或1。
位串形式 | codeNum的范围 |
1 | 0 |
0 1 x0 | 1..2 |
0 0 1 x1 x0 | 3..6 |
0 0 0 1 x2 x1 x0 | 7..14 |
0 0 0 0 1 x3 x2 x1 x0 | 15..30 |
0 0 0 0 0 1 x4 x3 x2 x1 x0 | 31..62 |
... | ... |
下表示出(显式地)位串到codeNum值的指派。
位串 | codeNum |
1 | 0 |
0 1 0 | 1 |
0 1 1 | 2 |
0 0 1 0 0 | 3 |
0 0 1 0 1 | 4 |
0 0 1 1 0 | 5 |
0 0 1 1 1 | 6 |
0 0 0 1 0 0 0 | 7 |
0 0 0 1 0 0 1 | 8 |
0 0 0 1 0 1 0 | 9 |
... | ... |
因而,语法要素的值等于codeNum。
解码器的详细实例实施方案的概述
上文描述的实例处理位流,其中数据逻辑上组织成组块。首先,对每一组块进行熵解码。也就是说,方法包括检索每一组块,以及将熵解码操作应用于每一组块。熵解码操作的实例在上文描述,且可包括例如游程长度解码、前缀编码解码或这两者。方法可接着输出熵解码的经量化系数阵列。游程长度编码操作可识别符号集合中的下一符号并提取数据值或零的游程。解码操作可接着将这些值与零组合以解码数据。次序可按提取的次序,或者按某一预定次序。
描述用于第一增强层级组块(例如,熵解码之后的层级1)的解码过程的实例实施方案。还描述用于另一增强层级组块(例如,熵解码之后的层级2)的解码过程的实例实施方案。
方法可包括检索表示第一增强层级的熵解码的经量化系数阵列,以及输出残差阵列。方法可进一步包括检索基础解码器的输出的样本的阵列。方法可进一步包括将解量化过程应用于熵解码的经量化系数阵列以导出解量化系数的集合,将变换过程应用于解量化系数的集合,以及应用滤波器过程以输出表示第一增强层级的残差的阵列。方法可接着进一步包括从残差阵列重新创建图片。方法可包括根据传信的参数应用来自一组预定变换过程的变换过程。举例来说,变换过程可应用于2×2编码单元或4×4编码单元。
方法还可包括检索表示另一增强层级的熵解码的经量化系数阵列,以及输出残差阵列。方法可进一步包括检索对应于表示另一增强层级的熵解码的经量化系数阵列的第一增强层级的残差的阵列。方法可进一步包括将上取样过程应用于第一增强层级的残差阵列。方法可包括将时间预测过程应用于表示另一增强层级的熵解码的经量化系数的阵列以导出经时间预测样本的阵列。方法可进一步包括将解量化过程应用于熵解码的经量化系数的阵列以导出解量化系数的集合,将变换过程应用于解量化系数的集合以导出经变换系数的集合。经时间预测的样本的阵列可接着与经变换系数的集合组合以导出另一增强层的残差的阵列。方法可接着进一步包括从残差阵列重新创建图片。方法可包括根据传信的参数应用来自一组预定变换过程的变换过程。举例来说,变换过程可应用于2×2编码单元或4×4编码单元。
方法可包括预测残差。预测残差的步骤可作为变换过程的一部分执行。预测残差步骤可包括修改残差。所述修改可基于残差在帧中的位置执行。所述修改可以是预定值。还可在另一增强层级中应用滤波步骤。类似地,还可在第一增强层级过程中应用时间预测。
尽管上文描述的方法指定解量化过程、变换过程、上取样过程和滤波器过程(及其它过程)的实例,但应理解,所描述的过程不是必要的,且可应用其它现代的过程来执行所描述的步骤。
方法可应用于关于时间信令的操作(例如,使用元数据传信时间模式)。举例来说,经编码数据可经修改使得如果temporal_enabled位为1且temporal_refresh_bit为0且如果layerIdx为0,则处理额外时间表面。用于图片增强经编码数据的解码过程可在某些情况下经修改使得如果temporal_enabled位为1且temporal_refresh_bit为0且如果layerIdx为0,则处理额外时间表面。用于时间预测的解码过程可经修改使得从时间表面读取变量TransTempSig和TileTempSig(例如,时间映射)。如果temporal_embedded位为1,则TransTempSig和TileTempSig可作为输入供应到时间预测过程,且这些过程可被配置成从tileTempSig阵列确定是否应调用拼片刷新过程。此外,在此情况下,解码可被配置成在TransTempSig被设定为0的情况下为变换调用时间处理。
神经网络上取样器的详细实例
概要
本章节提供上文描述的神经网络上取样器的详细实施方案实例。这些细节不应被视为限制性的。
神经网络上取样器可限定为函数min_conv,其在中间值限定为三维(3D)张量的情况下执行上取样操作,所述三维张量将最终展平为已知范围的整数值的二维(2D)矩阵。其可被配置成提供与上文描述的其它上取样函数(例如,图27中展示的子框2736到2742)相同的界面。在下文的段落中,呈现类型、操作和其它函数的从下到上定义。
数据类型
此子章节陈述可在神经网络上取样器实施方案中限定的一些数据类型:
操作
此子章节陈述可在神经网络上取样器实施方案中使用的一些函数。
函数Convolve2D_Add_Bias可经限定以提供具有偏置的二维卷积。其可用于实施图22C中的框2232和2236。其可接收形式Tensor3D_FP32的input,应用形式Tensor4D_FP32的kernel和形式Tensor1D_FP32的bias,且提供形式Tensor3D_FP32(input.size0,input.size1,kernel.size3)的output。其可限定为以下函数:
函数LeakyRelu可应用非线性。其可用于实施图22C中的框2234。其可接收形式Tensor3D_FP32的input且生成形式Tensor3D_FP32(input.size0,input.size1,input.size2)的output。其可限定如下:
函数InverseDD_Flattening可应用逆(2×2)变换作为上取样的一部分。其可用于实施图22C中的框2242。可接收形式Tensor3D_FP32的input和形式Tensor3D_FP32的ds(后者表示用于在应用预测平均值计算时使用的较低或下取样分辨率要素)。以Tensor3D_FP32(input.size0*2,input.size1*2,1)的形式提供output。其可限定如下
函数Integer_FP_Scaling可用于提供整数和浮点域之间的转换。其可用于实施图22B中的框2222。可接收以下变量作为输入:input,已知域的整数的2D矩阵;min_int_value,整数域的最小有效值;max_int_value,整数域的最大有效值;scaling_offset,浮点缩放偏移;以及scaling_divisor,浮点缩放除数。其可提供呈Tensor3D_FP32(input.size0,input.size1,1)的形式的output。其可限定如下:
函数FP_Integer_Scaling可用于提供浮点和整数域之间的转换,例如上述函数的逆函数。其可用于实施图22B中的框2224。其可接收以下变量作为输入:input,Tensor3D_FP32;min_int_value,整数域的最小有效值;以及max_int_value,整数域的最大有效值。其可提供呈已知域的整数的2D矩阵的形式的output。其可限定为:
组成
此章节指示可如何从上文描述的组件构成实例神经网络上取样器。
可利用展平顶点到特定形状张量的指派来限定内核和偏置。
可限定函数Upsampler_Core以实施图22A到22D中展示为2210的组件。其可采取Tensor3D_FP32的形式的input且提供呈Tensor3D_FP32(input.size0*2,input.size1*2,1)的形式的output。其可使用上述函数限定如下:
Us1cb=Convolve2D_Add_Bias(input,us_layer1_kernel,us_layer1_bias) |
Us1=Leaky_Relu(Us1cb) |
Us2=Convolve2D_Add_Bias(Us1,us_layer2_kernel,us_layer2_bias) |
output=InverseDD_Flattening(Us2,input) |
类似地,可限定函数以实施图22A和22B的完整实例2200和2220。这些实例可由min_conv_upsampler主函数实施。此可接收以下作为输入:input,已知域的整数的2D矩阵;in_min_int_value,输入整数域的最小有效值;in_max_int_value,输入整数域的最大有效值;out_min_int_value,输出整数域的最小有效值;out_max_int_value,输出整数域的最大有效值;scaling_offset,浮点缩放偏移;以及scaling_divisor,浮点缩放除数。output可包括已知域的整数的2D矩阵。在某些情况下,神经网络上取样器可被配置成提供与子框2736到2742的那些匹配的输入和输出界面,其中任何额外配置数据可从配置文件、从配置信令读取和/或经硬编码。函数min_conv_upsampler可限定为:
实例组合基础和增强解码器
本章节描述组合基础和增强解码器的实例实施方案。此实例展现可如何集成基础和增强解码器(例如,相比于聚焦于增强分量的先前实例)。当前实例可形成可用于检查位流和解码器顺应性的假想参考解码器(HRD)的基础。
在当前实例中,术语位流在下文用以指代基础和增强经编码数据两者的组合位流。举例来说,此组合位流可包括多路复用的数据。形成位流的NAL单元可被视为具有上文“语法”和“语义”章节中描述的格式。
在操作中,当前实例的位流可被指派到两个类型中的一个。这些在图29A的实例2900中展示。本章节中参考为I型位流2902的第一此组合类型的位流包括用于基础和增强两者的NAL单元流,其含有仅视频编码层(VCL)NAL单元和位流中所有存取单元的填充符数据NAL单元;本章节中参考为II型位流2904和2906的第二类型的位流除VCL NAL单元和位流中存取单元的填充符数据NAL单元外还含有以下至少一个:用于基础和/或增强的除填充符数据NAL单元外的额外非VCL NAL单元;以及形成来自NAL单元流的字节流的leading_zero_8bits、zero_byte、start_code_prefix_one_3bytes和trailing_zero_8bits语法要素。图29A还展示NAL单元流可如何提供字节流囊封2908,如上文在描述NAL单元的章节中所描述。
当前组合的实例解码器可限定为基础层解码器的增强,其中基础层解码器可具有其自身的单独参考解码器。在此实例中,例如视基础解码器的需要,非VCL NAL单元的语法要素(或其一些语法要素的默认值)可在相对于基础编解码器的语义定义中指定。非VCLNAL单元可限定为补充增强信息(SEI)和/或视频可用性信息(VUI)(例如,下文的章节中所论述)。在某些实例中,可在基础编码中使用两个类型的解码器参数集。解码器参数集可在序列信令层级处传信,例如全局配置参数集/VUI和处于存取单元层级的参数集(例如SEI中的参数集)。
为了检查使用组合实例解码器的位流的顺应性,VCL NAL单元中参考的全局配置参数集(或等效物)和图片参数集,以及相应缓冲周期和图片定时SEI消息(或等效物)可适时地在位流中(通过非VCL NAL单元)或通过其它手段传达到组合解码器。当那些NAL单元(或仅其中一些)通过本文中未描述的其它手段传达到解码器时,可满足非VCLNAL单元的“存在”。出于对位进行计数的目的,仅可对实际存在于位流中的适当的位进行计数。作为实例,通过除位流中存在外的手段传达的非VCL NAL单元与存在于位流中的NAL单元的同步可通过以下操作来实现:指示位流中的两个点,在这两个点之间,如果编码器决定在位流中传达,则非VCL NAL单元原本已经存在于位流中。当通过除位流内存在外的某一手段传达非VCL NAL单元的内容以供应用时,非VCL NAL单元的内容的表示可能不需要使用此附件中所指定的相同语法。当组合解码器信息含于位流内时,有可能仅仅基于位流中所含的信息来校验位流的顺应性。当解码器信息不存在于位流中时,正如所有“独立”I型位流的情况,可校验当组合解码器数据由某一其它手段供应时的顺应性。
图29B展示实例组合解码器2910,其还可被称作增强基础解码器(例如,其中“增强”部分是本文中所描述的增强层的实施方案)。在某些情况下,基础解码器可包括硬件解码器,例如传统解码器,且“增强”部分可包括(例如,如由本地处理器执行的)增强层的软件实施方案。实例组合解码器2910可视为来自基础解码器和增强解码器(例如,后者如本文的其它实例中所描述)两者的要素的逻辑组合。
实例组合解码器2910包括流调度器2912、解复用器2914、基础解码器2920和增强解码器2930。基础解码器2920继而包括经基础编码图片缓冲器2922、基础解码过程2924、基础裁剪过程2926和经基础解码图片缓冲器2928。增强解码器2930包括经增强编码图片缓冲器2932、增强解码过程2934(其可包括图27的至少一部分中示出的解码过程)和经增强解码图片缓冲器2936。解码过程2924和2934可为例如以一次一个图片的方式实施的瞬时解码过程。针对实例组合解码器2910的位流和解码器顺应性要求可参考基础解码器2920限定,例如增强解码器2930的缓冲和定时可取决于基础解码器2920的操作。许多不同种类的基础编解码器可用于实施基础解码器2920。
无关于特定基础编码类型,基础解码器2920可被描述为逻辑上操作如下。与流入经基础编码图片缓冲器2932的存取单元相关联的数据(例如,根据指定到达时间表)由流调度器2912经由解复用器2914递送。流调度器2912控制所接收位流的调度,且解复用器2914将位流拆分为基础部分和增强部分。流调度器2912和解复用器2914两者可为瞬时的。可认为解复用器2914在基础位流和增强位流之间拆分经编码数据。可由瞬时基础解码过程2924取决于经基础编码图片缓冲器2922在移除时间瞬时移除和解码与每一基础存取单元相关联的数据。瞬时基础解码过程2924可触发增强存取单元从经增强编码图片缓冲器2932的移除。经由基础裁剪过程2926瞬时裁剪(如果需要的话)之后的经基础解码图片和经增强编码图片缓冲器2932存取单元两者对增强解码过程2934进行馈送。增强解码过程2934瞬时产生放置于经增强解码图片缓冲器2936中的经增强解码图片片。增强解码器图片缓冲器2936存储可提供为经解码视频的增强图片(例如,类似于上文的实例解码器的输出,和图27的过程)。在基础解码器2920侧,经基础解码图片缓冲器2928以其原本独立于增强相同的方式操作,例如符合参考基础解码器的顺应性要求。当图片放置于经增强解码图片缓冲器2936中时,其可在经基础解码图片缓冲器2928输出时间从经增强解码图片缓冲器2936移除。因此,组合解码可具有与单单基础解码相同的输出定时特性。这还意味着,可从经基础解码图片缓冲器2928并行读取经解码基础视频,例如以允许在存在例如网络业务或处理资源约束等流式传输问题的情况下从增强输出到基础输出的适当补偿。
实例组合解码器2910可如基础解码器2920参数(例如用于SEI消息的缓冲周期)所指定而初始化。存取单元从经基础编码图片缓冲器2922的移除定时和从经基础解码图片缓冲器2928的输出定时(其也可为从经增强解码图片缓冲器2936的输出定时)可在图片定时或等效规范中指定。与特定存取单元相关的所有定时信息可被配置成在存取单元的经基础编码图片缓冲器2922移除时间之前到达。虽然通常假定用于生成位流的所有帧速率和时钟与位流中传信的值匹配,但在真实系统中,这些中的每一个可在实践中与所传信或指定的值不同。
关于实例组合解码器的更多细节
在这些实例中,假定以实值执行算术,使得舍入误差无法传播。举例来说,刚好在存取单元的移除之前或之后经基础编码图片缓冲器2922中的位数目可能不一定是整数。在这些实例中,被称作时钟节拍的变量tc可限定为tc=num_units_in_tick/time_scale。参考存取单元n,作为按解码次序的第n个存取单元,其中第一存取单元为存取单元0。同样,认为图片n是存取单元n的经编码图片或经解码图片。这些实例细节可适用于如上文所描述的I型和II型位流两者。
位流在经基础编码图片缓冲器2922中到达的定时可由位流到达的基础解码器2920定时确定。经增强编码图片缓冲器2932的位流到达的定时可能受限,使得:对于每个n,tbaf(n)<tlaf(n),其中tbaf(n)为增强位流中存取单元n的最终到达时间,且tlaf(n)为基础位流中存取单元n的最终到达时间。这意味着,参考同一图片,增强数据不可迟于基础数据到达。
经编码图片从经基础编码图片缓冲器2922移除的定时(指示为tbr(n))可由经编码图片移除的基础解码器2920定时确定。经编码图片从经增强编码图片缓冲器2932移除的定时(指示为tlr(n))可以是基础存取单元n已在基础解码器2920中解码的时间。然而,因为解码在基础解码器2920中是瞬时的,所以两个时间可能重合,即tlr(n)=tbr(n)。实际上,来自基础解码器2920的经解码图片可用于触发从经增强编码图片缓冲器2932的移除且因此触发增强图片的解码。
经增强解码图片缓冲器2936含有等待在呈现时间输出的图片存储缓冲器。经增强解码图片缓冲器2936可被视为实例组合解码器2910的主要(例如,唯一)经解码图片缓冲器,即增强图片可被视为实例组合解码器2910的主要(例如,唯一)输出。经基础解码图片缓冲器2928的操作(例如保存参考基础图片)可由基础解码器的已知规范(例如,基于与基础解码器2920相关联的视频编码标准)确定。图片从经增强解码图片缓冲器2936的移除可基于输出时间,例如针对基础解码器2920指定的呈现时间。图片n可在由基础解码器2920确定的输出时间to(n)从经增强解码图片缓冲器2936输出。此通常基于“经解码图片缓冲器输出延迟”。此延迟或等效信令的细节可由基础解码器的规范限定(其不是本文的焦点)。
实例组合解码器2910的实例位流可符合上文指定的语法、语义和约束。经编码图片缓冲器上溢可指定为其中经编码图片缓冲器中的位的总数目大于经编码图片缓冲器大小的条件。经编码图片缓冲器下溢可指定为其中移除时间低于存取单元的最终到达时间的条件。经基础和增强编码图片缓冲器2922、2932可被配置成避免经编码图片缓冲器上溢和下溢中的一个或多个。紧接在任何经解码图片添加到经增强解码图片缓冲器2936之后,经增强解码图片缓冲器2936的充满度可被约束为小于或等于经增强解码图片缓冲器2936大小。
所有参考图片可有时在基础解码预测需要时在(内部)经基础解码图片缓冲器2928中可用。每一图片将在其经增强解码图片缓冲器2936输出时间处存在于经增强解码图片缓冲器2936中,除非其根本不存储于经增强解码图片缓冲器2936中,或根据实例组合解码器2910规范从经增强解码图片缓冲器2936移除。图片的输出时间和按输出次序紧接在其后的图片的输出时间之间的差可被配置成满足针对操作点(例如,配置文件和层级)的实例组合解码器2910的约束,所述操作点可在位流中传信。
在某些情况下,实例组合解码器可能够遵照如本章节中论述的位流成功地解码,条件是VCL NAL单元中参考的所有基础解码器相关参数集以及适当缓冲周期和图片定时元数据以适时方式在位流中(通过非VCL NAL单元)或通过外部手段传达到解码器。
实例组合解码器可被配置成满足限定的输出定时和输出次序要求。为了检查组合解码器实施方案的顺应性,测试位流可由流调度器2912递送到基础解码器和增强解码器两者。在某些情况下,如果基础解码器根据已知规范配置,则可测试增强解码器。
补充增强信息
此章节提供补充增强信息(SEI)消息有效负载的实例语法和语义的大体描述。在本文中所描述的实例中,SEI消息可用于传达与例如待显示的经重建视频的颜色和光级相关的信息。
SEI消息可用于辅助与解码、显示或其它目的相关的过程。然而,可能不需要SEI消息来通过解码过程构建明度或色度样本。SEI消息的使用因此可视为任选变型以允许增加功能性。SEI消息信息还可以用于检查位流处理和输出定时。SEI消息可通过本文中未描述的其它手段传达到解码器(包含上文的实例组合解码器)。当存在于位流中时,SEI消息可遵从上文标题为“过程有效负载-全局配置”的章节中陈述和/或本章节在下文中陈述的语法和语义。当以除本文中所描述的实例位流内存在外的某种手段传达SEI消息的内容时,SEI消息的内容的表示不必使用此章节中所指定的语法。出于对位进行计数的目的,仅可对实际存在于位流中的适当的位进行计数。
SEI有效负载语法
下表中指定实例一般SEI消息语法。根据针对上文的章节中呈现的语法描述的相同惯例描述所述语法。
如上所示,SEI消息可携载主导显示器色量的信息。主导显示器色量SEI消息语法可在下表中陈述:
SEI消息还可携载关于内容光级的信息。
内容光级信息的实例语法在下表中指定:
SEI消息语法还可具有与预留信息相关联的部分。预留SEI消息语法的实例在下文陈述。
SEI有效负载语义
本章节遵循上文较早陈述的“语义”章节的惯例陈述一些一般SEI有效负载语义。这些“语义”可视为与上文语法中提及的特定变量的含义和功能相关的信息。如前所述,应注意,变量名称以及含义和功能的细节是非限制性的,且作为较一般功能性的实例提供。
在使用SEI消息的某些实施方案中,reserved_payload_extension_data可能不存在于位流中。实例解码器可被配置成忽略此变量的存在和值。当存在时,reserved_payload_extension_data的长度(以位计)可等于8*payloadSize-nEarlierBits-nPayloadZeroBits-1,其中nEarlierBits是sei_payload()语法结构中在reserved_payload_extension_data语法要素前面的位的数目,且nPayloadZeroBits是sei_payload()语法结构的末尾处的payload_bit_equal_to_zero语法要素的数目。
在某些实例中,payload_bit_equal_to_one可等于1,且payload_bit_equal_to_zero可等于0。
每一SEI消息的语义和存留范围可在每一特定SEI消息的语义规范中指定。对于主导显示器色量和内容光级信息SEI消息,存留范围可为含有SEI消息的经编码视频序列(CVS)。
主导显示器色量SEI消息
主导显示器色量SEI消息可用于识别被认为是用于相关联视频内容的主导显示器的显示器的色量或色域(例如,基色、白点和明度范围)-例如用于在制作视频内容时检视的显示器的色量。所描述的主导显示器可以是已被配置成使用所指示的主导色量的三色加成显示系统。主导显示器色量SEI消息不能识别用于确定所指示值的测量方法和程序,或提供主导环境的任何描述。其也不能提供关于将适合于保持具有不同于所描述的主导显示器的色量的色量的显示器上的创意意图的颜色变换的信息。此SEI消息中传达的信息对于对应于电影和电视工程师标准协会SMPTE ST 2086(2018)(其内容以引用的方式并入本文中)的使用的用途可能是足够的。
当主导显示器色量SEI消息针对特定层的经编码视频序列的任何图片存在时,主导显示器色量SEI消息可针对经编码视频序列的第一图片存在。主导显示器色量SEI消息可针对当前层按解码次序从当前图片直至经编码视频序列的末尾存留。应用于相同经编码视频序列的所有主导显示器色量SEI消息可具有相同内容。
变量display_primaries_x[c]当在5到37000的范围内(包含端点)时可用于根据如ISO11664-1(还见ISO 11664-3和CIE 15)中所指定的国际照明委员会(CIE)1931清晰度x,以增量0.00002指定主导显示器的基色分量c的正规化x色度坐标。当display_primaries_x[c]不在范围5到37000内(包含端点)时,主导显示器的基色分量c的正规化x色度坐标可能是未知的、未指定的或通过其它手段指定。
类似地,变量display_primaries_y[c]当在5到42000的范围内(包含端点)时可用于根据如ISO 11664-1(还见ISO 11664-3和CIE 15)中所指定的CIE 1931清晰度y,以增量0.00002指定主导显示器的基色分量c的正规化y色度坐标。当display_primaries_y[c]不在范围5到42000内(包含端点)时,主导显示器的基色分量c的正规化y色度坐标可能是未知的、未指定的或通过其它手段指定。
为了描述使用红绿蓝基色的主导显示器,建议索引值c等于0应对应于绿基色,c等于1应对应于蓝基色,且c等于2应对应于红基色。
变量white_point_x当在5到37000的范围内(包含端点)时可用于根据如ISO11664-1(还见ISO 11664-3和CIE 15)中所指定的CIE 1931清晰度x,以正规化增量0.00002指定主导显示器的白点的正规化x色度坐标。当white_point_x不在范围5到37000内(包含端点)时,主导显示器的白点的正规化x色度坐标可指示为未知的、未指定的或通过其它手段指定。
变量white_point_y当在5到42000的范围内(包含端点)时可用于根据如ISO11664-1(还见ISO 11664-3和CIE 15)中所指定的CIE 1931清晰度y,以正规化增量0.00002指定主导显示器的白点的正规化y色度坐标。当white_point_y不在范围5到42000内(包含端点)时,主导显示器的白点的正规化y色度坐标可指示为未知的、未指定的或通过其它手段指定。
SMPTE ST 2086(2018)指定,主导显示器基色和白点的正规化x和y色度坐标值将以四个小数位表示。此与作为5的倍数的语法要素display_primaries_x[c]、display_primaries_y[c]、white_point_x和white_point_y的值兼容。本文所论述的范围之外的值的使用的实例是标准ANSI/CTA 861-G(2016),其使用白点的正规化(x,y)色度坐标值(0,0)来指示白点色度是未知的。
变量max_display_mastering_luminance当在50 000到100 000 000范围内时可指定主导显示器的标称最大显示明度,以0.0001坎德拉/平方米为单位。当max_display_mastering_luminance不在50 000到100 000 000范围内时,主导显示器的标称最大显示明度可指示为未知的、未指定的或通过其它手段指定。SMPTE ST 2086(2018)指定,主导显示器的标称最大显示明度将指定为1坎德拉/平方米的倍数。此与作为10 000的倍数的语法要素max_display_mastering_luminance的值兼容。再次,本文所论述的范围之外的值的使用的实例是ANSI/CTA 861-G(2016)中所指定的那些,其使用主导显示器的标称最大显示明度的值0来指示主导显示器的标称最大显示明度是未知的。
变量min_display_mastering_luminance当在1到50 000范围内时可用于指定主导显示器的标称最小显示明度,以0.0001坎德拉/平方米为单位。当min_display_mastering_luminance不在1到50 000范围内时,主导显示器的标称最大显示明度可指示为未知的、未指定的或通过其它手段指定。当max_display_mastering_luminance等于50 000时,min_display_mastering_luminance可被约束为不等于50 000。SMPTE ST 2086(2018)指定,主导显示器的标称最小显示明度将指定为0.0001坎德拉/平方米的倍数,其与本文描述的范围兼容。本文所论述的范围之外的值的使用的一个实例是ANSI/CTA 861-G(2016)中所指定的那些,其使用主导显示器的标称最小显示明度的值0来指示主导显示器的标称最小显示明度是未知的。本文对于其指定语义的范围之外的值的潜在使用的另一实例为SMPTE ST 2086(2018),其指示指定范围之外的值可用以指示已经使用图片对齐生成设备(PLUGE)调整主导显示器的黑色电平和对比度。在最小明度下,主导显示器可被视为具有与白点相同的标称色度。
内容光级信息SEI消息语义
内容光级信息SEI消息可用于识别经编码视频序列的图片的标称目标亮度光级的上限。此SEI消息中传达的信息可用于为显示装置配置输出视频。
可关于经编码视频序列的图片的线性光域中红绿蓝基色强度(以坎德拉/平方米为单位)的4:4:4表示中的样本的值限定内容光级信息SEI消息的语义。然而,此SEI消息不能独自识别用于将经解码图片的样本值转换为图片的线性光域中红绿蓝基色强度的4:4:4表示中的样本的转换过程。例如colour_primaries、transfer_characteristics、matrix_coeffs等其它语法要素和色度再取样滤波器提示SEI消息(当存在时)可辅助此转换过程的识别。
给定相应4:4:4表示中明度样本的位置的线性光域中的红绿蓝基色强度(表示为ER、EG和EB),最大分量强度可限定为EMax=Max(ER,Max(EG,EB))。对应于刺激的光级可接着限定为对应于红绿蓝的所有三个基色强度的EMax的相等幅值的CIE 1931明度(具有适当缩放以反映与峰值白相关联的标称明度水平-例如当transfer_characteristics等于16时,通常缩放以使峰值白与10 000坎德拉/平方米相关联)。因为最大值EMax以此清晰度在每一样本位置处使用,而非从ER、EG和EB直接转换为相应CIE 1931明度,所以某一位置处的CIE 1931明度可在一些情况下小于所指示光级。此情形将例如在ER和EG极小且EB较大时发生,在此情况下,所指示光级将比与(ER、EG、EB)三元组相关联的真实CIE 1931明度大得多。应用于相同经编码视频序列的所有内容光级信息SEI消息可具有相同内容。
变量varimax_content_light_level当不等于0时可用于指示经编码视频序列的图片的红绿蓝基色强度(线性光域中)的4:4:4表示中的所有个别样本当中的最大光级的上限,以坎德拉/平方米为单位。当等于0时,max_content_light_level不可指示此上限。
变量max_pic_average_light_level当不等于0时可用于指示CLVS的任何个别图片的红绿蓝基色强度(线性光域中)的4:4:4表示中的样本当中的最大平均光级的上限,以坎德拉/平方米为单位。当等于0时,max_pic_average_light_level不可指示此上限。当视觉相关区不对应于整个经裁剪的经解码图片时(例如,为了具有较高经裁剪的经解码图片内的宽图片纵横比的视频内容的“信箱式”编码),所指示平均值可仅在视觉相关区内执行。
保留SEI消息语义
保留SEI消息由为将来后向兼容用途保留的数据组成。解码器可被配置成忽略保留SEI消息,例如直至提供具有可使用保留SEI消息中所含的信息的功能性的解码器。
视频可用性信息
本章节提供视频可用性信息(VUI)参数的集合的实例语法和语义的简要描述。这些参数可在所描述实例的任选变型中提供。举例来说,可能不需要VUI参数来通过本文中所描述的解码过程构建明度或色度样本,且可能不需要实例解码器来处理VUI参数以进行操作。一些VUI参数可用于检查位流和输出定时。VUI参数可通过本文中未描述的其它手段传达到解码器(包含组合解码器)。当存在于位流中时,VUI参数可遵循下文描述的语法和语义。当通过除位流内存在外的某一手段传达VUI参数的内容以供应用时,VUI参数的内容的表示可使用不同语法。出于对位进行计数的目的,仅可对实际存在于位流中的适当的位进行计数。
VUI参数语法
下表中陈述VUI参数的实例语法。使用以上实例的惯例。
VUI参数语义
现将呈现一些实例VUI参数语义的简短描述。
变量aspect_ratio_info_present_flag如果等于1则可用于指定存在aspect_ratio_idc。如果aspect_ratio_info_present_flag等于0,则此可指示不存在aspect_ratio_idc。
变量aspect_ratio_idc、sar_width和sar_height将具有分别如ITU-T H.273的章节8.6|ISO/IEC 23091-2(以引用的方式并入本文中)中所指定的SampleAspectRatio、SarWidth和SarHeight的含义。
变量overscan_info_present_flag如果等于1则可用于指示存在overscan_appropriate_flag。当overscan_info_present_flag等于0或不存在时,用于视频信号的优选显示方法可认为是未指定的。
变量overscan_appropriate_flag如果等于1则可用于指示经裁剪的经解码图片输出适于使用过扫描显示。如果overscan_appropriate_flag等于0,则此可指示经裁剪的经解码图片输出含有向外到图片的裁剪矩形的边缘的整个区中的视觉重要信息,使得经裁剪的经解码图片输出不应使用过扫描显示。实际上,其应使用显示区域和裁剪矩形之间的准确匹配或使用欠扫描显示。举例来说,变量overscan_appropriate_flag的值1可能用于娱乐电视编程,或用于可视电话会议中人的实景,且overscan_appropriate_flag的值0可能用于计算机截屏或安全相机内容。
变量video_signal_type_present_flag如果等于1则可用于指定存在video_format、video_full_range_flag和colour_description_present_flag变量。如果video_signal_type_present_flag等于0,则此可指定不存在video_format、video_full_range_flag和colour_description_present_flag变量。
变量video_format可用于指示例如在根据本文中所描述的实例编码之前图片的原始视频格式。实例视频格式在下表中陈述。在某些情况下,如果video_format不存在,则可推断video_format值等于5。
video_format | 含义 |
0 | 分量 |
1 | PAL |
2 | NTSC |
3 | SECAM |
4 | MAC |
5 | 未指定视频格式 |
6 | 保留 |
7 | 保留 |
变量video_full_range_flag可用于指示从E′Y、E′PB和E′PR或E′R、E′G和E′B模拟分量信号导出的明度和色度信号的黑电平及范围。当video_full_range_flag语法要素不存在时,可推断video_full_range_flag的值等于0。
变量colour_description_present_flag如果等于1则可指定存在colour_primaries、transfer_characteristics和matrix_coefficients变量。如果colour_description_present_flag等于0,则可认为变量colour_primaries、transfer_characteristics和matrix_coefficients不存在。
变量colour_primaries可具有如ITU-T H.273的章节8.1|ISO/IEC 23091-2中所指定的ColourPrimaries的含义。变量transfer_characteristics可具有如ITU-T H.273的章节8.2|ISO/IEC 23091-2中所指定的TransferCharacteristics的含义。变量matrix_coefficients可具有如ITU-T H.273的章节8.3|ISO/IEC 23091-2中所指定的MatrixCoefficients的含义。
变量chroma_loc_info_present_flag如果等于1则可指定存在变量chroma_sample_loc_type_top_field和chroma_sample_loc_type_bottom_field。如果chroma_loc_info_present_flag等于0,则此可指定不存在变量chroma_sample_loc_type_top_field和chroma_sample_loc_type_bottom_field。变量chroma_sample_loc_type_top_field和chroma_sample_loc_type_bottom_field指定如图30中所展示的顶部字段和底部字段的色度样本的位置。chroma_sample_loc_type_top_field和chroma_sample_loc_type_bottom_field的值可以在0到5范围内(包含端点)。当chroma_sample_loc_type_top_field和chroma_sample_loc_type_bottom_field不存在时,可推断chroma_sample_loc_type_top_field和chroma_sample_loc_type_bottom_field的值等于0。当对渐进原始资料编码时,chroma_sample_loc_type_top_field和chroma_sample_loc_type_bottom_field可具有相同值。图30中展示随chroma_sample_loc_type_top_field和chroma_sample_loc_type_bottom_field而变的顶部和底部字段的色度样本的位置。
变量timing_info_present_flag如果等于1则可指定位流中存在变量num_units_in_tick、time_scale和fixed_pic_rate_flag。如果timing_info_present_flag等于0,则此可指定位流中不存在num_units_in_tick、time_scale和fixed_pic_rate_flag。
变量num_units_in_tick可指示在对应于时钟节拍计数器的一个增量(称为时钟节拍)的频率time_scale Hz下操作的时钟的时间单位数。变量num_units_in_tick大于0。时钟节拍是可在经编码数据中表示的时间的最小间隔。举例来说,当视频信号的时钟频率为60 000÷1001Hz时,time_scale可等于60 000且num_units_in_tick可等于1001(如由组合解码器章节中的实例所指示)。变量time_scale可用于指示一秒内通过的时间单位数。举例来说,使用27MHz时钟测量时间的时间坐标系具有27 000 000的time_scale。再次,time_scale可被约束为大于0。
变量fixed_pic_rate_flag如果等于1则可用于指示按输出次序的任何两个连续图片的解码器输出时间之间的时间距离如下文陈述受限(包含对于上文描述的实例组合解码器)。如果fixed_pic_rate_flag等于0,则此可指示无此些约束适用于按输出次序的任何两个连续图片的解码器输出时间之间的时间距离。当观察图片之间的时间距离时,对于每一图片n,其中n指示被输出的第n个图片(按输出次序),且图片n是被输出的位流中的最后图片(按输出次序),Δtfi,dpb(n)的值可由Atfi,dpb(n)=Δto,dpb(n)÷DeltaTfiDivisor指定。当对于含有图片n的经编码视频序列fixed_pic_rate_flag等于1时,当对于后续图片nn以下条件中的任一个或两个为真时,如上文关于实例组合解码器的章节中所指定(使用含有图片n的经编码视频序列的tc的值),针对Δtfi,dpb(n)计算的值可等于tc:1)第一情况,其中图片nn处于与图片n相同的经编码视频序列中;以及2)第二情况,其中图片nn处于不同经编码视频序列中且含有图片n的经编码视频序列中fixed_pic_rate_flag等于1,且num_units_in_tick÷time_scale的值对于两个经编码视频序列为相同。
变量bitstream_restriction_flag如果等于1则可用于指定存在经编码视频序列位流限制参数的集合。经编码视频序列位流限制参数的实例在下文陈述。如果bitstream_restriction_flag等于0,则此可指定不存在相同的经编码视频序列位流限制参数的集合。
一个实例经编码视频序列位流限制参数为max_bytes_per_pic_denom。此可指示不应由与经编码视频序列中的任何经编码图片相关联的VCL NAL单元的大小的总和超过的字节数目。表示NAL单元流中的图片的字节的数目可为此目的指定为所述图片的VCL NAL单元数据的字节的总数目(即,VCLNAL单元的NumBytesInNALunit变量的总数)。max_bytes_per_pic_denom的值可以在0到16范围内(包含端点)。限制的数目可取决于max_bytes_per_pic_denom。如果max_bytes_per_pic_denom等于0,则可指示无限制。否则(即,当max_bytes_per_pic_denom不等于0时),将不在经编码视频序列中由超过以下字节数目表示经编码图片:(PicSizeInMbs*RawMbBits)÷(8*max_bytes_per_pic_denom)。在某些实例中,当max_bytes_per_pic_denom语法要素不存在时,max_bytes_per_pic_denom的值可推断为等于2。
经编码视频序列位流限制参数的另一实例为max_bits_per_mb_denom。此可用于指示经编码视频序列的任何图片中的任何宏块的macroblock_layer()数据的经编码位的最大数目。max_bits_per_mb_denom的值可以在0到16范围内(包含端点)。限制的数目可取决于max_bytes_per_mb_denom。如果max_bits_per_mb_denom等于0,则可指定无限制。否则(即,如果max_bits_per_mb_denom不等于0),则不可在位流中由超过以下位数目表示经编码macroblock_layer():(128+RawMbBits)÷max_bits_per_mb_denom。取决于entropy_coding_mode_flag,macroblock_layer()数据的位可计数如下:如果entropy_coding_mode_flag等于0,则macroblock_layer()数据的位数目可由宏块的macroblock_layer()语法结构中的位数目给定;否则(即,当entropy_coding_mode_flag等于1时),宏块的macroblock_layer()数据的位数目可由read_bits(1)在解析与宏块相关联的macroblock_layer()时被调用(例如,如上文熵编码实例中限定)的次数给定。当max_bits_per_mb_denom不存在时,其可推断为等于1。
可分别使用实例经编码视频序列位流限制参数log2_max_mv_length_horizontal和log2_max_mv_length_vertical来指示经编码视频序列中的所有图片的经解码水平和竖直运动向量分量的最大绝对值,以1/4明度样本单位计。n的值可断言,没有运动向量分量的值将超出-2n到2n-1的范围(包含端点),以1/4明度样本位移的单位计。log2_max_mv_length_horizontal的值可以在0到16范围内(包含端点)。log2_max_mv_length_vertical的值可以在0到16范围内(包含端点)。当log2_max_mv_length_horizontal不存在时,可推断log2_max_mv_length_horizontal和log2_max_mv_length_vertical的值等于16。在某一实例中,经解码竖直水平或运动向量分量的最大绝对值还可受如上文实例中所描述的配置文件和层级限制约束。
变量num_reorder_pics可用于指示帧、互补字段对,或先于任何帧、互补字段对的非配对字段,或按解码次序的经编码视频序列中的且按输出次序在其之后的非配对字段的最大数目。num_reorder_pics的值可以在0到max_dec_pic_buffering范围内(包含端点)。当num_reorder_pics语法要素不存在时,可推断num_reorder_pics值的值等于max_dec_pic_buffering。变量max_dec_pic_buffering可用于指定经解码图片缓冲器(例如,图29B中的2936)的所需大小,以图片存储缓冲器的单位计。经编码视频序列可能不需要大小超过Max(1,max_dec_pic_buffering)图片存储缓冲器的经解码图片缓冲器,来实现由图片定时SEI消息的dpb_output_delay指定的输出时间处经解码图片的输出。max_dec_pic_buffering的值可以在num_ref_pics到MaxDpbSize范围内(如上文所描述的配置文件和/或层级中所指定)(包含端点)。当max_dec_pic_buffering语法要素不存在时,可推断max_dec_pic_buffering的值等于MaxDpbSize。
实例陈述
以下陈述描述本文中所描述和说明的优选或示例性方面。
一种将输入视频编码到多个经编码流中使得经编码流可组合以重建输入视频的方法可包括:接收全分辨率输入视频;对全分辨率输入视频进行下取样以创建经下取样视频;使用第一编解码器编码经下取样视频以创建基础编码流;从经编码视频重建视频以生成经重建视频;将经重建视频与输入视频进行比较;以及基于所述比较创建一个或多个另外的经编码流。
与经重建视频进行比较的输入视频可为经下取样视频。根据实例方法,将经重建视频与输入视频进行比较包括:将经重建视频与经下取样视频进行比较以创建第一残差集合,且其中创建所述一个或多个另外的经编码流包括对第一残差集合进行编码以创建第一层级编码流。与经重建视频进行比较的输入视频可为全分辨率输入视频且经重建视频可经上取样。上取样可包括应用神经网络上取样器。神经网络上取样器可如本文的实例中的任一个中所描述而应用。神经网络上取样器可包括两层卷积神经网络。上取样器可包括两个卷积神经网络层之间的非线性。卷积神经网络可经训练以在给定相应经重建视频的情况下预测全分辨率输入视频。神经网络上取样器可通过表示内核权重和偏置集合的参数集合而参数化。
根据一实例方法,将经重建视频与输入视频进行比较可包括:对经重建视频进行上取样以生成上取样的经重建视频;以及将上取样的经重建视频与全分辨率输入视频进行比较以创建第二残差集合,且其中创建所述一个或多个另外的经编码流包括编码第二差以创建第二层级编码流。
在实例中,所述方法可根据上文所限定的实例方法生成基础编码流、第一层级编码流和第二层级编码流。第一层级编码流和第二层级编码流中的每一个可含有由解码器用以增强经编码基础流的增强数据。
根据一实例方法,编码第一残差集合的步骤可包括:将变换应用于残差集合以创建系数的集合;将量化操作应用于所述系数以创建经量化系数的集合;以及将编码操作应用于经量化系数。所述变换可例如为离散余弦变换或小波变换。在替代实例中,所述变换可以是将要素的块分解为方向分量的小变换(例如,使用2×2内核或4×4内核)。举例来说,2×2内核可以是哈达玛变换。关于变换的更多细节可例如查阅以引用的方式并入本文中的专利申请PCT/EP2013/059847或PCT/GB2017/052632。在另一实例中,编码器可在待使用的不同变换之间选择,例如在2×2内核和4×4内核之间选择。这实现编码残差的方式的更大灵活性。所述选择可基于待变换数据的分析。
所述量化可例如为线性量化。线性量化器可使用可变大小的死区。编码操作可例如是熵编码器,且可包含游程长度编码和/或霍夫曼/前缀编码。
根据一实例方法,编码第二残差集合的步骤可包括:将变换应用于第二残差集合以创建系数的集合;将量化操作应用于所述系数以创建经量化系数的集合;以及将编码操作应用于经量化系数。再次,所述变换可例如为离散余弦变换或小波变换。在替代实例中,所述变换可以是将要素的块分解为方向分量的小变换(例如,使用2×2内核或4×4内核)。举例来说,2×2内核可以是哈达玛变换。关于变换的更多细节可例如查阅以引用的方式并入本文中的专利申请PCT/EP2013/059847或PCT/GB2017/052632。在另一实例中,编码器可在待使用的不同变换之间选择,例如在2×2内核和4×4内核之间选择。这实现编码残差的方式的更大灵活性。所述选择可基于待变换数据的分析。
第一残差集合和第二残差集合可具有应用于其的不同变换,且选择可以是预先确定的或在过程期间选择。所使用的变换可在标头中传信。再次,所述量化可例如为线性量化。线性量化器可使用可变大小的死区。编码操作可例如是熵编码器,且可包含游程长度编码和/或霍夫曼/前缀编码。
残差可为两个视频或帧之间的差。
编码第一残差集合的步骤可包括:基于第一残差集合的预先分析将第一残差集合分级;以及选择待变换和编码的残差的子集。此可视为一种形式的残差滤波,且可应用其它一般滤波方法来选择残差的子集以供进一步处理。在一实例中,所述方法包括分析第一残差集合,且基于所述分析执行或不执行以下步骤:将第一残差集合分级;以及选择待变换和编码的残差的子集。在一实例中,所述方法包括分析第一残差集合,及:将第一残差集合分级;以及选择待变换和编码的残差的子集,使得基于所述分析差分地执行分级和/或选择的步骤。根据实例方法,对所选择的残差子集执行应用变换的步骤。
编码第二残差集合的步骤可包括:基于第二残差集合的预先分析将第二残差集合分级;以及选择待变换和编码的残差的子集。再次,此可视为一种形式的残差滤波,且可应用其它一般滤波方法来选择残差的子集以供进一步处理。在一实例中,所述方法包括分析第二残差集合,且基于所述分析执行或不执行以下步骤:将第二残差集合分级;以及选择待变换和编码的残差的子集。在一实例中,所述方法包括分析第二残差集合,及:将第二残差集合分级;以及选择待变换和编码的残差的子集,使得基于所述分析差分地执行分级和/或选择的步骤。根据实例方法,对所选择的残差子集执行应用变换的步骤。
经编码流可附有一个或多个标头,所述一个或多个标头包含指示编码过程的方面以便于解码的参数。举例来说,所述标头可包含所使用的编解码器、所应用的变换、所应用的量化,和/或其它解码参数。
在某些实例中,量化的步骤可包括基于待变换的系数和/或数据(例如,残差数据)的分析调适量化。在某些实例中,可调适量化步骤中使用的分布。
编码第一残差集合的步骤可包括:从时间缓冲器导出时间系数的集合;以及从系数集合减去时间系数集合。编码第二残差集合的步骤可包括:从时间缓冲器导出时间系数的集合;以及从系数集合减去时间系数的集合。
上文描述了分级和选择的步骤可如何应用于残差数据,可执行减去时间系数的步骤,且还可调适量化。这些步骤中的每一个可预先确定且选择性地应用,或可基于输入视频、经下取样视频、经重建视频、经上取样视频或上述的任何组合的分析而应用以改进编码器的总体性能。所述步骤可基于一组预定规则选择性地应用或基于性能的分析或反馈确定性地应用。
根据一实例方法,第一编解码器是基于硬件的编解码器,优选地第一编解码器是AVC、HEVC、AV1、VP8或VP9。
在以上实例中的任一个中,量化操作可包括应用来自量化矩阵的量化参数,其中不同量化矩阵用于每一残差集合。
在以上实例中的任一个中,一种编码方法可进一步包括将信令信息添加到所述一个或多个另外的经编码流中的一个或多个,所述信令信息指示所述经编码流的一部分涉及输入视频的特定拼片。
在以上实例中的任一个中,上取样可包括使用卷积神经网络来预测至少一编码单元的上取样值。
根据本公开的一个方面,存在一种将输入视频编码为多个经编码流使得经编码流可组合以重建输入视频的方法,所述方法包括:接收全分辨率输入视频;在低于所述全分辨率输入视频的分辨率下生成基础编码流;确定用于一个或多个另外的经编码流的时间模式以供连同基础编码流一起在重建全分辨率输入视频时使用;以及通过基于时间模式选择性地应用时间缓冲器来生成所述一个或多个另外的经编码流。
方法可包括将时间模式确定为不使用时间缓冲器(或例如使用时间缓冲器值0)的第一时间模式和确实使用时间缓冲器(例如,使用时间缓冲器内的至少一个非零值)的第二时间模式中的一个。时间缓冲器可用于应用时间预测。方法可包括:在编码器处获得多个编码单元的时间模式元数据;基于所获得的时间模式元数据确定待用于为所述多个编码单元编码的时间模式;以及基于所确定的时间模式和所获得的时间模式元数据生成用于所述多个编码单元的时间模式信令数据。
可通过从当前经变换系数集合减去存储在时间缓冲器内的解量化的经变换系数集合来在编码器处应用时间预测。当前经变换系数集合可与全分辨率输入视频内的当前帧相关联,且解量化的经变换系数集合可与全分辨率输入视频内的先前帧相关联。
在某些实例中,确定时间模式可包括估计成本函数。成本函数可包括全分辨率输入视频和一个或一个或多个另外的经编码流的函数。可通过使用两个时间模式对所述一个或多个另外的经编码流进行编码且比较针对每一时间模式确定的一个或多个度量来评估成本函数。可针对帧的一个或多个部分,例如一个或多个编码单元,来评估成本函数。
在某些实例中,确定时间模式可包括设定帧的时间刷新参数。时间刷新参数可用于传信时间缓冲器的刷新,例如缓冲器内的一个或多个值的归零。在某些实例中,可在编码器处使用时间信令来指示以每拼片为基础的时间刷新。
在某些实例中,在使用时间缓冲器的第二时间模式中,时间刷新参数可被配置成临时实现与第一时间模式相关联的处理。
在某些实例中,编码器,例如如本文中的任何陈述中所陈述,可经由网络例如从远程服务器装置接收配置参数。在某些实例中,编码器可另外或替代地将配置参数传输到远程服务器装置。配置参数可配置如在这些陈述中的任一个中所描述的编码器的操作。
一种编码输入视频的实例方法可包括:在第一分辨率下接收输入视频;在一个或多个相应分辨率下基于输入视频和一个或多个经重建视频之间的差生成一个或多个残差;基于选定残差模式修改所述一个或多个残差;以及从所述一个或多个经修改残差创建一个或多个经编码流。
方法可包括:在第二分辨率下对输入视频进行下取样以创建经下取样视频;使用第一编解码器编码经下取样视频以创建基础编码流;从经编码视频重建视频以生成经重建视频;将经重建视频与输入视频进行比较;以及基于所述比较创建一个或多个另外的经编码流。
在所述方法中,一个残差集合可处于第一分辨率(例如,层级1),且一个残差集合可处于第二分辨率(例如,层级2)。在某些情况下,基础层可处于第一分辨率(例如,层级1)或低于第一分辨率的另一第三分辨率(例如,层级0)。可根据所传信参数,选择性地在一个或多个维度中应用或根本不应用下取样和/或上取样。
在一个实例中,修改所述一个或多个残差包括:接收残差权重集合;以及将所述残差权重集合应用于残差集合以生成经修改残差。此方法可进一步包括使用阈值集合对经修改残差进行阈值处理。在某些实例中,基于输入视频的分类确定残差权重的集合和阈值的集合中的一个或多个。在某些实例中,残差权重的集合包括从远程位置接收的残差掩码。在某些实例中,将残差权重的集合和阈值的集合中的一个或多个应用于残差群组。
另一种编码输入视频的实例方法可包括:在第一分辨率下接收输入视频;获得一个或多个混合视频流的所要位速率;在一个或多个相应分辨率下基于输入视频和一个或多个经重建视频之间的差生成一个或多个残差;基于所要位速率确定用于所述一个或多个残差的量化参数;基于所述量化参数量化所述一个或多个残差;以及从所述一个或多个经量化残差创建一个或多个经编码流。
方法可进一步包括:在第二分辨率下对输入视频进行下取样以创建经下取样视频;使用第一编解码器编码经下取样视频以创建基础编码流;从经编码视频重建视频以生成经重建视频;将经重建视频与输入视频进行比较;以及基于所述比较创建一个或多个另外的经编码流。
再次,如上文所陈述,残差集合可以处于不同空间分辨率。
确定量化参数可包括:接收到接收所述一个或多个经编码流和基础编码流的缓冲器的状态;以及使用所述状态来确定量化参数。此步骤还可或替代地包括接收基础编码层基础编码流的状态,以及使用所述状态来确定量化参数。针对每一帧、残差和/或残差群组确定量化参数。在一种情况下,可基于帧的目标数据大小和帧的当前数据大小使用先前量化参数集合确定帧的量化参数。在一种情况下,量化参数是基于先前量化参数集合。在一种情况下,所述方法包括:基于编码器的当前状态对所确定的量化参数封端。在一种情况下,所述量化参数用于确定用于量化的步宽。在一种情况下,量化参数包括Q值,其中用于量化的步宽为Q值的逆函数。
在一个实例中,方法包括以下中的一个或多个:发送基础编码流;发送第一层级编码流;以及发送第二层级编码流。
根据本公开的另一方面,提供一种解码方法。
一种将多个经编码流解码为经重建输出视频的方法包括:接收第一基础编码流;根据第一编解码器解码第一基础编码流以生成第一输出视频;接收一个或多个另外的经编码流;解码所述一个或多个另外的经编码流以生成残差集合;以及将残差集合与第一视频组合以生成经解码视频。
在一实例中,所述方法包括从标头检索多个解码参数。解码参数可指示哪些程序步骤包含在编码过程中(和/或将在解码过程中应用)。
在一实例中,解码所述一个或多个另外的经编码流以生成残差集合的步骤包括:应用熵解码操作;应用解量化操作;以及应用逆变换操作以生成残差集合。
在一实例中,解码所述一个或多个另外的经编码流以生成残差集合的步骤包括:基于来自时间缓冲器的协同定位的残差预测残差的子集。此可包括添加时间缓冲器的内容。
在一实例中,所述方法可包括接收第一层级编码流和接收第二层级编码流。在此实例中,解码所述一个或多个另外的经编码流以生成残差集合的步骤包括:解码第一层级编码流以导出第一残差集合;其中将残差集合与第一视频组合以生成经解码视频的步骤包括:将第一残差集合与第一输出视频组合以生成第二输出视频;对第二输出视频进行上取样以生成上取样的第二输出视频;解码第二层级编码流以导出第二残差集合;以及将第二残差集合与第二输出视频组合以生成经重建输出视频。
在一实例中,对第二输出视频进行上取样以生成上取样的第二输出视频的步骤包括:在从其导出上取样的第二输出视频中的块的第一残差集合中的要素所导出的值添加到上取样的第二输出视频中的相应块。所述块可以是2×2块。此额外步骤可基于标头中包含的预定值或信号选择性地执行。
在一实例中,解码第一层级编码流以导出第一残差集合的步骤包括:应用熵解码操作;应用解量化操作;以及应用逆变换操作以生成第一残差集合。在此实例中,解码第一层级编码流以导出第一残差集合的步骤可包括:应用滤波器,例如被配置成将掩码应用于残差块的解块滤波器。掩码可根据预定义权重的集合加权。
在一实例中,解码第二层级编码流以导出第二残差集合的步骤包括:应用熵解码操作;应用解量化操作;以及应用逆变换操作以生成第二残差集合。逆变换操作可以是如上文所定义的操作的逆操作,或可以是大体上镜射操作。也就是说,可选择性地应用2×2块或4×4块变换。所述变换可通过解码方法检测或在标头中传信。如果使用2×2变换,则可通过添加从其预测经变换残差块的残差的值来修改系数。如果使用4×4变换,则将通过添加四个残差的平均值来修改系数。
所述方法可进一步包括显示或输出经重建输出。
根据另一方面,提供一种用于将数据集编码成包括标头和有效负载的经编码数据集的设备。所述设备被配置成根据上述步骤编码输入视频。所述设备可包括被配置成实行上述方面中的任一个的方法的处理器。
根据另一方面,可提供一种用于从包括标头和有效负载的数据集将数据集解码成经重建视频的设备。所述设备被配置成根据上述步骤解码输出视频。所述设备可包括被配置成实行上述方面中的任一个的方法的处理器。
还可提供编码器和解码器。
根据本发明的另外方面,可提供计算机可读介质,其在由处理器执行时使得所述处理器执行上述方面的方法中的任一种。
在上文的解码实例中的任一个中,一种解码方法可包括:在第一和第二层级中的一个或多个处解析经编码数据流以提取识别一个或多个拼片的标头信息;以及基于所述标头信息选择性地解码经编码数据流。
根据本公开的一个方面,存在一种将一个或多个经编码流解码为经重建输出视频的方法,所述方法包括:接收第一基础编码流;根据第一编解码器解码第一基础编码流以生成第一输出视频;接收一个或多个另外的经编码流;接收指示用于所述一个或多个另外的经编码流的一个或多个部分的时间模式的数据;解码指示时间模式的数据且配置用于所述一个或多个另外的经编码流的一个或多个相应时间缓冲器;解码所述一个或多个另外的经编码流以生成残差集合,包含将来自所述一个或多个时间缓冲器的数据选择性地应用于经解码的一个或多个另外的经编码流;以及将残差集合与第一视频组合以生成经解码视频。
可按对应于解码方法的方式来应用如应用于编码方法的变型。
在一个实例中,所述方法进一步包括:接收指示用于帧的时间刷新的时间信令;以及在关于帧的经解码数据选择性地应用来自所述一个或多个时间缓冲器中的一个的数据之前,使时间缓冲器内的值归零(例如,时间“刷新”)。
在一个实例中,将来自所述一个或多个时间缓冲器的数据选择性地应用于经解码的一个或多个另外的经编码流包括响应于指示第二时间模式而从所述一个或多个时间缓冲器中的一个减去数据,且响应于指示第一时间模式而不从所述一个或多个时间缓冲器中的一个减去数据。在一个实例中,指示所述一个或多个另外的经编码流的一个或多个部分的时间模式的数据包括每编码单元一个位。
特定实例中使用的惯例
本文中所描述的特定实例使用用于视频编码技术的常规表示法。举例来说,表示法在本文中用以指代中的一个或多个编程函数和数学运算。本文所使用的特定数学运算符以类似于C编程语言中使用的惯例的方式呈现。在某些实例中,整数除法和算术移位操作的结果如下文陈述而限定,且限定额外操作,例如指数运算和实值除法。编号和计数惯例通常从0开始,例如“第一”等效于第0,“第二”等效于第1,等等。
在实例中,算术运算符使用常规表示法:
+ 加法
- 减法(作为两个自变量运算符)或求反(作为一元前缀运算符)
* 乘法,包含矩阵乘法
xy 指数运算。向y的幂指定x。
÷ 用于表示数学等式中的除法,其中不预期截断或舍入。
x%y 模量。x除以y的余数,仅针对整数x和y限定,其中x>=0且y>0。
还使用常规逻辑运算符。以下逻辑运算符限定如下:
x&&y -x和y的布尔逻辑“与”
x||y -x和y的布尔逻辑“或”
! -布尔逻辑“非”
x?y:z -如果x为TRUE或不等于0,则计算结果为y的值;否则,计算结果为z的值。
关系运算符还具有常规含义,例如:>-大于;>=-大于或等于;<-小于;<=-小于或等于;==-等于;!=-不等于。
当关系运算符应用于已被指派值“na”(不可适用)的语法要素或变量时,值“na”可视为语法要素或变量的相异值。值“na”被视为不等于任何其它值。
还在实例中使用以下逐位运算符:
&逐位“与”。当对整数自变量进行运算时,此对整数值的二的补数表示进行运算。当对含有比另一自变量少的位的二进制自变量进行运算时,通过将较高有效位相加等于0来扩展较短自变量。
|逐位“或”。当对整数自变量进行运算时,此对整数值的二的补数表示进行运算。当对含有比另一自变量少的位的二进制自变量进行运算时,通过将较高有效位相加等于0来扩展较短自变量。
^逐位“异或”。当对整数自变量进行运算时,此对整数值的二的补数表示进行运算。当对含有比另一自变量少的位的二进制自变量进行运算时,通过将较高有效位相加等于0来扩展较短自变量。
x>>y x乘y二进制数字的二的补数整数表示的算术右移。此函数仅针对y的非负整数值限定。由于右移而移位到最高有效位(MSB)中的位的值等于移位运算之前x的MSB。
x<<y x乘y二进制数字的二的补数整数表示的算术左移。此函数仅针对y的非负整数值限定。由于左移而移位到最低有效位(LSB)中的位的值等于0。
还使用以下算术运算符:=-指派运算符;++-递增,即,x++等效于x=x+1(当在阵列索引中使用时,此可计算为递增运算之前变量的值);---递减,即,x--等效于x=x-1(当在阵列索引中使用时,此可计算为递减运算之前变量的值);+=-递增指定量,即,x+=3等效于x=x+3,且x+=(-3)等效于x=x+(-3);-=-递减指定量,即,x-=3等效于x=x-3,且x-=(-3)等效于x=x-(-3)。
可使用如下表示法指定值的范围:x=y..z或x=y到z,其中x取从y开始到z的整数值(包含端点),其中x,y和z是整数且z大于y。
还在特定实例计算中使用以下数学函数:
Ceil(x)大于或等于x的最小整数。
Floor(x) 小于或等于x的最大整数。
Ln(x) x的自然对数(底-e对数,其中e为自然对数底常数2.718281828...)。
Log10(x)x的底-10对数。
Round(x)=Sign(x)*Floor(Abs(x)+0.5)
当未通过使用圆括号显式地指示表达式中的优先次序时,以下规则可适用:较高优先级运算在任何较低优先级运算之前计算;且相同优先级运算从左到右循序计算。下表指示特定实例操作的优选优先级(例如,从最高到最低,其中表中的较高位置指示较高优先级-此可与如C编程语言中所使用的优先次序相同)。
在本文实例中的位流的描述中,位流中的语法要素可以粗体样式表示。语法要素可以其名称(例如,以带有下划线字符的全部小写字母)和其编码表示方法的一个描述符描述。本文中所描述的解码过程可被配置成根据语法要素的值和先前经解码语法要素的值进行。当语法要素的值在语法表或文本中使用时,其可以常规(即,非粗体)样式呈现。
在某些情况下,语法表可使用从语法要素值导出的其它变量的值。此些变量呈现在语法表或文本中,以不带任何下划线字符的小写字母与大写字母的混合形式表示。以大写字母开始的变量被导出用于当前语法结构和所有依附的语法结构的解码。以大写字母开始的变量可在解码过程中用于稍后语法结构,更不必说变量的起始语法结构。以小写字母开始的变量仅可在其被导出的条项内使用。
在某些情况下,语法要素值或变量值的“助记符”名称与其数值可互换地使用。有时,“助记符”名称在无任何相关联数值的情况下使用。值与名称的关联在文本中指定。名称由通过下划线字符分隔的一个或多个字母群组构成。每一群组以大写字母开始,且可含有更多大写字母。应注意,名称仅提供为实例,且实施方案可使用不同名称。
指定位流中的当前位置的性质的函数可被称为语法函数。这些函数在实例中指定,且可假定位流指针的存在,指示待由解码过程从位流读取的下一位的位置。语法函数可依据其名称描述,其可构造为语法要素名称且以包含通过逗点(如果一个以上变量)分隔的零个或更多变量名称(为了清晰)或值(为了使用)的左和右圆括号结束。
并非语法函数的函数(例如,数学函数)可依据其名称描述,其以大写字母开始,含有无任何下划线字符的小写字母与大写字母的混合形式,且以包含通过逗点(如果一个以上变量)分隔的零个或更多变量名称(为了清晰)或值(为了使用)的左和右圆括号结束。
一维阵列可被称为列表。二维阵列可被称为矩阵。阵列可以是语法要素或变量。在实例中使用下标或方括号以便于阵列的索引。参考矩阵的视觉描绘,第一下标用作行(竖直)索引,且第二下标用作列(水平)索引。当使用方括号而非下标用于索引时,索引次序可反转。因此,水平位置x和竖直位置y处矩阵S的要素可表示为S[x][y]或Syx。矩阵的单个列可被称为列表且通过省略行索引来表示。因此,水平位置x处矩阵s的列可表示为列表S[x]。
阵列的行和列中的条目的值的规范可由{{...}{...}}表示,其中每一对内部中括号指定呈递增列次序的行内的要素的值,且行以递增行次序排序。因此,设定矩阵S等于{{16}{49}}指定,S[0][0]设定成等于1,S[1][0]设定成等于6,S[0][1]设定成等于4,且S[1][1]设定成等于9。
在实例中通过用单个引用标记围封位值串来指示二进制表示法。举例来说,‘01000001’表示八位串,仅其第二位和其最后位(从最高到最低有效位计数)等于1。通过对十六进制数字加前缀“0x”来指示十六进制表示法,其可用于在位数目为4的整数倍时代替二进制表示法。举例来说,0x41表示八位串,仅其第二位和其最后位(从最高到最低有效位计数)等于1。未围封在单引号中且未加前缀“0x”的数值可被视为十进制值。等于0的值可表示测试语句中的FALSE条件。值TRUE可以由不同于零的任何值表示。
在本文呈现的伪码实例中,逻辑运算的语句将以以下形式用数学方式描述:
可以以下方式描述:
..如下/...以下适用:
如果条件0,则语句0
否则,如果条件1,则语句1
...
否则(关于其余条件的信息性批注),则语句n
文本中比如“如果...否则,如果...否则,...”的语句可用“...如下”或“...以下适用”紧接着“如果...”来引入。“如果...否则,如果...否则,...”的最后条件始终为“否则,...”。交错的“如果...否则,如果...否则,...”语句可通过使“...如下”或“...以下适用”与结尾“否则,...”匹配来识别。
在特定伪码实例中,逻辑运算的语句将以以下形式用数学方式描述:
可以以下方式描述:
...如下/...以下适用:
如果所有以下条件为真,则语句0:
条件0a
条件0b
否则,如果以下条件中的一个或多个为真,则语句1:
条件1a
条件1b
...
否则,语句n
在特定伪码实例中,逻辑运算的语句将以以下形式用数学方式描述:
可以以下方式描述:
当条件0时,语句0
当条件1时,语句1
在实例中,过程用于描述语法要素的解码。过程可具有单独描述的规范和调用。涉及当前语法结构和依附的语法结构的语法要素和大写变量可在过程规范和调用中可用。过程规范还可具有显式地指定作为输入的小写变量。每一过程规范可具有显式地指定的输出。输出为变量,其可为大写变量或小写变量。当调用过程时,变量的指派指定如下:如果调用和过程规范处的变量不具有相同名称,则所述变量显式地指派到过程规范的小写输入或输出变量;否则(调用和过程规范处的变量具有相同名称),暗示指派。在过程的规范中,特定编码块可由值等于特定编码块的地址的变量名称指代。
在例如实施于流式传输服务器或客户端装置或来自数据存储库的客户端装置解码中的编码器和解码器两者处,本文中所描述的方法、“组件”和过程可体现为代码(例如,软件代码)和/或数据。编码器和解码器可以硬件或软件实施,如数据压缩领域中众所周知。举例来说,使用专门编程的图形处理单元(GPU)或专门设计的现场可编程门阵列(FPGA)的硬件加速可提供某些效率。出于完整性,此类代码和数据可存储于一个或多个计算机可读介质上,所述计算机可读介质可包含可存储代码和/或数据以供计算机系统使用的任何装置或介质。当计算机系统读取并且执行存储于计算机可读介质上的代码和/或数据时,计算机系统执行体现为存储在计算机可读存储介质内的数据结构和代码的方法和过程。在某些实施例中,本文中所描述的方法和过程的步骤中的一个或多个可由处理器(例如,计算机系统或数据存储系统的处理器)执行。
一般来说,本文中所描述或图式中所示出的功能性中的任一个可使用软件、固件(例如,固定逻辑电路系统)、可编程或不可编程硬件,或这些实施方案的组合来实施。一般来说,如本文中所使用的术语“组件”或“功能”表示软件、固件、硬件或这些的组合。举例来说,在软件实施方案的情况下,术语“组件”或“功能”可指代在被执行于一个或多个处理装置上时执行指定任务的程序代码。组件和功能分离成相异单元的所说明分离可反映此类软件和/或硬件和任务的任何实际或概念性的物理分组和分配。
参考文献
以下参考文献的全文以引用的方式并入本文中:“寻求针对低复杂性视频编码增强的提议”,ISO/IEC JTC1/SC29/WG11 N17944,中国澳门,2018年10月;以及“针对低复杂性视频编码增强的要求”,ISO/IEC JTC1/SC29/WG11 N18098,中国澳门,2018年10月。
以下专利和专利申请的内容的全文以引用的方式并入本文中:US 8,977,065;US8,948,248;US 8,711,943;US 9,129,411;US 8,531,321;US 9,510,018;US 15/296,633;US 13/188,237;US 9,300,980;US 9,628,817;US 15/479,966;US 9,626,772;US 15/459,883;PCT/EP2013/059833;PCT/EP2013/059847;PCT/EP2013/059880;PCT/EP2013/059853;PCT/EP2013/059885;PCT/EP2013/059886;PCT/IB2014/060716;PCT/GB2016/053736;PCT/GB2016/050632;PCT/GB2017/050405:PCT/GB2017/050584:PCT/GB2017/050673;PCT/GB2017/052141:PCT/GB2017/052142;PCT/GB2017/052348;PCT/GB2017/052349;PCT/GB2017/052631;PCT/GB2017/052632;PCT/GB2017/052633;PCT/GB2017/052631;GB1615265.4;PCT/GB2017/052632;GB 1615266.2;PCT/GB2017/052633;GB 1615267.0;PCT/GB2017/053716;GB 1621117.9;GB 1707373.5;GB 1708447.6;GR 20170100431;PCT/EP2018/075603;EP 17386045.3;PCT/EP2018/082350;EP 17386046.1;PCT/GB2018/053551;EP 17386047.9;GB 1720365.4;GB 18000934.0;EP 18386002.2;PCT/GB2018/053552;GB 1806926.0;GB 1811594.9;GB 1811651.7;GB 1811933.9;GB 1812407.3;PCT/GB2018/053546;GB 1812708.4;GB 1812709.2;GB 1812710.0;GB 1815437.7;PCT/GB2018/053555;PCT/GB2018/053547;PCT/GB2018/053554;PCT/GB2018/053548;GB 1816172.9;GB1816469.9;GB 1820473.5;GB 1900511.5;GB 1817783.2;GB 1817780.8;GB 1817781.6;GB1817784;GB 1902008.0;PCT/GB2017/052141;GB 1612583.3;EP 17752417.0;PCT/GB2017/052142;GB 1612858.8;PCT/GB2017/052348;GB 1613689.7;PCT/GB2017/052349;GB1613697.0。
本公开还与以下英国专利申请相关,其内容全文以引用的方式并入本文中:GB1903844.7,GB1904014.6,GB1904492.4,GB1905325.5,GB1909701.3,GB1909724.5,GB1909997.7,GB1910674.9,GB1911467.7,GB1911546.8,GB1914215.7,GB1914414.6,GB1914634.9,GB1915553.0,GB1916090.2,GB1918099.1,GB2000430.5,GB2000483.4,GB2000600.3,GB2000668.0,GB2001408.0,and US 62/984,261。
附录
本附录陈述神经网络上取样器内核的实例测试值:
us_layer1_kernel:Tensor4D_FP32(3,3,1,16)={-1.41084030e-01f,9.31098983e-02f,-1.34773910e-01f,-2.28807237e-02f,6.85299039e-02f,-2.61796445e-01f,4.50513251e-02f,-9.27503034e-02f,3.51776704e-02f,-3.75421681e-02f,3.48821692e-02f,-1.97652541e-02f,5.42435385e-02f,5.53956255e-02f,-6.69758171e-02f,1.53271168e-01f,-3.73172164e-02f,3.56322676e-02f,-2.16064841e-01f,-1.82147045e-02f,-1.44671440e-01f,1.02563798e-01f,-1.91772074e-01f,8.01544413e-02f,4.77155223e-02f,-4.41845991e-02f,3.30503732e-02f,5.62866703e-02f,-7.71014858e-03f,-5.44822868e-03f,8.70354474e-02f,9.19423345e-03f,-1.16019882e-02f,8.42235386e-02f,-9.52602625e-02f,7.36623770e-03f,-3.09397113e-02f,5.15783429e-02f,1.29244000e-0lf,-7.07662245e-03f,2.48695776e-01f,5.73697016e-02f,-5.06149009e-02f,1.11225368e-02f,-3.72100696e-02f,-1.78759713e-02f,-3.08060925e-03f,6.27207085e-02f,-3.85343991e-02f,8.60163271e-02f,1.07082412e-01f,2.21030377e-02f,-9.23042446e-02f,1.19127659e-02f,-2.95122224e-03f,7.40718320e-02f,3.72054316e-02f,-2.86619030e-02f,-6.61083236e-02f,-7.86441267e-02f,-4.92218025e-02f,-1.57362640e-01f,-5.06451167e-03f,4.98885463e-04f,-9.27802455e-03f,9.82660893e-03f,5.41823693e-02f,4.07200307e-02f,2.75054220e-02f,-2.07493678e-01f,2.15178132e-02f,-9.22169983e-02f,-1.15027346e-01f,-2.64864620e-02f,-5.67401797e-02f,-9.97813195e-02f,1.03374301e-02f,1.84954870e-02f,7.86372870e-02f,-4.30381410e-02f,-6.68329298e-02f,-2.96362638e-02f,1.10683285e-01f,5.43097965e-02f,-1.94774847e-02f,-9.17459559e-03f,1.44741684e-01f,4.55530323e-02f,-1.22463793e-01f,1.09305903e-01f,1.26978466e-02f,-2.51851287e-02f,-4.69901972e-02f,1.45491347e-01f,1.06764054e-02f,-2.37240605e-02f,3.65678407e-02f,3.79142314e-02f,7.28409737e-02f,1.65885806e-01f,1.60030782e-01f,2.10506301e-02f,-5.24207354e-02f,-1.57678679e-01f,5.13638146e-02f,2.96306182e-02f,-1.49404295e-02f,2.26740912e-03f,-2.00474024e-01f,-4.17368114e-02f,6.52428120e-02f,1.36250272e-01f,-9.53990966e-02f,-9.28792655e-02f,-1.54301003e-01f,2.28194874e-02f,6.45937026e-02f,-4.95569259e-02f,1.39574781e-01f,-2.63163131e-02f,-9.63334218e-02f,-1.88225329e-01f,-6.68186843e-02f,4.45094369e-02f,1.86352968e-01f,-1.04716487e-01f,-1.31562442e-01f,-1.21508308e-01f,3.38261202e-02f,1.31264895e-01f,4.67112437e-02f,5.16150929e-02f,3.52771990e-02f,-2.98504204e-01f,2.31798831e-03f,8.31564218e-02f,6.71869377e-03f,-1.92980317e-03f,3.54144014e-02f,1.25442013e-01f,-5.69025893e-03f,-2.42539141e-02f,-3.59425023e-02f,-1.77264456e-02f}
us_layer2_kernel:Tensor3D_FP32(3,3,16,4)={6.33245381e-03f,-1.04955370e-02f,-7.64640868e-02f,1.04394630e-01f,-1.12143323e-01f,8.84293765e-02f,4.21205387e-02f,5.64377718e-02f,5.26978858e-02f,-7.51010850e-02f,4.34068143e-02f,-1.94638863e-01f,2.15833232e-01f,-1.13282958e-03f,1.32124677e-01f,3.43414620e-02f,-9.80699062e-02f,-1.09704457e-01f,-4.03996333e-02f,-1.35718092e-01f,2.95123621e-03f,-5.81902452e-02f,5.18400222e-02f,-9.05640125e-02f,1.50605440e-01f,-1.21687643e-01f,2.08101258e-01f,-5.10746613e-02f,1.46442071e-01f,-7.29629695e-02f,-1.39488146e-01f,1.37462586e-01f,-8.10248703e-02f,-6.19493499e-02f,2.21347332e-01f,-2.34334439e-01f,4.30567451e-02f,2.13719338e-01f,7.92161897e-02f,1.51598938e-02f,3.00818868e-02f,-7.42932607e-04f,-1.31590351e-01f,1.85781255e-01f,-4.65347711e-03f,-2.43773490e-01f,2.63357293e-02f,-3.25426925e-03f,6.67467117e-02f,1.94742084e-01f,2.88871527e-02f,4.39467095e-02f,-4.63892408e-02f,-6.06723763e-02f,2.23232135e-02f,-2.14727566e-01f,9.72462539e-03f,-1.12323351e-01f,-1.25625610e-01f,1.10242918e-01f,7.58204609e-02f,3.76487561e-02f,7.56741092e-02f,1.42208323e-01f,-8.56551304e-02f,2.67496526e-01f,2.43334547e-02f,-3.68960761e-02f,6.51121214e-02f,-2.92595550e-02f,-1.19445384e-01f,-1.25117391e-01f,-7.94723704e-02f,-5.52651063e-02f,1.09263748e-01f,1.82550594e-01f,-1.60724610e-01f,-7.59197548e-02f,7.49233365e-02f,9.94861498e-02f,-1.82569046e-02f,1.47254029e-02f,-4.44847643e-02f,-1.22822165e-01f,-1.12555832e-01f,1.12247109e-01f,-2.84761079e-02f,-2.05388162e-02f,-3.50958928e-02f,1.39616013e-01f,1.06154449e-01f,-9.16776657e-02f,-1.43141896e-01f,5.20549566e-02f,9.52381566e-02f,-8.75469595e-02f,-1.01462469e-01f,1.74522754e-02f,6.82789385e-02f,6.29173890e-02f,-1.14021309e-01f,-1.21160626e-01f,4.30294387e-02f,6.43974990e-02f,-1.54791161e-01f,-7.69131184e-02f,-2.84353886e-02f,-1.07519612e-01f,-6.58828169e-02f,-4.02578823e-02f,1.59347877e-01f,-1.79592725e-02f,4.52463748e-03f,-6.50652871e-02f,-2.73805093e-02f,-4.24853638e-02f,1.44114226e-01f,6.71110675e-03f,-2.06886873e-01f,2.48743650e-02f,1.20029775e-02f,1.20832704e-01f,-1.36132706e-02f,7.27911815e-02f,-1.91886991e-01f,2.49870382e-02f,-1.22994900e-01f,1.25552088e-01f,7.47941881e-02f,-1.24070607e-01f,-1.49875551e-01f,-1.32682770e-01f,-5.30838082e-03f,1.52762681e-01f,9.25363675e-02f,-7.15189055e-02f,-1.01389468e-01f,5.05505055e-02f,-1.03882123e-02f,1.28126472e-01f,-7.02821603e-03f,-1.97356284e-01f,1.68811291e-01f,5.53274043e-02f,-2.48444341e-02f,1.94187909e-02f,-4.13846411e-02f,-7.51732737e-02f,2.85033844e-02f,1.01955794e-03f,4.56635170e-02f,1.33634806e-02f,4.91224751e-02f,-3.14815827e-02f,9.61789337e-04f,-1.16922125e-01f,2.18285043e-02f,1.55752704e-01f,-4.31438908e-03f,-1.07203368e-02f,8.30481574e-03f,-3.36630940e-02f,2.73541231e-02f,-1.78011596e-01f,-4.73164655e-02f,2.51824018e-02f,2.30563991e-02f,2.32195966e-02f,1.17772520e-01f,-1.89441293e-02f,6.15934245e-02f,-1.53331179e-02f,1.30198702e-01f,4.11545672e-02f,2.47499924e-02f,4.14127409e-02f,6.30946383e-02f,-1.77980904e-02f,-1.13194898e-01f,-6.81287348e-02f,9.88358445e-03f,1.80843398e-01f,1.69518907e-02f,-4.47042324e-02f,-1.41637605e-02f,-4.90729660e-02f,-4.22141738e-02f,-1.18456043e-01f,-3.59974802e-02f,1.42708300e-02f,7.37891272e-02f,-5.33544794e-02f,1.51815116e-01f,-1.00672627e-02f,-4.77370955e-02f,-7.70068616e-02f,-1.41694620e-01f,8.36707354e-02f,1.37744760e-02f,3.00155342e-01f,8.57121795e-02f,-2.12971136e-01f,1.16683885e-01f,9.42589417e-02f,5.13079911e-02f,1.54281944e-01f,-1.14778113e-02f,-1.42881781e-01f,-1.06360398e-01f,-2.64805615e-01f,-1.30332038e-02f,-1.29198700e-01f,1.57558769e-01f,6.28474914e-03f,3.20065171e-01f,1.11988215e-02f,2.52308279e-01f,-1.86741650e-01f,-4.85163517e-02f,-5.77348322e-02f,1.73906848e-01f,1.11191697e-01f,-1.61423609e-01f,-1.13434017e-01f,1.26967236e-01f,-1.67516507e-02f,-8.22124407e-02f,-2.10107844e-02f,-4.70526442e-02f,6.00312762e-02f,7.18277246e-02f,3.13637517e-02f,8.93386975e-02f,-4.44040587e-03f,-9.51816216e-02f,-1.47718236e-01f,1.65281538e-02f,1.34988986e-02f,4.80517782e-02f,-9.65404958e-02f,1.40959471e-02f,-5.53384759e-02f,-2.72534061e-02f,2.62833294e-02f,-1.63816914e-01f,-1.44624650e-01f,1.20901503e-02f,1.19794615e-01f,-1.90997720e-02f,2.63831951e-02f,2.54842728e-01f,2.25048333e-01f,-1.80821672e-01f,-2.93815229e-02f,4.37161446e-01f,-9.82301533e-02f,-2.29180112e-01f,-3.88183445e-02f,2.15006188e-01f,1.71044737e-01f,-2.52068818e-01f,-1.54835969e-01f,-3.57184321e-01f,9.19836760e-02f,1.14235722e-01f,-8.07379335e-02f,-1.67503044e-01f,6.62510023e-02f,2.49479741e-01f,9.48333964e-02f,2.80678682e-02f,1.67486027e-01f,4.44321126e-01f,8.31490234e-02f,6.48184270e-02f,-2.35687494e-01f,-2.02227533e-01f,-2.80010372e-01f,-1.42441705e-01f,3.73379216e-02f,1.37202099e-01f,2.14403048e-01f,-1.90773681e-02f,-9.54359546e-02f,1.38671203e-02f,-4.14732248e-02f,-1.44975752e-01f,1.23142749e-01f,-1.20386019e-01f,4.30736458e-03f,5.40281534e-02f,3.68678905e-02f,1.17263041e-01f,-1.19504638e-01f,1.65910080e-01f,-7.93663561e-02f,-1.59859478e-01f,1.30104035e-01f,-5.12327775e-02f,-2.69437507e-02f,1.61378413e-01f,-1.66682631e-01f,1.42815737e-02f,5.91942258e-02f,-1.15488388e-01f,2.47667190e-02f,-9.60654020e-02f,2.30389591e-02f,1.45454630e-01f,-3.83892208e-01f,-3.48924100e-02f,4.94621575e-01f,1.31215930e-01f,-6.45582676e-02f,-1.89624280e-01f,-3.26677948e-01f,2.26888824e-02f,2.70347863e-01f,1.80545300e-02f,-2.58584153e-02f,7.51152560e-02f,1.55662745e-02f,-7.55750090e-02f,4.64267656e-02f,1.06840938e-01f,1.46118030e-01f,-4.89563830e-02f,9.93431360e-02f,-8.55714828e-02f,-1.25848889e-01f,9.04214382e-02f,-9.83981043e-02f,-4.19425853e-02f,-2.18845248e-01f,1.04291327e-01f,6.04276434e-02f,8.47627819e-02f,-3.19354013e-02f,8.96960199e-02f,-3.80666740e-02f,-1.27697840e-01f,1.16602555e-01f,-4.86721471e-02f,-2.00404078e-02f,4.33820358e-04f,-2.41963007e-02f,9.44377333e-02f,-1.13402940e-01f,1.54441983e-01f,-6.21834993e-02f,4.79655601e-02f,4.17957872e-01f,-1.27584010e-01f,-2.16431364e-01f,-1.97374937e-03f,-1.03103267e-02f,-1.05308145e-01f,-2.78487382e-03f,-8.74692127e-02f,1.03021942e-01f,-1.22398764e-01f,1.63182363e-01f,2.23339215e-01f,1.51619781e-02f,7.75940064e-03f,6.13315478e-02f,-4.63349745e-02f,-1.91256031e-01f,3.04002315e-02f,-1.40351385e-01f,-2.58211717e-02f,1.63556337e-01f,-2.15994790e-01f,-9.37260315e-02f,-1.20724082e-01f,-4.86935265e-02f,1.69598863e-01f,-1.40344262e-01f,-1.56492554e-02f,-2.93590613e-02f,1.77454203e-01f,8.86754468e-02f,1.39782295e-01f,2.29205061e-02f,-8.31865966e-02f,5.12111038e-02f,6.50634468e-02f,-7.25559192e-03f,1.56966560e-02f,-3.29366811e-02f,-9.51480940e-02f,-1.12466224e-01f,1.34184808e-01f,-1.85190514e-02f,-3.44241038e-02f,2.88441102e-03f,-5.22443093e-02f,2.76800275e-01f,1.55083425e-02f,-1.13139518e-01f,-7.82907307e-02f,4.04207148e-02f,-1.59765586e-01f,5.68327047e-02f,4.52976860e-02f,8.98251608e-02f,5.77608645e-02f,-2.05498159e-01f,1.92694310e-02f,1.09445862e-01f,-1.07486919e-01f,7.74176270e-02f,-2.34839320e-02f,-5.87587990e-02f,-1.99952766e-01f,4.88866828e-02f,1.57094464e-01f,-1.27639011e-01f,1.18134432e-01f,1.65418327e-01f,1.58160459e-02f,-1.03516594e-01f,1.08604118e-01f,1.09552778e-01f,-3.01288702e-02f,8.92308801e-02f,8.78076479e-02f,1.80325642e-01f,-9.63688716e-02f,-9.48763043e-02f,1.11239254e-01f,-4.57538664e-02f,-4.64903936e-02f,3.62795852e-02f,-5.44275902e-02f,1.01453766e-01f,-9.68999565e-02f,-1.00147367e-01f,5.05828746e-02f,2.01076120e-02f,5.09904325e-02f,1.33387849e-01f,-5.86754940e-02f,-1.65975168e-02f,4.78810892e-02f,1.21149577e-01f,-7.68746883e-02f,-5.41327521e-02f,-4.08202820e-02f,1.82107426e-02f,-5.09710722e-02f,-5.78883253e-02f,1.38597578e-01f,3.97315472e-02f,-2.34697051e-02f,-2.68342383e-02f,2.48119142e-02f,-8.64342414e-03f,-4.07836251e-02f,1.35181723e-02f,-7.78336450e-02f,-6.26475587e-02f,2.00905893e-02f,-7.39092985e-03f,8.39750767e-02f,-3.35541144e-02f,9.86860469e-02f,-5.70620932e-02f,1.22933879e-01f,3.65988240e-02f,-7.83327147e-02f,-7.11319670e-02f,2.32027974e-02f,-4.73497249e-02f,-5.38150817e-02f,-3.65512967e-02f,7.89038390e-02f,-2.66834069e-02f,-5.64240888e-02f,9.18125920e-03f,9.88172740e-02f,1.68722551e-02f,-3.53356823e-02f,6.53948868e-03f,2.15070993e-02f,-1.80628616e-02f,5.74403107e-02f,2.17355173e-02f,-1.06472000e-01f,-7.84658045e-02f,1.07785119e-02f,7.12645650e-02f,-1.06326915e-01f,8.08671042e-02f,-1.16083669e-02f,-1.47858467e-02f,4.62195612e-02f,-7.65818432e-02f,-1.30814165e-01f,2.88332235e-02f,1.27556264e-01f,8.22251067e-02f,-6.34733262e-03f,-7.01304227e-02f,3.80594051e-03f,-1.34418413e-01f,5.87879531e-02f,5.80505729e-02f,1.25298798e-02f,1.09685898e-01f,9.59879681e-02f,6.36788923e-03f,-4.68046330e-02f,-8.04987028e-02f,-4.46980670e-02f,8.05985257e-02f,-4.70111426e-03f,5.59057631e-02f,-2.30870675e-02f,8.69351998e-02f,-8.31296518e-02f,2.41797008e-02f,-7.99082890e-02f,7.62604401e-02f,-6.23388402e-02f,-9.75745544e-03f,-8.23382512e-02f,-1.53752863e-02f,2.88945399e-02f,-5.37200831e-02f,7.93552771e-02f,1.27886273e-02f,-6.05425425e-02f,4.45702150e-02f,-2.06603259e-02f,6.89669549e-02f,-5.95158935e-02f,1.64563283e-02f,8.36538225e-02f,-1.00081436e-01f,-5.99694774e-02f,1.94207013e-01f,-1.56761464e-02f,5.23252152e-02f,-9.26710591e-02f,3.59066613e-02f,8.66876543e-02f,-2.03602433e-01f,-1.17385782e-01f,-1.16631761e-01f,1.08733520e-01f,4.69735153e-02f,2.89963130e-02f,-8.44228715e-02f,9.93011221e-02f,6.87584355e-02f,1.75104663e-02f,-6.64295256e-02f,-1.04675546e-01f,1.42710879e-01f,-6.27391338e-02f,1.29736781e-01f,-1.96640640e-01f,1.07235387e-02f,-4.66577187e-02f,1.23463459e-02f,5.20261303e-02f,-9.65078082e-03f,-3.33436802e-02f,5.92316538e-02f,8.82986933e-02f,-1.29388183e-01f,1.37113631e-01f,-1.02152310e-01f,8.08595307e-03f,9.42398533e-02f}
us_layer1_bias:Tensor1D_FP32()={-2.71837250e-03f,1.00593327e-03f,-2.91983772e-04f,1.41876517e-05f,-6.10931893e-04f,-4.02250531e-04f,-9.47722219e-05f,-3.40876228e-04f,-5.34553546e-03f,3.56744719e-03f,-2.54383660e-04f,-2.86490074e-04f,-6.41522696e-03f,-4.42847200e-02f,-3.19198221e-02f,2.24299170e-03f}
us_layer2_bias:Tensor1D_FP32()={-1.33045786e-03f,-2.39597703e-03f,1.86161429e-03f,3.07592891e-05f}。
Claims (26)
1.一种将输入视频编码为多个经编码流使得所述经编码流可组合以重建所述输入视频的方法,所述方法包括:
接收全分辨率输入视频;
对所述全分辨率输入视频进行下取样以创建经下取样视频;
指示使用基础编解码器对所述经下取样视频编码以创建基础编码流;
指示解码所述基础编码流以生成经重建视频;
将所述经重建视频与所述经下取样视频进行比较以创建第一残差集合;
编码所述第一残差集合以创建第一层级编码流;
解码所述第一残差集合以创建经解码第一残差集合;
将所述经解码第一残差集合应用于所述经重建视频以生成校正后的经重建视频;
对所述校正后的经重建视频进行上取样以生成上取样的经重建视频;
将所述上取样的经重建视频与所述全分辨率输入视频进行比较以创建第二残差集合;以及
编码所述第二残差集合以创建第二层级编码流,包含应用时间缓冲器来编码所述输入视频的当前帧和先前帧之间的差,
其中利用不同于所述基础编解码器的增强编解码器执行所述第一和第二残差的所述编码,
其中所述基础编码流、所述第一层级编码流和所述第二层级编码流提供所述全分辨率输入视频的编码。
2.根据权利要求1所述的方法,其中编码每一残差集合包括:
将变换应用于所述残差集合以创建系数集合;
将量化操作应用于所述系数集合以创建经量化系数的集合;以及,
将熵编码操作应用于所述经量化系数的集合。
3.根据权利要求2所述的方法,
其中所述输入视频分解为多个连续帧,输入视频的帧具有一个或多个相关联颜色平面,
其中针对所述多个相关联颜色平面中的每一个以逐帧为基础执行所述方法,且
其中编码每一残差集合包括,针对给定帧的给定颜色平面:
在所述残差集合的所述分辨率下,将所述残差集合布置为与2乘2或4乘4像元集合相关联的2乘2或4乘4编码单元;以及
独立于所述给定帧中的其它编码单元编码每一编码单元。
4.根据权利要求3所述的方法,其中应用所述变换包括应用相应的2乘2或4乘4哈达玛变换内核使得所述系数集合包括方向分量的集合。
5.根据权利要求2到4中任一权利要求所述的方法,其中应用量化操作包括应用使用可变大小的死区的线性量化器。
6.根据权利要求2到5中任一权利要求所述的方法,其中应用熵编码操作包括应用游程长度编码和/或霍夫曼编码中的一个或多个。
7.根据权利要求2到6中任一权利要求所述的方法,其包括为解码器生成指定所述编码的参数的一个或多个标头,所述参数包括以下中的一个或多个:
基础编解码器参数;
变换参数;以及
量化参数。
8.根据权利要求2到7中任一权利要求所述的方法,其中应用时间缓冲器包括:
从所述时间缓冲器导出时间系数的集合;以及,
从第二系数集合减去所述时间系数的集合。
9.根据权利要求1到8中任一权利要求所述的方法,其中编码来自所述第一残差集合和所述第二残差集合中的一个或多个的给定残差集合包括:
基于所述给定残差集合的预先分析对所述给定残差集合分级;以及,
选择所述给定残差集合的待编码的子集,所述编码包括随后变换所述给定残差集合。
10.根据权利要求1到9中任一权利要求所述的方法,其中上取样包括应用神经网络上取样器。
11.根据权利要求10所述的方法,其中所述神经网络上取样器包括两层卷积神经网络,两个卷积神经网络层之间具有非线性,所述卷积神经网络经训练以在给定相应经重建视频的情况下预测所述全分辨率输入视频。
12.根据权利要求1到11中任一权利要求所述的方法,其包括:
获得用于多个编码单元的时间模式元数据;
基于所获得的时间模式元数据确定时间模式以用于对所述多个编码单元进行编码;以及
基于所确定的时间模式和所述所获得的时间模式元数据生成用于所述多个编码单元的时间模式信令数据。
13.根据权利要求1到12中任一权利要求所述的方法,其包括:
设定用于帧的一个或多个时间刷新参数,所述时间刷新参数用于向所述解码器传信所述时间缓冲器的刷新。
14.根据权利要求1到13中任一权利要求所述的方法,其包括:
组合所述基础编码流、所述第一层级编码流和所述第二层级编码流以生成组合流;以及
将所述组合流发送到解码器。
15.一种将多个经编码流解码成经重建输出视频的方法,所述方法包括:
接收第一基础编码流;
指示使用基础编解码器对所述第一基础编码流解码以生成第一输出视频;
接收第一层级编码流;
使用增强编解码器解码所述第一层级编码流以生成第一残差集合,其中所述增强编解码器不同于所述基础编解码器;
将所述第一残差集合与所述第一输出视频组合以生成第一经重建视频;
接收第二层级编码流;
使用所述增强编解码器解码所述第二层级编码流以生成第二残差集合,包含将时间缓冲器应用于从所述第二层级编码流导出的数据以重建所述第二残差集合;
对所述第一经重建视频进行上取样以生成上取样的经重建视频;以及
将所述第二残差集合与所述上取样的经重建视频组合以生成第二经重建视频,所述第二经重建视频包括最初编码的全分辨率输入视频的经重建型式。
16.根据权利要求15所述的方法,其包括:
从与所述第一和第二层级编码流中的一个或多个相关联的一个或多个标头检索多个解码参数,
其中所述解码参数用于配置所述解码操作。
17.根据权利要求15或权利要求16所述的方法,其中解码所述第一和第二层级编码流中的每一个包括:
应用熵解码操作;
将解量化操作应用于从所述熵解码操作导出的数据;以及,
将逆变换操作应用于从所述解量化操作导出的数据以生成所述残差集合。
18.根据权利要求15到17中任一权利要求所述的方法,其中对所述第一经重建视频进行上取样包括:
将从其导出所述上取样的经重建视频中的块的所述第一残差集合中的要素的值添加到所述上取样的经重建视频中的相应块。
19.根据权利要求15到18中任一权利要求所述的方法,
其中所述输入视频分解为多个连续帧,输入视频的帧具有一个或多个相关联颜色平面,
其中针对所述多个相关联颜色平面中的每一个以逐帧为基础执行所述方法,且
其中解码每一残差集合包括,针对给定帧的给定颜色平面:
在所述残差集合的所述分辨率下,将所述残差集合布置为与2乘2或4乘4像元集合相关联的2乘2或4乘4编码单元;以及
独立于所述给定帧中的其它编码单元解码每一编码单元。
20.根据权利要求15到19中任一权利要求所述的方法,其中应用所述时间缓冲器包括:
响应于指示第二时间模式,将来自所述时间缓冲器的数据添加到从所述第二层级编码流解码的数据。
21.一种编码器,其包括:
输入视频接口,其用以接收输入视频;
下取样器,其用以对所述输入视频进行下取样;
基础编解码器接口,其用以接收经解码的基础编码流,所述基础编码流是通过将基础编解码器应用于所述下取样的输入视频而生成的;
第一残差生成器,其用以通过从所述下取样的输入视频减去经解码的基础编码流来生成第一残差集合;
第一层级编码器,其用以编码所述第一残差集合以生成第一层级编码流;
第一层级解码器,其用以解码所述第一层级编码流以获得经解码的第一残差集合;
求和组件,其用以将所述经解码的第一残差集合添加到所述经解码的基础编码流以生成校正后的经重建视频;
上取样器,其用以对所述校正后的经重建视频进行上取样以生成上取样的经重建视频;
第二残差生成器,其用以通过从所述输入视频减去所述上取样的经重建视频来生成第二残差集合;
第二层级编码器,其用以编码所述第二残差集合以生成第二层级编码流;
时间选择组件,其用以确定时间预测是否将应用于所述第二残差集合;以及
时间缓冲器,其用以在生成所述第二层级编码流时将时间预测应用于所述第二残差集合,
其中所述第一层级编码器和所述第二层级编码器实施不同于所述基础编解码器的增强编解码器,
其中所述基础编码流、所述第一层级编码流和所述第二层级编码流提供所述全分辨率输入视频的编码。
22.根据权利要求21所述的编码器,其包括:
残差模式选择组件,其用以指示由所述第一层级编码器和所述第二层级编码器中的相应一个或多个对所述第一残差集合和所述第二残差集合中的一个或多个进行选择性分级和滤波。
23.根据权利要求21或权利要求22所述的编码器,其中所述第一层级编码器和所述第二层级编码器各自包括:
变换组件,其用以应用2乘2或4乘4哈达玛变换;
量化组件;以及
熵编码组件,其用以应用游程长度编码和霍夫曼编码中的一个或多个。
24.一种解码器,其包括:
基础层级接口,其用以接收基础编码流的经解码型式,所述基础编码流正使用基础编解码器解码;
增强层级接口,其用以接收第一层级编码流和第二层级编码流
第一层级解码器,其用以解码所述第一层级编码流以获得第一残差集合;
第一求和组件,其用以将所述第一残差集合相加到基础编码流的经解码型式以生成第一经重建视频;
上取样器,其用以对所述第一经重建视频进行上取样以生成上取样的经重建视频;
第二层级解码器,其用以解码所述第二层级编码流以获得第二残差集合;
时间选择组件,其用以使用伴随着所述第一和第二层级编码流中的一个或多个的标头信息确定时间预测是否将应用于所述第二残差集合;
时间缓冲器,其用以在解码所述第二层级编码流时将时间预测应用于所述第二残差集合;以及
第二求和组件,其用以将所述第二残差集合相加到所述上取样的经重建视频以生成包括最初编码的全分辨率输入视频的经重建型式的第二经重建视频。
25.根据权利要求24所述的解码器,其中所述第一层级解码器和所述第二层级解码器各自包括:
熵编码组件,其用以应用游程长度编码和霍夫曼编码中的一个或多个;
解量化组件;以及
逆变换组件,其用以应用2乘2或4乘4哈达玛逆变换。
26.一种存储指令的非暂时性计算机可读存储介质,所述指令在由至少一个处理器执行时致使至少一个处理器执行根据权利要求1到20所述的方法中的任一个。
Applications Claiming Priority (45)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1903844.7 | 2019-03-20 | ||
GBGB1903844.7A GB201903844D0 (en) | 2019-03-20 | 2019-03-20 | A method of encoding and decoding a video |
GBGB1904014.6A GB201904014D0 (en) | 2019-03-23 | 2019-03-23 | Video coding technology |
GB1904014.6 | 2019-03-23 | ||
GB1904492.4 | 2019-03-29 | ||
GBGB1904492.4A GB201904492D0 (en) | 2019-03-29 | 2019-03-29 | Video coding technology |
GBGB1905325.5A GB201905325D0 (en) | 2019-04-15 | 2019-04-15 | Video coding technology |
GB1905325.5 | 2019-04-15 | ||
GBGB1909701.3A GB201909701D0 (en) | 2019-07-05 | 2019-07-05 | Video coding technology |
GB1909701.3 | 2019-07-05 | ||
GB1909724.5 | 2019-07-06 | ||
GBGB1909724.5A GB201909724D0 (en) | 2019-07-06 | 2019-07-06 | Video coding technology |
GBGB1909997.7A GB201909997D0 (en) | 2019-07-11 | 2019-07-11 | Encapsulation structure |
GB1909997.7 | 2019-07-11 | ||
GB1910674.9 | 2019-07-25 | ||
GBGB1910674.9A GB201910674D0 (en) | 2019-07-25 | 2019-07-25 | Video Coding Technology |
GB1911467.7 | 2019-08-09 | ||
GBGB1911467.7A GB201911467D0 (en) | 2019-08-09 | 2019-08-09 | Video coding technology |
GB1911546.8 | 2019-08-13 | ||
GBGB1911546.8A GB201911546D0 (en) | 2019-08-13 | 2019-08-13 | Video coding technology |
GB201914215A GB201914215D0 (en) | 2019-10-02 | 2019-10-02 | Video coding technology |
GB1914215.7 | 2019-10-02 | ||
GB1914414.6 | 2019-10-06 | ||
GB201914414A GB201914414D0 (en) | 2019-10-06 | 2019-10-06 | Video coding technology |
GB201914634A GB201914634D0 (en) | 2019-10-10 | 2019-10-10 | Video coding technology |
GB1914634.9 | 2019-10-10 | ||
GB1915553.0 | 2019-10-25 | ||
GB201915553A GB201915553D0 (en) | 2019-10-25 | 2019-10-25 | Video Coding technology |
GB1916090.2 | 2019-11-05 | ||
GBGB1916090.2A GB201916090D0 (en) | 2019-11-05 | 2019-11-05 | Video coding technology |
GBGB1918099.1A GB201918099D0 (en) | 2019-12-10 | 2019-12-10 | Video coding technology |
GB1918099.1 | 2019-12-10 | ||
GB2000430.5 | 2020-01-12 | ||
GBGB2000430.5A GB202000430D0 (en) | 2020-01-12 | 2020-01-12 | Video Coding technologies |
GBGB2000483.4A GB202000483D0 (en) | 2020-01-13 | 2020-01-13 | Video coding technology |
GB2000483.4 | 2020-01-13 | ||
GBGB2000600.3A GB202000600D0 (en) | 2020-01-15 | 2020-01-15 | Video coding technology |
GB2000600.3 | 2020-01-15 | ||
GBGB2000668.0A GB202000668D0 (en) | 2020-01-16 | 2020-01-16 | Video coding technology |
GB2000668.0 | 2020-01-16 | ||
GBGB2001408.0A GB202001408D0 (en) | 2020-01-31 | 2020-01-31 | Video coding technology |
GB2001408.0 | 2020-01-31 | ||
US202062984261P | 2020-03-02 | 2020-03-02 | |
US62/984,261 | 2020-03-02 | ||
PCT/GB2020/050695 WO2020188273A1 (en) | 2019-03-20 | 2020-03-18 | Low complexity enhancement video coding |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114503573A true CN114503573A (zh) | 2022-05-13 |
Family
ID=72519683
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080036630.8A Pending CN114503573A (zh) | 2019-03-20 | 2020-03-18 | 低复杂性增强视频编码 |
CN202080036653.9A Pending CN114467304A (zh) | 2019-03-20 | 2020-03-18 | 用于视频编码技术的时间信令 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080036653.9A Pending CN114467304A (zh) | 2019-03-20 | 2020-03-18 | 用于视频编码技术的时间信令 |
Country Status (11)
Country | Link |
---|---|
US (3) | US11792440B2 (zh) |
EP (3) | EP4383720A3 (zh) |
KR (1) | KR20220003511A (zh) |
CN (2) | CN114503573A (zh) |
AU (1) | AU2020243405A1 (zh) |
CA (1) | CA3133887A1 (zh) |
DK (1) | DK3942813T3 (zh) |
FI (1) | FI3942813T3 (zh) |
GB (33) | GB2620500B (zh) |
PL (1) | PL3942813T3 (zh) |
WO (2) | WO2020188271A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116366868A (zh) * | 2023-05-31 | 2023-06-30 | 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) | 一种并发视频包过滤方法、系统及储存介质 |
CN117335929A (zh) * | 2023-12-01 | 2024-01-02 | 十方星链(苏州)航天科技有限公司 | 一种卫星地面站多路并发编码调制通信终端及通信方法 |
WO2024016106A1 (en) * | 2022-07-18 | 2024-01-25 | Intel Corporation | Low-complexity enhancement video coding using multiple reference frames |
WO2024065464A1 (en) * | 2022-09-29 | 2024-04-04 | Intel Corporation | Low-complexity enhancment video coding using tile-level quantization parameters |
Families Citing this family (58)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220159250A1 (en) * | 2019-03-20 | 2022-05-19 | V-Nova International Limited | Residual filtering in signal enhancement coding |
US20230362412A1 (en) * | 2019-12-19 | 2023-11-09 | Telefonaktiebolaget Lm Ericsson (Publ) | Output process disable indicator |
US11356706B2 (en) | 2020-01-08 | 2022-06-07 | Qualcomm Incorporated | Storage and delivery of video data for video coding |
US11379951B2 (en) * | 2020-03-25 | 2022-07-05 | Nintendo Co., Ltd. | Systems and methods for machine learned image conversion |
JP2023524201A (ja) * | 2020-04-21 | 2023-06-09 | ドルビー ラボラトリーズ ライセンシング コーポレイション | ビデオ・コーディングにおける制約処理及び適合性試験のためのセマンティクス |
CN115715466A (zh) | 2020-05-22 | 2023-02-24 | 抖音视界有限公司 | 子比特流提取处理中的填充符有效载荷 |
GB2599341B (en) | 2020-07-28 | 2024-10-09 | V Nova International Ltd | Management system for multilayer encoders and decoders and method thereof |
US11647212B2 (en) * | 2020-09-30 | 2023-05-09 | Qualcomm Incorporated | Activation function design in neural network-based filtering process for video coding |
GB202016115D0 (en) | 2020-10-10 | 2020-11-25 | V Nova Int Ltd | Management of aspect ratio in hierarchical coding schemes |
CN116457842A (zh) * | 2020-11-16 | 2023-07-18 | 高通股份有限公司 | 用于高效视频处理的跳跃卷积 |
GB2621248B (en) | 2020-11-27 | 2024-09-04 | V Nova Int Ltd | Video encoding using pre-processing |
GB2601364B (en) | 2020-11-27 | 2023-09-06 | V Nova Int Ltd | Decoding a video stream within a browser |
GB2601368B (en) | 2020-11-27 | 2023-09-20 | V Nova Int Ltd | Video decoding using post-processing control |
GB2601484B (en) | 2020-11-27 | 2024-08-07 | V Nova Int Ltd | Decoding a video stream on a client device |
US11558617B2 (en) | 2020-11-30 | 2023-01-17 | Tencent America LLC | End-to-end dependent quantization with deep reinforcement learning |
US12101475B2 (en) * | 2020-12-18 | 2024-09-24 | Intel Corporation | Offloading video coding processes to hardware for better density-quality tradeoffs |
US11948271B2 (en) * | 2020-12-23 | 2024-04-02 | Netflix, Inc. | Machine learning techniques for video downsampling |
WO2022154686A1 (en) * | 2021-01-13 | 2022-07-21 | Huawei Technologies Co., Ltd. | Scalable coding of video and associated features |
EP4292281A1 (en) * | 2021-02-12 | 2023-12-20 | Google LLC | Parameterized noise synthesis for graphical artifact removal |
GB202103498D0 (en) * | 2021-03-12 | 2021-04-28 | V Nova Int Ltd | Processing of residuals in video coding |
US11818353B2 (en) * | 2021-05-13 | 2023-11-14 | Qualcomm Incorporated | Reduced complexity transforms for high bit-depth video coding |
GB202107036D0 (en) | 2021-05-17 | 2021-06-30 | V Nova Int Ltd | Secure decoder and secure decoding methods |
FR3124671B1 (fr) * | 2021-06-25 | 2023-07-07 | Fond B Com | Procédés de décodage et de codage d’une image, dispositifs et signal associés |
CN118235408A (zh) * | 2021-09-29 | 2024-06-21 | Op解决方案公司 | 用于可缩放的机器视频编码的系统和方法 |
GB2607123B (en) | 2021-10-25 | 2023-10-11 | V Nova Int Ltd | Enhancement decoding implementation and method |
GB2613015B (en) | 2021-11-22 | 2024-10-23 | V Nova International Ltd | Decoding a multi-layer video stream using a joint packet stream |
GB2628070A (en) | 2021-11-22 | 2024-09-11 | V Nova Int Ltd | Processing a multi-layer video stream |
GB2614054A (en) | 2021-12-17 | 2023-06-28 | V Nova Int Ltd | Digital image processing |
GB2613886B (en) | 2021-12-20 | 2024-10-02 | V Nova Int Ltd | Synchronising frame decoding in a multi-layer video stream |
WO2023135410A1 (en) | 2022-01-11 | 2023-07-20 | V-Nova International Ltd | Integrating a decoder for hierarchical video coding |
WO2023135420A1 (en) | 2022-01-12 | 2023-07-20 | V-Nova International Ltd | Secure enhancement decoding implementation |
US11838513B2 (en) * | 2022-01-14 | 2023-12-05 | Meta Platforms Technologies, Llc | Progressive transmission of detailed image data via video compression of successive subsampled frames |
WO2023158649A1 (en) * | 2022-02-17 | 2023-08-24 | Op Solutions, Llc | Systems and methods for video coding for machines using an autoencoder |
GB2614763B (en) | 2022-03-29 | 2024-05-01 | V Nova Int Ltd | Upsampling filter for applying a predicted average modification |
GB2611129B (en) | 2022-03-31 | 2024-03-27 | V Nova Int Ltd | Signal processing with overlay regions |
GB2617319A (en) * | 2022-03-31 | 2023-10-11 | V Nova Int Ltd | Low complexity enhancement video coding with signal element modification |
GB2611131B (en) | 2022-03-31 | 2023-11-22 | V Nova Int Ltd | Pre-analysis for video encoding |
GB202205618D0 (en) | 2022-04-14 | 2022-06-01 | V Nova Int Ltd | Extended reality encoding |
GB202205928D0 (en) | 2022-04-22 | 2022-06-08 | V Nova Int Ltd | Methods, bitstreams, apparatuses, computer programs and computer-readable media |
GB2619096A (en) | 2022-05-27 | 2023-11-29 | V Nova Int Ltd | Enhancement interlacing |
WO2024003577A1 (en) | 2022-07-01 | 2024-01-04 | V-Nova International Ltd | Applications of layered encoding in split computing |
GB2620922B (en) * | 2022-07-22 | 2024-08-14 | V Nova Int Ltd | Data processing in an encoding process |
GB2620994B (en) | 2022-08-22 | 2024-07-24 | V Nova Int Ltd | Encoding and decoding of pre-processing renditions of input videos |
US20240098285A1 (en) | 2022-09-20 | 2024-03-21 | V-Nova International Limited | Method for decoding a video stream |
WO2024076141A1 (ko) * | 2022-10-05 | 2024-04-11 | 엘지전자 주식회사 | 포스트 디코딩 필터에 기반한 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장하는 기록 매체 |
US11695965B1 (en) | 2022-10-13 | 2023-07-04 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Video coding using a coded picture buffer |
GB2620996B (en) | 2022-10-14 | 2024-07-31 | V Nova Int Ltd | Processing a multi-layer video stream |
GB2620655B (en) | 2022-11-01 | 2024-09-11 | V Nova Int Ltd | Image processing using residual frames and differential frames |
GB2618869B (en) | 2022-11-30 | 2024-05-22 | V Nova Int Ltd | A method of processing source data |
WO2024134191A1 (en) | 2022-12-21 | 2024-06-27 | V-Nova International Limited | Constant rate factor video encoding control |
GB2625720A (en) | 2022-12-21 | 2024-07-03 | V Nova Int Ltd | Immersive Video Data Processing |
GB2625756A (en) | 2022-12-22 | 2024-07-03 | V Nova Int Ltd | Methods and modules for video pipelines |
US12120327B2 (en) * | 2023-02-01 | 2024-10-15 | Realtek Semiconductor Corp. | Method for processing LCEVC enhancement layer of residuals |
GB2627287A (en) | 2023-02-17 | 2024-08-21 | V Nova Int Ltd | A video encoding module for hierarchical video coding |
GB2624947A (en) | 2023-03-24 | 2024-06-05 | V Nova Int Ltd | Enhancement decoding implementation and method |
GB2624478A (en) * | 2023-03-24 | 2024-05-22 | V Nova Int Ltd | Method of decoding a video signal |
WO2024209217A1 (en) | 2023-04-06 | 2024-10-10 | V-Nova International Ltd | Processing a multi-layer video stream |
CN116156170B (zh) * | 2023-04-24 | 2024-04-16 | 北京中星微人工智能芯片技术有限公司 | 数据流的发送方法、装置、电子设备和存储介质 |
Family Cites Families (85)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6957350B1 (en) * | 1996-01-30 | 2005-10-18 | Dolby Laboratories Licensing Corporation | Encrypted and watermarked temporal and resolution layering in advanced television |
US5790839A (en) * | 1996-12-20 | 1998-08-04 | International Business Machines Corporation | System integration of DRAM macros and logic cores in a single chip architecture |
US5901304A (en) * | 1997-03-13 | 1999-05-04 | International Business Machines Corporation | Emulating quasi-synchronous DRAM with asynchronous DRAM |
KR100244769B1 (ko) * | 1997-06-26 | 2000-02-15 | 전주범 | 스케일러빌리티를 갖는 간 윤곽선 부호화 방법 및 장치 |
KR100240770B1 (ko) * | 1997-07-11 | 2000-01-15 | 이형도 | 에너지보상/역보상기능을개선한스케러블부호화기및그방법 |
JPH11289542A (ja) * | 1998-02-09 | 1999-10-19 | Matsushita Electric Ind Co Ltd | 画像符号化装置、画像符号化方法、および画像符号化プログラムを記録した記録媒体 |
US6765962B1 (en) * | 1999-12-02 | 2004-07-20 | Sarnoff Corporation | Adaptive selection of quantization scales for video encoding |
US6826232B2 (en) * | 1999-12-20 | 2004-11-30 | Koninklijke Philips Electronics N.V. | Fine granular scalable video with embedded DCT coding of the enhancement layer |
AU4338800A (en) * | 1999-12-22 | 2001-07-03 | General Instrument Corporation | Video compression for multicast environments using spatial scalability and simulcast coding |
US7477688B1 (en) * | 2000-01-26 | 2009-01-13 | Cisco Technology, Inc. | Methods for efficient bandwidth scaling of compressed video data |
US7095782B1 (en) * | 2000-03-01 | 2006-08-22 | Koninklijke Philips Electronics N.V. | Method and apparatus for streaming scalable video |
US7751473B2 (en) * | 2000-05-15 | 2010-07-06 | Nokia Corporation | Video coding |
US6771703B1 (en) * | 2000-06-30 | 2004-08-03 | Emc Corporation | Efficient scaling of nonscalable MPEG-2 Video |
US7016412B1 (en) * | 2000-08-29 | 2006-03-21 | Koninklijke Philips Electronics N.V. | System and method for dynamic adaptive decoding of scalable video to balance CPU load |
WO2002035854A1 (en) * | 2000-10-24 | 2002-05-02 | Eyeball Networks Inc. | Dct-based scalable video compression |
JP3703088B2 (ja) * | 2001-06-08 | 2005-10-05 | 日本ビクター株式会社 | 拡張画像符号化装置及び拡張画像復号化装置 |
US7263124B2 (en) * | 2001-09-26 | 2007-08-28 | Intel Corporation | Scalable coding scheme for low latency applications |
EP1442602A1 (en) * | 2001-10-26 | 2004-08-04 | Koninklijke Philips Electronics N.V. | Spatial scalable compression scheme using adaptive content filtering |
US7729421B2 (en) * | 2002-02-20 | 2010-06-01 | International Business Machines Corporation | Low latency video decoder with high-quality, variable scaling and minimal frame buffer memory |
US7391807B2 (en) * | 2002-04-24 | 2008-06-24 | Mitsubishi Electric Research Laboratories, Inc. | Video transcoding of scalable multi-layer videos to single layer video |
US7072394B2 (en) * | 2002-08-27 | 2006-07-04 | National Chiao Tung University | Architecture and method for fine granularity scalable video coding |
KR20060105409A (ko) * | 2005-04-01 | 2006-10-11 | 엘지전자 주식회사 | 영상 신호의 스케일러블 인코딩 및 디코딩 방법 |
US20070064937A1 (en) * | 2003-11-28 | 2007-03-22 | Van Leest Adriaan J | Method and apparatus for encoding or decoding a bitstream |
US7369610B2 (en) * | 2003-12-01 | 2008-05-06 | Microsoft Corporation | Enhancement layer switching for scalable video coding |
WO2005055605A1 (en) * | 2003-12-03 | 2005-06-16 | Koninklijke Philips Electronics N.V. | System and method for improved scalability support in mpeg-2 systems |
KR20060126984A (ko) * | 2003-12-08 | 2006-12-11 | 코닌클리케 필립스 일렉트로닉스 엔.브이. | 데드 존을 갖는 공간 스케일링 가능한 압축 기법 |
KR20050078099A (ko) | 2004-01-30 | 2005-08-04 | 삼성전자주식회사 | 적응적으로 키 프레임을 삽입하는 비디오 코딩 장치 및 방법 |
US7697608B2 (en) * | 2004-02-03 | 2010-04-13 | Sony Corporation | Scalable MPEG video/macro block rate control |
US20050259729A1 (en) * | 2004-05-21 | 2005-11-24 | Shijun Sun | Video coding with quality scalability |
KR100679011B1 (ko) * | 2004-07-15 | 2007-02-05 | 삼성전자주식회사 | 기초 계층을 이용하는 스케일러블 비디오 코딩 방법 및 장치 |
WO2006087319A2 (en) * | 2005-02-18 | 2006-08-24 | Thomson Licensing | Method for deriving coding information for high resolution pictures from low resoluton pictures and coding and decoding devices implementing said method |
KR100732961B1 (ko) * | 2005-04-01 | 2007-06-27 | 경희대학교 산학협력단 | 다시점 영상의 스케일러블 부호화, 복호화 방법 및 장치 |
KR100878811B1 (ko) * | 2005-05-26 | 2009-01-14 | 엘지전자 주식회사 | 비디오 신호의 디코딩 방법 및 이의 장치 |
US8189659B2 (en) * | 2005-08-30 | 2012-05-29 | Thomson Licensing | Cross-layer optimization for scalable video multicast over IEEE 802.11 wireless local area networks |
JP2007081720A (ja) * | 2005-09-13 | 2007-03-29 | Sanyo Electric Co Ltd | 符号化方法 |
US8345755B2 (en) * | 2006-01-09 | 2013-01-01 | Lg Electronics, Inc. | Inter-layer prediction method for video signal |
JP2007266750A (ja) * | 2006-03-27 | 2007-10-11 | Sanyo Electric Co Ltd | 符号化方法 |
EP1933564A1 (en) * | 2006-12-14 | 2008-06-18 | Thomson Licensing | Method and apparatus for encoding and/or decoding video data using adaptive prediction order for spatial and bit depth prediction |
US8737474B2 (en) * | 2007-06-27 | 2014-05-27 | Thomson Licensing | Method and apparatus for encoding and/or decoding video data using enhancement layer residual prediction for bit depth scalability |
KR101365596B1 (ko) * | 2007-09-14 | 2014-03-12 | 삼성전자주식회사 | 영상 부호화장치 및 방법과 그 영상 복호화장치 및 방법 |
KR101365597B1 (ko) * | 2007-10-24 | 2014-02-20 | 삼성전자주식회사 | 영상 부호화장치 및 방법과 그 영상 복호화장치 및 방법 |
CN101459835A (zh) * | 2007-12-12 | 2009-06-17 | 上海摩波彼克半导体有限公司 | 认知无线电网络中提高跨层多媒体传输质量的方法 |
US8711948B2 (en) * | 2008-03-21 | 2014-04-29 | Microsoft Corporation | Motion-compensated prediction of inter-layer residuals |
US9571856B2 (en) * | 2008-08-25 | 2017-02-14 | Microsoft Technology Licensing, Llc | Conversion operations in scalable video encoding and decoding |
US9338466B2 (en) * | 2008-10-15 | 2016-05-10 | France Telecom | Method and device for coding an image sequence implementing blocks of different size, signal, data medium, decoding method and device, and computer programs corresponding thereto |
JP2011199396A (ja) * | 2010-03-17 | 2011-10-06 | Ntt Docomo Inc | 動画像予測符号化装置、動画像予測符号化方法、動画像予測符号化プログラム、動画像予測復号装置、動画像予測復号方法、及び動画像予測復号プログラム |
TWI416961B (zh) * | 2010-04-02 | 2013-11-21 | Univ Nat Chiao Tung | 用於可調式視訊編碼系統之選擇性移動向量預測方法、移動估測方法及其裝置 |
US20110268175A1 (en) * | 2010-04-30 | 2011-11-03 | Wai-Tian Tan | Differential protection of a live scalable media |
US10034009B2 (en) * | 2011-01-14 | 2018-07-24 | Vidyo, Inc. | High layer syntax for temporal scalability |
US8977065B2 (en) | 2011-07-21 | 2015-03-10 | Luca Rossato | Inheritance in a tiered signal quality hierarchy |
US10873772B2 (en) * | 2011-07-21 | 2020-12-22 | V-Nova International Limited | Transmission of reconstruction data in a tiered signal quality hierarchy |
US8711943B2 (en) | 2011-07-21 | 2014-04-29 | Luca Rossato | Signal processing and tiered signal encoding |
US8948248B2 (en) | 2011-07-21 | 2015-02-03 | Luca Rossato | Tiered signal decoding and signal reconstruction |
US8531321B1 (en) * | 2011-07-21 | 2013-09-10 | Luca Rossato | Signal processing and inheritance in a tiered signal quality hierarchy |
US9129411B2 (en) | 2011-07-21 | 2015-09-08 | Luca Rossato | Upsampling in a tiered signal quality hierarchy |
US20130028324A1 (en) * | 2011-07-29 | 2013-01-31 | National Chiao Tung University | Method and device for decoding a scalable video signal utilizing an inter-layer prediction |
US9300980B2 (en) | 2011-11-10 | 2016-03-29 | Luca Rossato | Upsampling and downsampling of motion maps and other auxiliary maps in a tiered signal quality hierarchy |
US9510018B2 (en) | 2011-11-23 | 2016-11-29 | Luca Rossato | Signal analysis and generation of transient information |
CN104303504B (zh) | 2012-01-18 | 2019-04-16 | 卢卡·罗萨托 | 稳定信息和瞬时/随机信息的不同编码和解码 |
US9210425B2 (en) * | 2012-04-11 | 2015-12-08 | Google Technology Holdings LLC | Signaling of temporal motion vector predictor (MVP) flag for temporal prediction |
AU2013261845A1 (en) | 2012-05-14 | 2014-12-11 | Guido MEARDI | Encoding and reconstruction of residual data based on support information |
KR102001415B1 (ko) * | 2012-06-01 | 2019-07-18 | 삼성전자주식회사 | 다계층 비디오 코딩을 위한 레이트 제어 방법, 이를 이용한 비디오 인코딩 장치 및 비디오 신호 처리 시스템 |
US9124899B2 (en) * | 2012-09-28 | 2015-09-01 | Sharp Laboratories Of America, Inc. | Motion derivation and coding for scaling video |
ES2702614T3 (es) * | 2013-01-02 | 2019-03-04 | Dolby Laboratories Licensing Corp | Codificación retrocompatible para señales de vídeo de ultra alta definición con dominio dinámico aumentado |
GB2509702B (en) | 2013-01-04 | 2015-04-22 | Canon Kk | Video coding |
WO2014106692A1 (en) * | 2013-01-07 | 2014-07-10 | Nokia Corporation | Method and apparatus for video coding and decoding |
US9148667B2 (en) * | 2013-02-06 | 2015-09-29 | Qualcomm Incorporated | Intra prediction mode decision with reduced storage |
US9749627B2 (en) * | 2013-04-08 | 2017-08-29 | Microsoft Technology Licensing, Llc | Control data for motion-constrained tile set |
BR112015026244B1 (pt) * | 2013-04-15 | 2023-04-25 | V-Nova International Ltd | Codificação e decodificação de sinal compatível com versões anteriores híbrido |
EP2816805B1 (en) * | 2013-05-29 | 2020-12-30 | BlackBerry Limited | Lossy data compression with conditional reconstruction reinfinement |
GB2516224A (en) * | 2013-07-11 | 2015-01-21 | Nokia Corp | An apparatus, a method and a computer program for video coding and decoding |
GB2516424A (en) * | 2013-07-15 | 2015-01-28 | Nokia Corp | A method, an apparatus and a computer program product for video coding and decoding |
US10567804B2 (en) * | 2014-01-08 | 2020-02-18 | Qualcomm Incorporated | Carriage of HEVC extension bitstreams and buffer model with MPEG-2 systems |
JP5753595B2 (ja) * | 2014-01-30 | 2015-07-22 | 株式会社Nttドコモ | 動画像予測符号化装置、動画像予測符号化方法、動画像予測符号化プログラム、動画像予測復号装置、動画像予測復号方法、及び動画像予測復号プログラム |
US10448029B2 (en) * | 2014-04-17 | 2019-10-15 | Qualcomm Incorporated | Signaling bit depth values for 3D color prediction for color gamut scalability |
FI20165114A (fi) * | 2016-02-17 | 2017-08-18 | Nokia Technologies Oy | Laitteisto, menetelmä ja tietokoneohjelma videokoodausta ja videokoodauksen purkua varten |
US9836820B2 (en) * | 2016-03-03 | 2017-12-05 | Mitsubishi Electric Research Laboratories, Inc. | Image upsampling using global and local constraints |
FI20165256L (fi) * | 2016-03-24 | 2017-09-25 | Nokia Technologies Oy | Laitteisto, menetelmä ja tietokoneohjelma videokoodaukseen ja -dekoodaukseen |
GB2553086B (en) | 2016-07-20 | 2022-03-02 | V Nova Int Ltd | Decoder devices, methods and computer programs |
GB2552353B (en) * | 2016-07-20 | 2022-04-20 | V Nova Int Ltd | Apparatuses, methods, computer programs and computer-readable media |
GB2553556B (en) * | 2016-09-08 | 2022-06-29 | V Nova Int Ltd | Data processing apparatuses, methods, computer programs and computer-readable media |
GB2554686A (en) * | 2016-10-04 | 2018-04-11 | Nokia Technologies Oy | An apparatus, a method and a computer program for video coding and decoding |
MX2020001303A (es) * | 2017-08-10 | 2020-03-09 | Sony Corp | Aparato de transmision, metodo de transmision, aparato de recepcion y metodo de recepcion. |
GB2573486B (en) | 2017-12-06 | 2022-12-21 | V Nova Int Ltd | Processing signal data using an upsampling adjuster |
US10623736B2 (en) * | 2018-06-14 | 2020-04-14 | Telefonaktiebolaget Lm Ericsson (Publ) | Tile selection and bandwidth optimization for providing 360° immersive video |
-
2020
- 2020-03-18 GB GB2312595.8A patent/GB2620500B/en active Active
- 2020-03-18 GB GB2312674.1A patent/GB2619629B/en active Active
- 2020-03-18 GB GB2312670.9A patent/GB2618721B/en active Active
- 2020-03-18 KR KR1020217033585A patent/KR20220003511A/ko unknown
- 2020-03-18 GB GB2312662.6A patent/GB2618719B/en active Active
- 2020-03-18 WO PCT/GB2020/050692 patent/WO2020188271A1/en unknown
- 2020-03-18 GB GB2312680.8A patent/GB2619631B/en active Active
- 2020-03-18 GB GB2312554.5A patent/GB2618478B/en active Active
- 2020-03-18 EP EP24172213.1A patent/EP4383720A3/en active Pending
- 2020-03-18 GB GB2312644.4A patent/GB2618929B/en active Active
- 2020-03-18 GB GB2312658.4A patent/GB2618717B/en active Active
- 2020-03-18 EP EP20715154.9A patent/EP3942817A1/en active Pending
- 2020-03-18 AU AU2020243405A patent/AU2020243405A1/en active Pending
- 2020-03-18 CN CN202080036630.8A patent/CN114503573A/zh active Pending
- 2020-03-18 EP EP20715151.5A patent/EP3942813B1/en active Active
- 2020-03-18 GB GB2312606.3A patent/GB2618479B/en active Active
- 2020-03-18 GB GB2312624.6A patent/GB2619628B/en active Active
- 2020-03-18 FI FIEP20715151.5T patent/FI3942813T3/fi active
- 2020-03-18 GB GB2312655.0A patent/GB2618716B/en active Active
- 2020-03-18 GB GB2312555.2A patent/GB2620499B/en active Active
- 2020-03-18 GB GB2312582.6A patent/GB2619184B/en active Active
- 2020-03-18 US US17/439,571 patent/US11792440B2/en active Active
- 2020-03-18 GB GB2303563.7A patent/GB2614983B/en active Active
- 2020-03-18 GB GB2312647.7A patent/GB2618714B/en active Active
- 2020-03-18 GB GB2312599.0A patent/GB2619627B/en active Active
- 2020-03-18 GB GB2312596.6A patent/GB2619185B/en active Active
- 2020-03-18 GB GB2311828.4A patent/GB2617790B/en active Active
- 2020-03-18 US US17/439,227 patent/US20220400270A1/en active Pending
- 2020-03-18 GB GB2312676.6A patent/GB2619630B/en active Active
- 2020-03-18 GB GB2312673.3A patent/GB2619436B/en active Active
- 2020-03-18 GB GB2312636.0A patent/GB2619434B/en active Active
- 2020-03-18 CN CN202080036653.9A patent/CN114467304A/zh active Pending
- 2020-03-18 GB GB2312663.4A patent/GB2619435B/en active Active
- 2020-03-18 DK DK20715151.5T patent/DK3942813T3/da active
- 2020-03-18 GB GB2312591.7A patent/GB2619430B/en active Active
- 2020-03-18 GB GB2312675.8A patent/GB2618723B/en active Active
- 2020-03-18 GB GB2312672.5A patent/GB2618722B/en active Active
- 2020-03-18 GB GB2114964.6A patent/GB2599507B/en active Active
- 2020-03-18 WO PCT/GB2020/050695 patent/WO2020188273A1/en unknown
- 2020-03-18 GB GB2312623.8A patent/GB2619432B/en active Active
- 2020-03-18 GB GB2312622.0A patent/GB2619431B/en active Active
- 2020-03-18 GB GB2311597.5A patent/GB2617783B/en active Active
- 2020-03-18 GB GB2311598.3A patent/GB2617784B/en active Active
- 2020-03-18 GB GB2114968.7A patent/GB2599805B/en active Active
- 2020-03-18 CA CA3133887A patent/CA3133887A1/en active Pending
- 2020-03-18 GB GB2312660.0A patent/GB2618718B/en active Active
- 2020-03-18 GB GB2312666.7A patent/GB2618720B/en active Active
- 2020-03-18 PL PL20715151.5T patent/PL3942813T3/pl unknown
-
2023
- 2023-09-27 US US18/475,853 patent/US20240098312A1/en active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024016106A1 (en) * | 2022-07-18 | 2024-01-25 | Intel Corporation | Low-complexity enhancement video coding using multiple reference frames |
WO2024065464A1 (en) * | 2022-09-29 | 2024-04-04 | Intel Corporation | Low-complexity enhancment video coding using tile-level quantization parameters |
CN116366868A (zh) * | 2023-05-31 | 2023-06-30 | 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) | 一种并发视频包过滤方法、系统及储存介质 |
CN116366868B (zh) * | 2023-05-31 | 2023-08-25 | 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) | 一种并发视频包过滤方法、系统及储存介质 |
CN117335929A (zh) * | 2023-12-01 | 2024-01-02 | 十方星链(苏州)航天科技有限公司 | 一种卫星地面站多路并发编码调制通信终端及通信方法 |
CN117335929B (zh) * | 2023-12-01 | 2024-02-20 | 十方星链(苏州)航天科技有限公司 | 一种卫星地面站多路并发编码调制通信终端及通信方法 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114503573A (zh) | 低复杂性增强视频编码 | |
US20220385911A1 (en) | Use of embedded signalling for backward-compatible scaling improvements and super-resolution signalling | |
CN114009027A (zh) | 视频译码中的残差的量化 | |
KR20220128388A (ko) | V-pcc용 스케일링 파라미터 | |
US20220272342A1 (en) | Quantization of residuals in video coding | |
CN113994685A (zh) | 在分级视频编码中交换信息 | |
GB2619186A (en) | Low complexity enhancement video coding | |
CN118786671A (zh) | 数字图像处理 | |
EA046619B1 (ru) | Квантование остатков при кодировании видео |
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 |