CN113228654A - 系数级别转义编解码 - Google Patents
系数级别转义编解码 Download PDFInfo
- Publication number
- CN113228654A CN113228654A CN202080007433.3A CN202080007433A CN113228654A CN 113228654 A CN113228654 A CN 113228654A CN 202080007433 A CN202080007433 A CN 202080007433A CN 113228654 A CN113228654 A CN 113228654A
- Authority
- CN
- China
- Prior art keywords
- value
- coefficients
- transform
- level
- transform coefficient
- 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
- 230000004044 response Effects 0.000 claims abstract description 49
- 238000000034 method Methods 0.000 claims description 122
- 230000015654 memory Effects 0.000 claims description 57
- 241000209094 Oryza Species 0.000 claims description 19
- 235000007164 Oryza sativa Nutrition 0.000 claims description 19
- 235000009566 rice Nutrition 0.000 claims description 19
- 238000003860 storage Methods 0.000 claims description 19
- 230000003044 adaptive effect Effects 0.000 claims description 16
- 238000001914 filtration Methods 0.000 claims description 12
- 238000013139 quantization Methods 0.000 description 39
- 238000012545 processing Methods 0.000 description 35
- 230000008569 process Effects 0.000 description 34
- 238000000638 solvent extraction Methods 0.000 description 33
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 28
- 238000010586 diagram Methods 0.000 description 27
- 238000005192 partition Methods 0.000 description 22
- 239000013598 vector Substances 0.000 description 22
- 230000006870 function Effects 0.000 description 19
- 241000023320 Luma <angiosperm> Species 0.000 description 17
- 238000004891 communication Methods 0.000 description 17
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 17
- 239000011449 brick Substances 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 8
- 230000011664 signaling Effects 0.000 description 8
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 7
- 238000013500 data storage Methods 0.000 description 7
- 238000013507 mapping Methods 0.000 description 7
- 239000000872 buffer Substances 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 230000007704 transition Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- VBRBNWWNRIMAII-WYMLVPIESA-N 3-[(e)-5-(4-ethylphenoxy)-3-methylpent-3-enyl]-2,2-dimethyloxirane Chemical compound C1=CC(CC)=CC=C1OC\C=C(/C)CCC1C(C)(C)O1 VBRBNWWNRIMAII-WYMLVPIESA-N 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 208000024191 minimally invasive lung adenocarcinoma Diseases 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4031—Fixed length to variable 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/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/117—Filters, e.g. for pre-processing or post-processing
-
- 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/184—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 bits, e.g. of the compressed video stream
-
- 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/189—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
- H04N19/19—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding using optimisation based on Lagrange multipliers
-
- 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/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)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
作为响应于达到常规编解码二进制位的最大数量对系数集合的语法元素进行旁路解码的一部分,视频解码器被配置为接收变换系数的前缀值;使用Golomb‑Rice编解码对前缀值进行解码;响应于前缀值的长度等于阈值,接收变换系数的后缀值;使用指数Golomb编解码对后缀值进行解码;以及基于解码的前缀值和解码的后缀值确定变换系数的级别值。
Description
本申请要求于2019年12月31日提交的美国专利申请16/732,008的优先权,该申请要求于2019年1月2日提交的美国临时申请62/787,707的优先权,每个的全部内容通过引用并入本文。
技术领域
本公开涉及视频编码和视频解码。
背景技术
数字视频功能可以集成到各种设备中,包括数字电视、数字直接广播***、无线广播***、个人数字助理(PDA)、膝上式或台式计算机、平板计算机、电子书阅读器、数码相机、数字记录设备、数字媒体播放器、视频游戏设备、视频游戏机、蜂窝或卫星无线电电话、所谓的“智能电话”、视频电话会议设备、视频流设备等。数字视频设备实施视频编解码技术,例如MPEG-2,MPEG-4,ITU-T H.263,ITU-T H.264/MPEG-4,第10部分,高级视频编解码(AVC),高效视频编解码(HEVC)标准,ITU-T H.265/高效视频编解码(HEVC)规定的标准以及此类标准的扩展所描述的技术。通过实行此类视频编解码技术,视频设备可以更有效地发送,接收,编码,解码和/或存储数字视频信息。
视频编解码技术包括空域(图片内)预测和/或时域(图片间)预测,以减少或消除视频序列中固有的冗余。对于基于块的视频编解码,可以将视频条带(例如,视频图片或视频图片的一部分)分割为视频块,这些视频块也可以称为编解码树单元(CTU)、编解码单元(CU)和/或编解码节点。使用关于同一图片中临近块中的参考样点的空域预测对图片的帧内编解码(I)条带中的视频块进行编码。图片的帧间编解码(P或B)条带中的视频块可使用关于同一图片中临近块中的参考样点的空域预测,或关于其他参考图片中的参考样点的时域预测。图片可以被称为帧,并且参考图片可以被称为参考帧。
发明内容
视频编解码(例如,视频编码和/或视频解码)通常涉及根据同一图片中的视频数据的已经编解码的块(例如,帧内预测)或不同图片中的视频数据的已经编解码的块(例如,帧间预测)来预测视频数据的块。在一些情况下,视频编码器还通过将预测块与原始块进行比较来计算残差(residual)数据。因此,残差数据表示视频数据的预测块和原始块之间的差。为了减少信令通知残差数据所需的比特的数目,视频编码器将残差数据变换成变换系数,量化变换系数,并在编码的比特流中信令通知经变换和量化的系数。通过变换和量化处理实现的压缩可能是有损的,这意味着变换和量化处理可能为解码的视频数据引入失真。本公开描述了与变换系数编解码有关,并且更具体地,与Golomb-Rice和指数Golomb编解码的组合有关的技术。本公开的技术可以通过平均减少信令通知变换系数所需的比特的数目来提高变换系数的编解码效率。本公开的技术可以附加地限制与信令通知变换系数相关联的最坏情况的编解码场景。
根据本公开的示例,一种用于解码视频数据的方法包括:对变换系数组的第一变换系数集合的语法元素进行上下文解码,直到达到常规编解码二进制位的最大数量,其中,上下文解码的语法元素包括一个或多个重要性标志、一个或多个奇偶级别标志以及一个或多个第一标志,其中一个或多个重要性标志中的每一个指示变换系数的绝对级别是否等于零,一个或多个奇偶级别标志中的每一个指示变换系数的绝对级别是偶数还是奇数,以及一个或多个第一标志中的每一个指示变换系数的绝对级别是否大于2;响应于达到常规编解码二进制位的最大数量,对第二系数集合的附加语法元素进行旁路解码,其中对附加语法元素进行旁路解码包括接收变换系数的前缀值;使用Golomb-Rice编解码解码该前缀值;响应于该前缀值的长度等于阈值,接收变换系数的后缀值;使用指数Golomb编解码对后缀值进行解码;基于上下文解码的语法元素确定变换单元的第一系数集合的值;以及基于附加语法元素确定变换单元的第二系数集合的值,其中基于附加语法元素确定变换单元的第二系数集合的值包括基于解码的前缀值和解码的后缀值确定变换系数的级别值。
根据本公开的另一个示例,一种用于解码视频数据的设备包括:被配置为存储视频数据的存储器,和一个或多个在电路中实施并被配置执行以下操作的处理器:为对变换系数组的第一系数集合的语法元素进行上下文解码,直到达到常规编解码二进制位的最大数量,其中,上下文解码的语法元素包括一个或多个重要性标志、一个或多个奇偶级别标志以及一个或多个第一标志,其中一个或多个重要性标志中的每一个指示变换系数的绝对级别是否等于零,一个或多个奇偶级别标志中的每一个指示变换系数的绝对级别是偶数还是奇数,以及一个或多个第一标志中的每一个指示变换系数的绝对级别是否大于2;响应于达到常规编解码二进制位的最大数量,对第二系数集合的附加语法元素进行旁路解码,其中为了对附加语法元素进行旁路解码,该一个或多个处理器被配置为:接收变换系数的前缀值;使用Golomb-Rice编解码解码该前缀值;响应于该前缀值的长度等于阈值,接收变换系数的后缀值;使用指数Golomb编解码对后缀值进行解码;基于上下文解码的语法元素确定变换单元的第一系数集合的值;以及基于附加语法元素确定变换单元的第二系数集合的值,其中为了基于附加语法元素确定变换单元的第二系数集合的值,该一个或多个处理器被配置为:基于解码的前缀值和解码的后缀值确定变换系数的级别值。
根据本公开的另一个示例,一种存储指令的计算机可读存储介质,该指令当由一个或多个处理器运行时,使一个或多个处理器对变换系数组的第一变换系数集合的语法元素进行上下文解码,直到达到常规编解码二进制位的最大数量,其中,上下文解码的语法元素包括一个或多个重要性标志、一个或多个奇偶级别标志以及一个或多个第一标志,其中一个或多个重要性标志中的每一个指示变换系数的绝对级别是否等于零,一个或多个奇偶级别标志中的每一个指示变换系数的绝对级别是偶数还是奇数,以及一个或多个第一标志中的每一个指示变换系数的绝对级别是否大于2;响应于达到常规编解码二进制位的最大数量,对第二系数集合的附加语法元素进行旁路解码,其中为了对附加语法元素进行旁路解码,该指令使该一个或多个处理器接收变换系数的前缀值;使用Golomb-Rice编解码解码该前缀值;响应于该前缀值的长度等于阈值,接收变换系数的后缀值;使用指数Golomb编解码对后缀值进行解码;基于上下文解码的语法元素确定变换单元的第一系数集合的值;以及基于附加语法元素确定变换单元的第二系数集合的值,其中基于附加语法元素确定变换单元的第二系数集合的值包括基于解码的前缀值和解码的后缀值确定变换系数的级别值。
根据本公开的另一个示例,一种用于解码视频数据的装置包括:用于对变换系数组的第一变换系数集合的语法元素进行上下文解码,直到达到常规编解码二进制位的最大数量的部件,其中,上下文解码的语法元素包括一个或多个重要性标志、一个或多个奇偶级别标志以及一个或多个第一标志,其中一个或多个重要性标志中的每一个指示变换系数的绝对级别是否等于零,一个或多个奇偶级别标志中的每一个指示变换系数的绝对级别是偶数还是奇数,以及一个或多个第一标志中的每一个指示变换系数的绝对级别是否大于2;用于响应于达到常规编解码二进制位的最大数量,对第二系数集合的附加语法元素进行旁路解码的部件,其中用于对附加语法元素进行旁路解码的部件包括用于接收变换系数的前缀值的部件;用于使用Golomb-Rice编解码解码该前缀值的部件;用于响应于前缀值的长度等于阈值,接收变换系数的后缀值的部件;用于使用指数Golomb编解码对后缀值进行解码的部件;用于基于上下文解码的语法元素确定变换单元的第一系数集合的值的部件;以及用于基于附加语法元素确定变换单元的第二系数集合的值的部件,其中基于附加语法元素确定变换单元的第二系数集合的值包括基于解码的前缀值和解码的后缀值确定变换系数的级别值。
根据本公开的另一个示例,一种用于编码视频数据的方法包括:确定变换系数组的系数的值;对变换系数组的第一变换系数集合的语法元素进行上下文编码,直到达到常规编解码二进制位的最大数量,其中,上下文编码的语法元素包括一个或多个重要性标志、一个或多个奇偶级别标志以及一个或多个第一标志,其中一个或多个重要性标志中的每一个指示变换系数的绝对级别是否等于零,一个或多个奇偶级别标志中的每一个指示变换系数的绝对级别是偶数还是奇数,以及一个或多个第一标志中的每一个指示变换系数的绝对级别是否大于2;响应于达到常规编解码二进制位的最大数量,对变换系数组的第二系数集合的附加语法元素进行旁路编码,其中对附加语法元素进行旁路编码包括确定第二系数集合的变换系数的级别值;响应于级别值大于阈值,使用Golomb-Rice编解码对变换系数的前缀值进行编码;以及响应于级别值大于阈值,使用指数Golomb编解码对后缀值进行编码。
根据本公开的另一个示例,一种用于编码视频数据的设备包括被配置为存储视频数据的存储器,和一个或多个在电路中实施并被配置为执行以下操作的处理器:确定变换系数组的系数的值,对变换系数组的第一系数集合的语法元素进行上下文编码,直到达到常规编解码二进制位的最大数量,其中,上下文编码的语法元素包括一个或多个重要性标志、一个或多个奇偶级别标志以及一个或多个第一标志,其中一个或多个重要性标志中的每一个指示变换系数的绝对级别是否等于零,一个或多个奇偶级别标志中的每一个指示变换系数的绝对级别是偶数还是奇数,以及一个或多个第一标志中的每一个指示变换系数的绝对级别是否大于2;响应于达到常规编解码二进制位的最大数量,对变换系数组的第二系数集合的附加语法元素进行旁路编码,其中对附加语法元素进行旁路编码包括确定第二系数集合的变换系数的级别值;响应于级别值大于阈值,使用Golomb-Rice编解码对变换系数的前缀值进行编码;以及响应于级别值大于阈值,使用指数Golomb编解码对后缀值进行编码。
根据本公开的另一个示例,一种存储指令的计算机可读存储介质,当指令由一个或多个处理器运行时,使一个或多个处理器:确定变换系数组的系数的值;对变换系数组的第一系数集合的语法元素进行上下文编码,直到达到常规编解码二进制位的最大数量,其中,上下文编码的语法元素包括一个或多个重要性标志、一个或多个奇偶级别标志以及一个或多个第一标志,其中一个或多个重要性标志中的每一个指示变换系数的绝对级别是否等于零,一个或多个奇偶级别标志中的每一个指示变换系数的绝对级别是偶数还是奇数,以及一个或多个第一标志中的每一个指示变换系数的绝对级别是否大于2;响应于达到常规编解码二进制位的最大数量,对变换系数组的第二系数集合的附加语法元素进行旁路编码,其中为了对附加语法元素进行旁路编码,该指令使一个或多个处理器确定第二系数集合的变换系数的级别值;响应于级别值大于阈值,使用Golomb-Rice编解码对变换系数的前缀值进行编码;以及响应于级别值大于阈值,使用指数Golomb编解码对后缀值进行编码。
根据本公开的另一个示例,一种用于编码视频数据的装置包括:用于确定变换系数组的系数的值的部件;用于对变换系数组的第一变换系数集合的语法元素进行上下文编码,直到达到常规编解码二进制位的最大数量的部件,其中,上下文编码的语法元素包括一个或多个重要性标志、一个或多个奇偶级别标志以及一个或多个第一标志,其中一个或多个重要性标志中的每一个指示变换系数的绝对级别是否等于零,一个或多个奇偶级别标志中的每一个指示变换系数的绝对级别是偶数还是奇数,以及一个或多个第一标志中的每一个指示变换系数的绝对级别是否大于2;用于响应于达到常规编解码二进制位的最大数量对变换系数组的第二系数集合的附加语法元素进行旁路编码的部件,其中用于对附加语法元素进行旁路编码的部件包括用于确定第二系数集合的变换系数的级别值的部件;用于响应于级别值大于阈值,使用Golomb-Rice编解码来对变换系数的前缀值进行编码的部件;以及响应于级别值大于阈值,使用指数Golomb编解码对后缀值进行编码的部件。
在附图和以下说明书中将详细阐述一个或多个示例。根据说明书、附图和权利要求书,其他特征,目的和优点将是显而易见的。
附图说明
图1是示出可执行本公开的技术的示例视频编码和解码***的框图。
图2A和图2B是示出示例四叉树二叉树(QTBT)结构以及对应的编解码树单元(CTU)的概念图。
图3图示了用于表示编解码组(CG)中的绝对级别(absLevel)的语法元素的示例顺序。
图4图示了用于选择概率模型的模板的图。
图5是示出可执行本公开的技术的示例视频编码器的框图。
图6是示出可执行本公开的技术的示例视频解码器的框图。
图7A和7B是示出二进制算术编解码中的范围更新过程的概念图。
图8是示出二进制算术编解码中的输出过程的概念图。
图9是示出视频编码器中的上下文自适应二进制算术编解码(CABAC)编解码器的框图。
图10是示出视频解码器中的CABAC编解码器的框图。
图11是示出视频编码器的示例操作的流程图。
图12是示出视频解码器的示例操作的流程图。
图13是示出视频编码器对视频数据的当前块进行编码的示例操作的流程图。
图14是示出视频编码器对图13中的变换系数组的第二系数集合的附加语法元素进行旁路编码的示例操作的流程图。
图15是示出视频解码器对视频数据的当前块进行解码的示例操作的流程图。
图16是示出视频解码器对图15中的系数组的第二系数集合的附加语法元素进行旁路解码的示例操作的流程图。
具体实施方式
视频编解码(例如,视频编码和/或视频解码)通常涉及根据同一图片中的视频数据的已经编解码的块(例如,帧内预测)或不同图片中的视频数据的已经编解码的块(例如,帧间预测)来预测视频数据的块。在一些情况下,视频编码器还通过将预测块与原始块进行比较来计算残差数据。因此,残差数据表示视频数据的预测块和原始块之间的差。为了减少信令通知残差数据所需的比特的数目,视频编码器对残差数据进行变换和量化,并在编码的比特流中信令通知经变换和量化的残差数据。通过变换和量化处理实现的压缩可能是有损的,这意味着变换和量化处理可能为解码的视频数据引入失真。
视频解码器对残差数据进行解码并添加到预测块,以产生比单独的预测块更接近地匹配原始视频块的重构视频块。由于残差数据的变换和量化引入的损失,重构块可能存在失真或伪像。一种常见类型的伪像或失真被称为块效应,其中用于编解码视频数据的块的边界是可见的。
为了进一步改进解码的视频的质量,视频解码器可以对重构的视频块执行一个或多个滤波操作。这些滤波操作的示例包括去方块滤波、样点自适应偏移(SAO)滤波、和自适应环路滤波(ALF)。这些滤波操作的参数可以由视频编码器确定并在编码的视频比特流中显式地信令通知,或者可以由视频解码器隐式地确定,而不需要在编码的视频比特流中显式地信令通知这些参数。
如上所述,视频编码器对残差数据进行变换以产生变换系数。这些变换系数可以附加地进行量化。在本公开中,术语“变换系数”或“系数”可以指量化的变换系数或未量化的变换系数。本公开描述用于从视频编码器向视频解码器信令通知变换系数,例如,量化的变换系数的值的技术。此类技术包括与将比特的二进制表示转换为一系列非二进制值量化的变换系数的熵解码过程相关的技术。更具体地,本公开描述用于对表示系数级别的非上下文编解码部分的转义码进行编解码的技术,该转义码改为编解码为Golomb-Rice/指数Golomb组合。本公开中还描述了相应的熵编码过程,其通常是熵解码的反过程。
本公开的技术可结合现有视频编解码器的技术(例如高效视频编解码(HEVC))来实施,或作为未来视频编解码器的一部分包括在内,例如当前正在开发中的通用视频编解码(VVC)标准。
图1是示出可执行本公开的技术的示例视频编码和解码***100的框图。本公开的技术一般针对编解码(编码和/或解码)视频数据。通常,视频数据包括用于处理视频的任何数据。因此,视频数据可以包括原始的、未编解码的视频、编码的视频、解码的(例如,重构的)视频以及视频元数据,例如信令数据。
如图1所示,在此示例中,***100包括源设备102,该源设备102提供要由目的设备116解码和显示的编码的视频数据。具体地,源设备102经由计算机可读介质110向目的设备116提供视频数据。源设备102和目的设备116可以是各种各样的设备中的任何一种,包括台式计算机、笔记本计算机(即膝上型计算机)、平板计算机、机顶盒、诸如智能手机的电话手机、电视、照相机、显示设备、数字媒体播放器、视频游戏机、视频流设备或类似。在一些情况下,源设备102和目的设备116可以被配备用于无线通信,并因此可以被称为无线通信设备。
在图1的示例中,源设备102包括视频源104、存储器106、视频编码器200和输出接口108。目的设备116包括输入接口122、视频解码器300、存储器120和显示设备118。根据本公开,源设备102的视频编码器200和目的设备116的视频解码器300可以被配置为应用本公开中描述的用于系数编解码的技术。因此,源设备102表示视频编码设备的示例,而目的设备116表示视频解码设备的示例。在其他示例中,源设备和目的设备可以包括其他组件或配置。例如,源设备102可以从诸如外部摄像机的外部视频源接收视频数据。同样,目的设备116可以与外部显示设备连接,而不包括集成显示设备。
图1所示的***100仅是一个示例。通常,任何数字视频编码和/或解码设备都可以执行本文所述的系数编解码技术。源设备102和目的设备116仅仅是其中源设备102生成编解码的视频数据以传输到目的设备116的这种编解码设备的示例。本公开用“编解码(coding)”设备指代执行数据的编解码(coding)(编码(encoding)和/或解码(decoding))的设备。因此,视频编码器200和视频解码器300表示编解码设备的示例,具体地,分别是视频编码器和视频解码器的示例。在一些示例中,源设备102和目的设备116可以以基本对称的方式进行操作,使得源设备102和目的设备116中的每一个都包括视频编码和解码组件。因此,***100可以支持源设备102和目的设备116之间的单向或双向视频传输,例如用于视频流传送(streaming)、视频回放、视频广播或视频电话。
通常,视频源104表示视频数据(即,原始的、未编码的视频数据)的源,并向视频编码器200提供视频数据的一系列顺序图片(也称为“帧”),该视频编码器200对图片的数据进行编码。源设备102的视频源104可以包括视频捕获设备,诸如视频摄像机、包含先前捕获的原始视频的视频档案、和/或从视频内容提供商接收视频的视频馈送接口。作为另一替代,视频源104可以生成基于计算机图形的数据作为源视频,或者实况视频、存档视频和计算机生成视频的组合。在每种情况下,视频编码器200对捕获的、预捕获的或计算机生成的视频数据进行编码。视频编码器200可以将图片从接收到的顺序(有时称为“显示顺序”)重新排列为用于编解码的编解码顺序。视频编码器200可以生成包括编码的视频数据的比特流。然后源设备102可以经由输出接口108将编码的视频数据输出到计算机可读介质110上,用于由例如目的设备116的输入接口122接收和/或检索。
源设备102的存储器106和目的设备116的存储器120表示通用存储器。在一些示例中,存储器106、120可以存储原始视频数据,例如来自视频源104的原始视频和来自视频解码器300的原始的解码的视频数据。附加地或可替代地,存储器106、120可以分别存储可由例如视频编码器200和视频解码器300运行的软件指令。尽管在此示例中存储器106和存储器120被示为与视频编码器200和视频解码器300分离,但是应当理解,视频编码器200和视频解码器300也可以包括用于功能类似或等同目的的内部存储器。此外,存储器106、120可以存储编码的视频数据,例如,从视频编码器200输出并输入到视频解码器300的编码的视频数据。在一些示例中,存储器106、120中的部分可以被分配为一个或多个视频缓冲器,例如,以存储原始的、解码的和/或编码的视频数据。
计算机可读介质110可以表示能够将编码的视频数据从源设备102传输到目的设备116的任何类型的介质或设备。在一个示例中,计算机可读介质110表示使源设备102能够经由例如射频网络或基于计算机的网络实时地将编码的视频数据直接发送到目的设备116的通信介质。根据诸如无线通信协议的通信标准,输出接口108可以调制包括编码的视频数据的传输信号,并且输入接口122可以解调接收到的传输信号。通信介质可以包括任何无线或有线的通信介质,诸如射频(RF)频谱或者一条或多条物理传输线。通信介质可以形成基于分组的网络中的部分,诸如局域网、广域网、或诸如互联网的全球网络。通信介质可以包括路由器、交换器、基站、或可以有助于促进从源设备102到目的设备116的通信的任何其他装备。
在一些示例中,源设备102可以从输出接口108向存储设备112输出编码的数据。类似地,目的设备116可以经由输入接口122从存储设备112访问编码的数据。存储设备112可以包括多种分布式或本地访问的数据存储介质中的任何一种,诸如硬盘驱动器、蓝光光盘、DVD、CD-ROM、闪存、易失性或非易失性存储器、或者用于存储编码的视频数据的任何其他合适的数字存储介质。
在一些示例中,源设备102可以将编码的视频数据输出到文件服务器114或可以存储由源设备102生成的编码的视频的另一个中间存储设备。目的设备116可以经由流传送或下载从文件服务器114访问存储的视频数据。文件服务器114可以是能够存储编码的视频数据并将该编码的视频数据传输到目的设备116的任何类型的服务器设备。文件服务器114可以代表网页服务器(例如,用于网站)、文件发送协议(FTP)服务器、内容传递网络设备或网络附加存储(NAS)设备。目的设备116可以通过包括互联网连接的任何标准数据连接来从文件服务器114访问编码的视频数据。这可以包括无线信道(例如,Wi-Fi连接)、有线连接(例如,数字订户线(DSL)、线缆调制解调器等)、或者两者的适用于访问存储在文件服务器114上的编码的视频数据的组合。文件服务器114和输入接口122可以被配置为根据流传输协议、下载传输协议或其组合来操作。
输出接口108和输入接口122可以代表无线发送器/接收器、调制解调器、有线网络组件(例如,以太网卡)、根据各种IEEE 802.11标准中的任何一种进行操作的无线通信组件,或者其他物理组件。在输出接口108和输入接口122包括无线组件的示例中,输出接口108和输入接口122可以被配置为根据诸如4G、4G-LTE(长期演进)、高级LTE、5G等的蜂窝通信标准,来传输诸如编码的视频数据的数据。在输出接口108包括无线发送器的一些示例中,输出接口108和输入接口122可以被配置为根据诸如IEEE 802.11规范、IEEE802.15规范(例如,ZigBeeTM)、BluetoothTM标准等的其他无线标准,来传输诸如编码的视频数据的数据。在一些示例中,源设备102和/或目的设备116可以包括各自的片上***(SoC)设备。例如,源设备102可以包括执行属于视频编码器200和/或输出接口108的功能的SoC设备,并且目的设备116可以包括执行属于视频解码器300和/或输入接口122的功能的SoC设备。
本公开的技术可以应用于视频编解码,以支持多种多媒体应用中的任何一种,诸如空中电视广播、有线电视传输、***传输、诸如基于HTTP的动态自适应流传送(DASH)的互联网流传送视频传输、编码到数据存储介质上的数字视频、存储在数据存储介质上的数字视频的解码、或其他应用。
目的设备116的输入接口122从计算机可读介质110(例如,通信介质、存储设备112、文件服务器114等)接收编码的视频比特流。编码的视频比特流可以包括由视频编码器200定义的信令信息,其也由视频解码器300使用,该信令信息诸如具有描述视频块或其他编解码单元(例如,条带、图片、图片组、序列等)的特性和/或处理的值的语法元素。显示设备118向用户显示解码的视频数据的解码图片。显示设备118可以代表各种显示设备中的任何一种,例如阴极射线管(CRT)、液晶显示器(LCD)、等离子体显示器、有机发光二极管(OLED)显示器或另一种类型的显示设备。
虽然在图1中未示出,但是在一些示例中,视频编码器200和视频解码器300可以各自与音频编码器和/或音频解码器集成,并且可以包括适当的MUX-DEMUX单元或其他硬件和/或软件,以处理在公共数据流中包括音频和视频两者的多路复用流。如果适用,MUX-DEMUX单元可以依照ITU H.223多路复用器协议或诸如用户数据报协议(UDP)的其他协议。
视频编码器200和视频解码器300均可被实施为多种合适的编码器和/或解码器电路中的任何一种,诸如一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑、软件、硬件、固件或其任何组合。在以软件来部分地实施这些技术时,设备可以将软件的指令存储在合适的非暂时性计算机可读介质中,并且使用一个或多个处理器在硬件中运行这些指令以执行本公开的技术。视频编码器200和视频解码器300中的每一个可以被包括在一个或多个编码器或解码器中,其中任一个都可以被集成为相应设备中的组合编码器/解码器(CODEC)中的部分。包括视频编码器200和/或视频解码器300的设备可以包括集成电路、微处理器、和/或诸如蜂窝电话的无线通信设备。
视频编码器200和视频解码器300可以根据视频编解码标准进行操作,视频编解码标准诸如ITU-T H.265(也称为高效视频编解码(HEVC))或其诸如多视图和/或可缩放视频编解码扩展的扩展。可替代地,视频编码器200和视频解码器300可以根据其他专有或行业标准进行操作,诸如联合探索测试模型(JEM)或ITU-T H.266,也称为通用视频编解码(VVC)。VVC标准的最新草案在Bross等人于2019年7月3日-12日在ITU-T SG 16WP 3和ISO/IEC JTC 1/SC 29/WG 11的联合视频专家小组(JVET)的哥德堡的第15次会议的JVET-O2001-vE(以下简称“VVC草案6”)的“Versatile Video Coding(Draft 6)”中进行了描述。然而,本公开的技术不限于任何特定的编解码标准。
通常,视频编码器200和视频解码器300可以执行基于块的图片编解码。术语“块”通常是指包括要处理的数据(例如,编码的、解码的、或者另外在编码和/或解码处理中使用的数据)的结构。例如,块可以包括亮度和/或色度数据的样点的二维矩阵。通常,视频编码器200和视频解码器300可以对以YUV(例如,Y、Cb、Cr)格式表示的视频数据进行编解码。也就是说,视频编码器200和视频解码器300可以对亮度和色度分量进行编解码,而不是对图片样点的红、绿和蓝(RGB)数据进行编解码,其中色度分量可以包括红色调(hue)和蓝色调色度分量两者。在一些示例中,视频编码器200在编码之前将接收到的RGB格式的数据转换成YUV表示,并且视频解码器300将YUV表示转换成RGB格式。可替代地,预处理和后处理单元(未示出)可以执行这些转换。
本公开通常可涉及图片的编解码(例如,编码和解码),包括对图片的数据进行编码或解码的处理。类似地,本公开可以涉及图片的块的编解码,包括对块的数据进行编码或解码的处理,例如预测和/或残差编解码。编码的视频比特流通常包括表示编解码决策(例如,编解码模式)和将图片分割为块的语法元素的一系列值。因此,对编解码图片或块的引用通常应理解为编码形成图片或块的语法元素的值。
HEVC定义了各种块,包括编解码单元(CU)、预测单元(PU)和变换单元(TU)。根据HEVC,视频编解码器(诸如视频编码器200)根据四叉树结构将编解码树单元(CTU)分割为多个CU。也就是说,视频编解码器将CTU和CU分割为四个相等的、不重叠的正方形,并且四叉树的每个节点有零个或四个子节点。没有子节点的节点可以被称为“叶节点”,并且这种叶节点的CU可以包括一个或多个PU和/或一个或多个TU。视频编解码器可以进一步分割PU和TU。例如,在HEVC中,残差四叉树(RQT)表示对TU的分割。在HEVC中,PU表示帧间预测数据,而TU表示残差数据。帧内预测的CU包括帧内预测信息,诸如帧内模式指示。
作为另一示例,视频编码器200和视频解码器300可以被配置为根据JEM或VVC进行操作。根据JEM或VVC,视频编解码器(诸如视频编码器200)将图片分割为多个编解码树单元(CTU)。视频编码器200可以根据树结构来分割CTU,诸如四叉树二叉树(QTBT)结构或多类型树(MTT)结构。QTBT结构移除了多个分割类型的概念,诸如HEVC的CU、PU和TU间的分离。QTBT结构包括两个层级:根据四叉树分割所分割的第一层级,以及根据二叉树分割所分割的第二层级。QTBT结构的根节点对应于CTU。二叉树的叶节点对应于编解码单元(CU)。
在MTT分割结构中,可以使用四叉树(QT)分割、二叉树(BT)分割、和一种或多种三叉树(TT)(也称为三元树(TT))分割来对块进行分割。三叉或三元树分割是将块划分成三个子块的分割。在一些示例中,三叉或三元树分割在不通过中心来划分原始块的情况下将块划分成三个子块。MTT中的分割类型(例如,QT、BT和TT)可以是对称的或非对称的。
在一些示例中,视频编码器200和视频解码器300可以使用单个QTBT或MTT结构来表示亮度和色度分量中的每一个,而在其他示例中,视频编码器200和视频解码器300可以使用两个或多个QTBT或MTT结构,诸如一个QTBT/MTT结构用于亮度分量,并且另一QTBT/MTT结构用于两个色度分量(或者两个QTBT/MTT结构用于相应的色度分量)。
视频编码器200和视频解码器300可以被配置为使用按照HEVC的四叉树分割、QTBT分割、MTT分割、或其他分割结构。出于说明的目的,本公开的技术的描述是针对QTBT分割来呈现的。然而,应当理解,本公开的技术也可以应用于被配置为使用四叉树分割或其他类型的分割的视频编解码器。
可以在图片中以各种方式对块(例如,CTU或CU)进行分组。作为一个示例,砖块(brick)可以指图片中特定片(tile)内的CTU行的矩形区域。片可以是图片中特定片列和特定片行内的CTU的矩形区域。片列指具有与图片的高度相等的高度和由语法元素(例如,在图片参数集中)指定的宽度的CTU的矩形区域。片行指具有由语法元素(例如,在图片参数集中)指定的高度和与图片的宽度相等的宽度的CTU的矩形区域。
在一些示例中,片可以被分割为多个砖块,其中的每个砖块可以包括该片内的一个或多个CTU行。未被分割为多个砖块的片也可以被称为砖块。然而,作为片的真子集的砖块不能被称为片。
图片中的砖块还可以按条带排列。条带可以是图片的可以排他地在单个网络抽象层(NAL)单元中包含的整数数目的砖块。在一些示例中,条带包括多个完整的片或者仅包括一个片的完整砖块的连续序列。
本公开可以互换地使用“NxN”和“N乘N”来指代块(诸如CU或其他视频块)在垂直和水平维度方面的样点大小,例如16×16个样点或16乘16个样点。通常,16x16 CU会在垂直方向上具有16个样点(y=16),并且在水平方向上具有16个样点(x=16)。同样,NxN CU通常在垂直方向上具有N个样点,并且在水平方向上具有N个样点,其中N表示非负整数值。CU中的样点可以按行和列排列。此外,CU不一定需要在水平方向上和在垂直方向上具有相同数目的样点。例如,CU可以包括NxM个样点,其中M不一定等于N。
视频编码器200对表示预测和/或残差信息以及其他信息的CU的视频数据进行编码。预测信息指示如何预测该CU,以便针对该CU形成预测块。残差信息通常表示编码之前的CU与预测块的样点之间的逐样点差。
为了预测CU,视频编码器200通常可以通过帧间预测或帧内预测来形成CU的预测块。帧间预测通常是指根据先前编解码的图片的数据来预测CU,而帧内预测通常是指根据同一图片的先前编解码的数据来预测CU。为了执行帧间预测,视频编码器200可以使用一个或多个运动矢量来生成预测块。视频编码器200通常可以执行运动搜索以标识与CU(例如,在CU和参考块之间的差方面)紧密匹配的参考块。视频编码器200可使用绝对差和(SAD)、平方差和(SSD)、平均绝对差(MAD)、均方差(MSD)或其他此类差计算来计算差度量,以确定参考块是否与当前CU紧密匹配。在一些示例中,视频编码器200可以使用单向预测或双向预测来预测当前CU。
JEM和VVC的一些示例也提供仿射(affine)运动补偿模式,其可以被认为是帧间预测模式。在仿射运动补偿模式下,视频编码器200可以确定表示非平移运动的两个或多个运动矢量,例如放大或缩小、旋转、透视运动、或其他不规则运动类型。
为了执行帧内预测,视频编码器200可以选择帧内预测模式来生成预测块。JEM和VVC的一些示例提供了六十七种帧内预测模式,包括各种方向模式,以及平面模式和DC模式。通常,视频编码器200选择描述当前块(例如,CU的块)的从其预测当前块的样点的临近样点的帧内预测模式。假设视频编码器200以光栅扫描顺序(从左到右、从上到下)对CTU和CU进行编解码,这种样点在与当前块相同的图片中通常可以在当前块的上方、上方和左侧、或者左侧。
视频编码器200对表示当前块的预测模式的数据进行编码。例如,对于帧间预测模式,视频编码器200可以对表示使用各种可用帧间预测模式中的哪一种的数据、以及对应模式的运动信息进行编码。例如,对于单向或双向帧间预测,视频编码器200可以使用高级运动矢量预测(AMVP)或合并模式来编码运动矢量。视频编码器200可以使用类似的模式来编码仿射运动补偿模式的运动矢量。
在预测(诸如块的帧内预测或帧间预测)之后,视频编码器200可以计算块的残差数据。残差数据(诸如残差块)表示块与使用相应预测模式形成的该块的预测块之间的逐样点差。视频编码器200可将一个或多个变换应用于残差块,以产生变换域而非样点域中的经变换的数据。例如,视频编码器200可将离散余弦变换(DCT)、整数变换、小波变换或概念上类似的变换应用于残差视频数据。此外,视频编码器200可以在第一变换之后应用二次变换,诸如模式相关的不可分二次变换(MDNSST)、信号相关的变换、Karhunen-Loeve变换(KLT)等。视频编码器200在应用一个或多个变换后产生变换系数。
如上所述,在任何变换产生变换系数之后,视频编码器200可以执行变换系数的量化。量化通常是指量化变换系数以尽可能减少用于表示变换系数的数据量从而提供进一步压缩的处理。通过执行量化处理,视频编码器200可以减少与变换系数中的一些或全部相关联的比特深度。例如,视频编码器200可以在量化期间将n-比特值向下舍入到m比特值,其中n大于m。在一些示例中,为了执行量化,视频编码器200可以对要量化的值执行按位右移位。
在量化之后,视频编码器200可以扫描变换系数,从包括量化的变换系数的二维矩阵中产生一维矢量。扫描可以被设计为将较高能量(并因此较低频率)的变换系数放置在矢量的前部,并将较低能量(并因此较高频率)的变换系数放置在矢量的后部。在一些示例中,视频编码器200可以利用预定义的扫描顺序来扫描量化的变换系数以产生串行化的矢量,然后对矢量的量化的变换系数进行熵编码。在其他示例中,视频编码器200可以执行自适应扫描。在扫描量化的变换系数以形成一维矢量之后,视频编码器200可以例如根据上下文自适应二进制算术编解码(CABAC)对该一维矢量进行熵编码。视频编码器200还可以对描述与编码的视频数据相关联的元数据的语法元素的值进行熵编码,以供视频解码器300在解码视频数据中使用。
为了执行CABAC,视频编码器200可以将上下文模型内的上下文分配给要传输的符号。该上下文可以关于例如符号的临近值是否为零值。概率确定可以基于分配给符号的上下文。
视频编码器200还可以例如在图片头(header)、块头、条带头中向视频解码器300生成语法数据,诸如基于块的语法数据、基于图片的语法数据和基于序列的语法数据,或其他语法数据,诸如序列参数集(SPS)、图片参数集(PPS)、或视频参数集(VPS)。同样地,视频解码器300可以解码此类语法数据以确定如何解码对应的视频数据。
以这种方式,视频编码器200可以生成包括编码的视频数据(例如,描述将图片分割为块(例如,CU)的语法元素以及块的预测和/或残差信息)的比特流。最终,视频解码器300可以接收比特流并解码编码的视频数据。
通常,视频解码器300执行与视频编码器200执行的处理相反的处理,以解码比特流的编码的视频数据。例如,视频解码器300可以使用CABAC以与视频编码器200的CABAC编码处理基本相似但相反的方式来解码比特流的语法元素的值。语法元素可以定义将图片分割为CTU,并根据诸如QTBT结构的对应分割结构对每个CTU进行分割,以定义CTU的CU的分割信息。语法元素可进一步定义视频数据的块(例如,CU)的预测和残差信息。
残差信息可以由例如量化的变换系数表示。视频解码器300可以对块的量化的变换系数进行反量化和反变换,以再现该块的残差块。视频解码器300使用信令通知的预测模式(帧内或帧间预测)和相关的预测信息(例如,用于帧间预测的运动信息)来形成块的预测块。然后,视频解码器300可以(在逐个样点的基础上)组合预测块和残差块,以再现原始块。视频解码器300可执行附加处理,诸如执行去方块处理以减少沿着块的边界的视觉伪像。
本公开通常可以指“信令通知”某些信息,诸如语法元素。术语“信令通知”通常可以指用于对编码的视频数据进行解码的语法元素和/或其他数据的值的通信。也就是说,视频编码器200可以在比特流中信令通知语法元素的值。通常,信令通知指在比特流中生成值。如上所述,源设备102可以大体上实时地或者非实时地(诸如当将语法元素存储到存储设备112以供目的设备116稍后检索时可能发生的情况)将比特流传输到目的设备116。
图2A和2B是示出示例四叉树二叉树(QTBT)结构130和对应的编解码树单元(CTU)132的概念图。实线表示四叉树划分,并且虚线指示二叉树划分。在二叉树的每个划分(即,非叶)节点中,信令通知一个标志以指示使用哪种划分类型(即,水平还是垂直),其中在本示例中,0指示水平划分,并且1指示垂直划分。对于四叉树划分,不需要指示划分类型,因为四叉树节点将块水平和垂直划分成4个具有相等大小的子块。因此,视频编码器200可以编码并且视频解码器300可以解码QTBT结构130的区域树层级(即,实线)的语法元素(诸如划分信息)和QTBT结构130的预测树层级(即,虚线)的语法元素(诸如划分信息)。视频编码器200可以编码并且视频解码器300可以解码由QTBT结构130的终端叶节点表示的CU的视频数据,诸如预测和变换数据。
通常,图2B的CTU 132可以与定义与QTBT结构130在第一和第二层级处的节点相对应的块的尺寸的参数相关联。这些参数可以包括CTU尺寸(表示CTU 132以样点的尺寸)、最小四叉树尺寸(MinQTSize,表示最小允许的四叉树叶节点尺寸)、最大二叉树尺寸(MaxBTSize,表示最大允许的二叉树根节点尺寸)、最大二叉树深度(MaxBTDepth,表示最大允许的二叉树深度)和最小二叉树尺寸(MinBTSize,表示最小允许的二叉树叶节点尺寸)。
对应于CTU的QTBT结构的根节点可以在QTBT结构的第一层级具有四个子节点,其中每个子节点可以根据四叉树分割来进行分割。也就是说,第一层级的节点是叶节点(没有子节点),或者具有四个子节点。QTBT结构130的示例将这种节点表示为包括父节点和具有用于分支的实线的子节点。如果第一层级的节点不大于最大允许的二叉树根节点尺寸(MaxBTSize),则该节点可以由相应的二叉树进一步分割。可以迭代一个节点的二叉树划分,直到划分产生的节点达到最小允许的二叉树叶节点尺寸(MinBTSize)或最大允许的二叉树深度(MaxBTDepth)。QTBT结构130的示例将这种节点表示为具有用于分支的虚线。二叉树叶节点被称为编解码单元(CU),其用于预测(例如,图片内或图片间预测)和变换,而无需任何进一步的分割。如上所述,CU也可以被称为“视频块”或“块”。
在QTBT分割结构的一个示例中,CTU尺寸被设置为128x128(亮度样点和两个对应的64x64色度样点),MinQTSize被设置为16x16,MaxBTSize被设置为64x64,(宽度和高度两者的)MinBTSize被设置为4,并且MaxBTDepth被设置为4。首先将四叉树分割应用于CTU,以生成四叉树叶节点。四叉树叶节点可以具有从16×16(即,MinQTSize)到128×128(即,CTU尺寸)的尺寸。如果四叉树叶节点是128x128,则叶四叉树节点不会被二叉树进一步划分,因为其大小超过了MaxBTSize(即,在本示例中为64x64)。否则,四叉树叶节点将被二叉树进一步分割。因此,四叉树叶节点也是二叉树的根节点,并且二叉树深度为0。当二叉树深度达到MaxBTDepth(在本示例中为4)时,不允许进一步的划分。当二叉树节点宽度达到MinBTSize(在本示例中为4)时,意味着不允许进一步的水平划分。类似地,具有高度等于MinBTSize的二叉树节点意味着不允许对该二叉树节点进行进一步的垂直划分。如上所述,二叉树的叶节点被称为CU,并且根据预测和变换被进一步处理,而无需进一步的分割。
在H.Schwarz,T.Nguyen,D.Marpe,T.Wiegand,M.Karczewicz,M.Coban,J.Dong的“CE7:Transform coefficient coding with reduced number of regular-coded bins(tests 7.1.3a,7.1.3b)”,JVET文件JVET-L0274,中国澳门,2018年10月(以下为JVET-L0274),中提出了网格编解码量化(Trellis Coded Quantization,TCQ)。在JVET-L0274的技术中,两个标量量化器可切换地用于量化/去量化。当前变换/量化系数上使用的标量量化器是由在扫描顺序中在当前变换/量化系数之前的量化系数的奇偶性(最低有效位)确定的。
JVET-L0274中还提出了一种与TCQ结合的变换系数编解码方案,通过该方案,用于解码量化系数的上下文选择取决于所使用的量化器。具体地,指示变换系数为零或非零的变换系数的重要性标志(SIG)可以用上下文模型的三个集合中的一个进行编解码,并且为特定SIG选择的集合取决于用于相关联的系数的量化器。因此,当开始解码当前系数的SIG时,熵解码器(例如,视频解码器300的熵解码器)确定在先前扫描位置的变换系数的奇偶性,其确定当前系数的量化器,并且因此确定该系数的SIG的上下文集合。
在一些示例中,TU被划分成称为编解码组(CG)的非重叠子块,其尺寸通常是4x4样点。本文所述的解码过程有时可以关于4x4 CG来描述,但可以扩展到任何其他CG尺寸。本公开的技术以及因此本文所包括的描述主要涉及用于CG中的变换系数的绝对级别的编码和解码过程。可以以JVET-L0274中描述的方式对与CG相关联的其他信息(例如符号)进行编码或解码,但也可以使用替代技术进行编码和解码。
视频编码器200和视频解码器300可以被配置为处理比特流中的语法元素。例如,以下语法元素可用于表示变换系数的绝对级别值(absLevel)。注意,量化的变换系数通常具有整数值。绝对级别是变换系数的量级(magnitude)。
·sig_coeff_flag(SIG):如果absLevel为0,则此标志等于0;否则,该标志等于1。
·abs_level_gt1_flag:如果sig_coeff_flag等于1,则此标志存在于比特流中。如果absLevel大于1,则abs_level_gt1_flag的值等于1;否则,abs_level_gt1_flag等于0。
·par_level_flag:如果abs_level_gt1_flag等于1,则此标志存在于比特流中。如果absLevel是奇数,则par_level_flag的值等于0;如果absLevel是偶数,则par_level_flag的值等于1。
·abs_level_gt3_flag:如果abs_level_gt1_flag等于1,则此标志存在于比特流中。如果absLevel大于3,则abs_level_gt3_flag的值等于1;否则,abs_level_gt3_flag等于0。
·abs_remainder:如果abs_level_gt3_flag等于1,则此语法元素存在于比特流中。abs_remainder语法元素是变换系数级别的使用Golomb-Rice码进行编解码的剩余绝对值
·abs_level:这是用Golomb-Rice码进行编解码的变换系数级别的绝对值。
在下文中,为了简化描述,语法元素sig_coeff_flag、par_level_flag、abs_level_gt1_flag、abs_level_gt3_flag、abs_remainder和abs_level分别表示为SIG、Par、Gt1、Gt2、remLevel、absLevel。
视频编码器200和视频解码器300可以被配置为将未从比特流中解析的任何上述语法元素设置为默认值,例如0。给定五个语法元素中第一个语法元素的值,可以将变换系数的绝对级别的值计算为:
absoluteLevel=SIG+Gt1+Par+(Gt2<<1)+(remLevel<<1) (1)
可替代地,如果变换系数完全以旁路编解码模式编解码,则absoluteLevel可以直接被编解码为abs_level。
图3图示了表示JVET-L0274中的CG中的absoluteLevels的语法元素的示例顺序。其他顺序也可以使用。如图3所示,当absLevel大于4时,将从比特流中解析上述所有五个语法元素。
在图3的示例中,视频解码器300最多以四次遍历扫描CG中的位置。在第一遍历136中,视频解码器300解析SIG、Par和Gt1语法元素的值。只有非零SIG后跟着相应的Gt1和Par语法元素。即,如果视频解码器300确定SIG具有零值,意味着变换系数级别等于0,则视频解码器300不接收该系数的Gt1和Par语法元素的实例(instance)。在第一遍历136之后,可以重构每个位置的部分absoluteLevel的值,表示为absLevel1,如等式(2)所示。
absLevel1=SIG+Par+Gt1 (2)
在一些实施方式中,视频解码器300可以被配置为:在第一遍历136中,对于4x4子块,解析最多28个常规编解码二进制位,并且对于2x2子块,解析最多6个常规编解码二进制位。可以在SIG、Gt1和Par二进制位组中强制进行常规编解码二进制位数量的限制,这意味着每组SIG、Gt1和Par二进制位作为集合被编解码,并且不允许在集合的中间切换到旁路编解码。即,在一些实施方式中,SIG、Gt1和Par集合中的每个语法元素被编解码为常规编解码二进制位(例如,上下文编解码)或以旁路模式编解码。
如果在第一遍历136中存在至少一个非零Gtl,则视频解码器300可以被配置为扫描第二遍历138。在第二遍历138中,视频解码器300针对CG中具有非零Gt1语法元素的位置解析Gt2语法元素。CG中的位置与变换系数相关联。第一遍历136和第二遍历138中的二进制位都可以是常规编解码的,这意味着二进制位的概率分布由选定的上下文模型建模。如果在第二遍历138中存在至少一个非零的Gt2语法元素,则视频解码器300扫描第三遍历140。在第三遍历140期间,视频解码器300解析具有非零Gt2s的位置的reLevel语法元素。remLevel语法元素不是二进制的,并且视频解码器300可以对remLevel的二进制化版本的二进制位进行旁路编解码,这意味着假设二进制位是均匀分布的并且不需要上下文选择。
在第四遍历142中,视频解码器300扫描在前三次遍历中未部分用常规编解码二进制位表示的所有剩余系数。第四遍历142的变换系数级别使用旁路编解码的二进制位编解码为绝对值。
视频编码器200和视频解码器300可执行上下文建模以对上述语法元素中的一些进行熵编解码。此处还简要介绍了JVET-L0274中使用的上下文建模以及本公开提出的修改。下文更详细讨论的上下文建模通常是指为正被编码或解码的二进制位选择概率模型,也称为上下文。在JVET-L0274中,语法元素SIG、Par、Gt1和Gt2使用上下文建模进行编解码。上下文的选择取决于局部邻域中absLevel1语法元素的值,表示为N。模板内但在当前TU之外的位置可以从N中排除。
图4图示了用于选择概率模型的模板的图。标有“X”的方块指定当前扫描位置,并且标有“Y”的方块代表所使用的局部邻域。
对于当前位置(参见图4中标有X的方块),视频解码器300确定SIG、Par、Gt1和Gt2语法元素的上下文索引,表示为ctxIdxSIG、ctxIdxPar、ctxIdxGt1和ctxIdxGt2。为了确定上下文索引,视频解码器300可以首先确定三个变量—numSIG、sumAbs1和d。变量numSIG代表N中非零SIG的数量,由以下等式(3)表示:
sumSIG=∑i∈NSIG(i) (3)
变量sumAbs1代表N中absLevel1的总和,用下面的等式(4)表示:
sumAbs1=∑i∈NabsLevel1(i) (4)
变量d代表TU内当前位置的对角线度量,如以下等式(5)表示:
d=x+y, (5)
其中,x和y代表TU内部当前位置的坐标。
给定sumAbs1和d,视频解码器300如下确定用于解码SIG的上下文索引:
·对于亮度,ctxIdxSIG由等式(6)确定:
ctxIdxSIG=18*max(0,state-1)+min(sumAbs1,5)+(d<2?12:(d<5?6:0)) (6)
·对于色度,ctxIdxSIG由等式(7)确定:
ctxIdxSIG=12*max(0,state-1)+min(sumAbs1,5)+(d<2?6:0)) (7)
在等式(6)和(7)中,变量“状态”表示状态机的当前状态,如JVET-L0274中所定义。状态机将在下面更详细地讨论。
给定sumSIG、sumAbs1和d,视频解码器300如下确定用于解码Par的上下文索引:
·如果当前扫描位置等于最后一个非零系数的位置,则ctxIdxPar为0。
·否则,
ο对于亮度,ctxIdxPar由等式(8)确定:
ctxIdxPar=1+min(sumAbs1-numSIG,4)+(d==0?15:(d<3?10:(d<10?5:0)))
(8)
ο对于色度,ctxIdxPar由(9)确定
ctxIdxPar=1+min(sumAbs1-numSIG,4)+(d==0?5:0) (9)
ctxIdxGtl和ctxIdxGt2设置为ctxIdxPar的值。
视频编码器200和视频解码器300可以被配置为执行RemLevel编解码。视频解码器300如下导出用于对非二进制语法元素remRemainder(remLevel)和absLevel进行编解码的Rice参数(ricePar):
·在每个子块的开始,ricePar被设置为等于0;
·在为余数(remainder)编解码语法元素后,Rice参数(ricePar)
修改如下:
如果ricePar小于3且余数的最后一个编解码值大于((3<<ricePar)1),则ricePar增加1。
对于编解码非二进制语法元素absLevel,代表完全旁路编解码的绝对量化索引,以下适用:
·确定局部模板中的绝对值的总和sumAbs。
·根据以下,变量ricePar和posZero由表查找确定:
ricePar=riceParTable[min(31,sumAbs)]
posZero=posZeroTable[max(0,state-1)][min(31,sumAbs)],其中变量状态代表相关量化的状态(当相关量化被禁用时它等于0),表riceParTable[]和posZeroTable[][]由下式给出:
riceParTable[32]={
0,0,0,0,0,0,0,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3
};
posZeroTable[3][32]={
{0,0,0,0,0,1,2,2,2,2,2,2,4,4,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8},
{1,1,l,1,2,3,4,4,4,6,6,6,8,8,8,8,8,8,12,12,12,12,12,12,12,12,16,16,16,16,16,16},
{1,1,2,2,2,3,4,4,4,6,6,6,8,8,8,8,8,8,12,12,12,12,12,12,12,16,16,16,16,16,16,16}
};
·中间变量codeValue的导出如下:
ο如果absLevel等于0,则codeValue设置为等于posZero;
o否则,如果absLevel小于或等于posZero,则codeValue设置为等absLevel-1;
o否则(absLevel大于posZero),将codeValue设置为等于absLevel。
·codeValue的值使用带有Rice参数ricePar的Golomb-Rice码进行编解码。
视频编码器200和视频解码器300可以被配置为执行Golomb-Rice编解码和指数Golomb编解码的组合,用于剩余级别编解码。即,变换系数级别中未被上下文编解码的部分可以由Golomb-Rice码和指数Golomb码的组合来代表。变换系数的非上下文编解码部分可以对应于上文所述的remLevel或absLevel的值。
当为系数编解码级别值时,通常预期非上下文编解码级别值将相对较小。因此,本公开提出使用Golomb-Rice编解码,其可为用于编解码小值的有效编解码技术。对于变换系数的级别值不小的那些情况,则可以使用指数Golomb编解码,其可以是用于编解码较大值的有效编解码技术。
可以基于以下阈值确定用于剩余系数的值的从Golomb-Rice转换到指数Golomb编解码的交换点:
threshold=g_auiGoRiceRange[m_goRicePar]<<m_goRicePar
其中m_goRicePar是Rice参数,并且
g_auiGoRiceRange[MAX_GR_ORDER_RESIDUAL]={6,5,6,3}
是确定每个Rice参数的前缀长度(即length-1)的查找表。小于或等于阈值的系数的值可以被编解码为Golomb-Rice码,而大于阈值的系数的值可以使用Golomb-Rice码和指数Golomb码两者来编解码。
视频解码器300可以被配置为执行absoluteLevel重构,这通常是指基于各种语法元素确定级别值的过程。absoluteLevel重构与JVET-L0274中的相同,上面已针对比特流中的语法元素进行了讨论。
本公开描述了用于剩余级编解码的技术。根据本公开的技术,视频编码器200和视频解码器300可以被配置为使用由RiceRange为所有Rice参数定义的固定前缀长度,以确定使用Golomb-Rice码与指数Golomb码之间的转换点。在一个示例中,阈值将为:
threshold=RiceRange<<m_goRicePar
就当前VVC设计中的编解码性能而言,RiceRange的值为5或6可能会产生良好的结果。本公开的技术可例如消除使用查找表的需要而不会过度牺牲编解码效率。
在一些示例中,不同的RiceRange可用于对变换系数的remLevel和absLevel部分进行编解码,因为remLevel代表剩余级别的一半,而absLevel代表完整级别(较大的值)。
在其他示例中,视频编码器200和视频解码器300可以被配置为使用固定的RiceRange参数,诸如5或6,用于除最大Rice参数之外的所有Rice参数,最大Rice参数可以具有较小的RiceRange参数,诸如3。
本公开的技术包括所提出的最坏情况转义码长度限制。当前用于系数的剩余级别的Golomb-Rice/指数Golomb代表的长度可以超过32比特。例如,对于最坏的情况riceParam=0,remLevel码的最大值为16381,以33比特代表。对于absLevel,215的最大值以35比特代表。本公开提出了将最坏情况码长度限制为32的技术。
最大前缀代码长度由下式给出:
maximumPrefixLength=32-(RiceRange+MAX_TR_DYNAMIC_RANGE)
当达到这个前缀长度时,相应的后缀长度由下式给出:
suffixLength=MAX_TR_DYNAMIC_RANGE-rParam
该方案将用于编解码abs_remainder(remLevel)和dec_abs_level(absLevel)语法元素的最坏情况转义码长度限制为32比特。
下表图示了提出的二值化criceParam=0。
在上表中,输入值5代表Golomb Rice编解码和指数Golomb编解码之间的交换点。输入值的码字可以被看成是11111的Golomb Rice码后附加了0,对应5+0。下一个输入6可以被看成是11111的Golomb Rice码后附加了10x,对应于5+1=6。其余的输入可以类似地被看成是11111的Golomb Rice码加上指数Golomb值。
下表通常显示与上述相同的编解码方案,但提出的二值化criceParam=1。
下表通常显示与上述相同的编解码方案,但提出的二值化criceParam=2。
下表通常显示与上述相同的编解码方案,但提出的二值化criceParam=3。
图5是示出可执行本公开的技术的示例视频编码器200的框图。提供图5是为了进行说明,而不应认为是对本公开中广泛示例和描述的技术的限制。为了说明,本公开在诸如HEVC视频编解码标准和开发中的H.266视频编解码标准的视频编解码标准的背景中描述了视频编码器200。然而,本公开的技术不限于这些视频编解码标准,并且通常可应用于视频编码和解码。
在图5的示例中,视频编码器200包括视频数据存储器230、模式选择单元202、残差生成单元204、变换处理单元206、量化单元208、反量化单元210、反变换处理单元212、重构单元214、滤波器单元216、解码图片缓冲器(DPB)218和熵编码单元220。
视频数据存储器230可以存储要由视频编码器200的组件编码的视频数据。视频编码器200可以从例如视频源104(图1)接收存储在视频数据存储器230中的视频数据。DPB218可以充当参考图片存储器,其存储用于在视频编码器200对后续视频数据的预测中使用的参考视频数据。视频数据存储器230和DPB 218可以由各种存储器设备中的任何一种形成,诸如动态随机访问存储器(DRAM),包括同步DRAM(SDRAM)、磁阻RAM(MRAM)、电阻RAM(RRAM)或其他类型的存储器设备。视频数据存储器230和DPB218可以由相同的存储设备或单独的存储设备提供。在各种示例中,视频数据存储器230可以与视频编码器200的其他组件在芯片上,如图所示,或者相对于这些组件在芯片外。
在本公开中,对视频数据存储器230的引用不应解释为限于视频编码器200内部的存储器,除非有类似明确地描述,或者为视频编码器200外部的存储器,除非有类似明确地描述。相反,对视频数据存储器230的引用应被理解为对存储视频编码器200所接收的用于编码的视频数据(例如,要编码的当前块的视频数据)的存储器的引用。图1的存储器106还可以提供来自视频编码器200的各个单元的输出的临时存储。
示出图5的各个单元以帮助理解视频编码器200执行的操作。这些单元可以被实施为固定功能电路、可编程电路或其组合。固定功能电路是指提供特定功能并对可以执行的操作进行预先设置的电路。可编程电路是指可被编程以执行各种任务并在可以执行的操作中提供灵活功能的电路。例如,可编程电路可以运行软件或固件,使得可编程电路以由软件或固件的指令定义的方式操作。固定功能电路可以运行软件指令(例如,接收参数或输出参数),但是固定功能电路执行的操作的类型通常是不可变的。在一些示例中,一个或多个单元可以是不同的电路块(固定功能或可编程),并且在一些示例中,一个或多个单元可以是集成电路。
视频编码器200可包括由可编程电路形成的算术逻辑单元(ALU)、基本功能单元(EFU)、数字电路、模拟电路和/或可编程核。在使用由可编程电路运行的软件来执行视频编码器200的操作的示例中,存储器106(图1)可以存储视频编码器200接收和运行的软件的目标代码,或者在视频编码器200内的另一个存储器(未示出)可以存储此类指令。
视频数据存储器230被配置为存储接收的视频数据。视频编码器200可以从视频数据存储器230检索视频数据的图片,并将视频数据提供到残差生成单元204和模式选择单元202。视频数据存储器230中的视频数据可以是待编码的原始视频数据。
模式选择单元202包括运动估计单元222、运动补偿单元224和帧内预测单元226。模式选择单元202可以包括附加的功能单元,以根据其他预测模式来执行视频预测。作为示例,模式选择单元202可以包括调色板(palette)单元、帧内块复制单元(其可以是运动估计单元222和/或运动补偿单元224的一部分)、仿射单元、线性模型(LM)单元等。
模式选择单元202通常协调多个编码遍历(pass),以测试编码参数的组合以及这种组合的结果率失真值。编码参数可以包括将CTU分割为CU、用于CU的预测模式、用于CU的残差数据的变换类型、用于CU的残差数据的量化参数等。模式选择单元202可以最终选择具有比其他测试组合更好的率失真值的编码参数组合。
视频编码器200可以将从视频数据存储器230中检索到的图片分割为一系列CTU,并将一个或多个CTU封装在条带内。模式选择单元202可以根据树结构(诸如上述HEVC的QTBT结构或四叉树结构)来分割图片的CTU。如上所述,视频编码器200可以通过根据树结构分割CTU来形成一个或多个CU。这样的CU通常也可以被称为“视频块”或“块”。
通常,模式选择单元202还控制其组件(例如,运动估计单元222、运动补偿单元224和帧内预测单元226),以生成当前块(例如,当前CU,或者在HEVC中PU和TU的重叠部分)的预测块。对于当前块的帧间预测,运动估计单元222可以执行运动搜索以标识一个或多个参考图片(例如,在DPB218中存储的一个或多个先前编解码的图片)中的一个或多个紧密匹配的参考块。具体地,运动估计单元222可以计算代表可能参考块与当前块如何相似的值,例如根据绝对差和(SAD)、平方差和(SSD)、平均绝对差(MAD)、均方差(MSD)等。运动估计单元222通常可以使用当前块和所考虑的参考块之间的逐样点差来执行这些计算。运动估计单元222可以标识具有由这些计算产生的最低值的参考块,该最低值指示最紧密匹配当前块的参考块。
运动估计单元222可以形成一个或多个运动矢量(MV),该运动矢量定义参考图片中的参考块的位置相对于当前图片中的当前块的位置。然后,运动估计单元222可以向运动补偿单元224提供运动矢量。例如,对于单向帧间预测,运动估计单元222可以提供单个运动矢量,而对于双向帧间预测,运动估计单元222可以提供两个运动矢量。然后,运动补偿单元224可以使用运动矢量来生成预测块。例如,运动补偿单元224可以使用运动矢量来检索参考块的数据。作为另一示例,如果运动矢量具有分数样点精度,则运动补偿单元224可以根据一个或多个插值滤波器对预测块的值进行插值。此外,对于双向帧间预测,运动补偿单元224可以检索由相应运动矢量标识的两个参考块的数据,并通过例如逐样点平均或加权平均来组合检索的数据。
作为另一示例,对于帧内预测、或帧内预测编解码,帧内预测单元226可以从与当前块临近的样点生成预测块。例如,对于方向模式,帧内预测单元226通常可以数学地组合临近样点的值,并在当前块上沿定义的方向填充这些计算值,以产生预测块。作为另一示例,对于DC模式,帧内预测单元226可以计算当前块的临近样点的平均,并且生成预测块,包括预测块的每个样点的该所产生的平均。
模式选择单元202将预测块提供到残差生成单元204。残差生成单元204从视频数据存储器230接收当前块的原始未编解码版本,并从模式选择单元202接收预测块。残差生成单元204计算当前块和预测块之间的逐样点差。所产生的逐样点差定义了当前块的残差块。在一些示例中,残差生成单元204还可以确定残差块中的样点值之间的差,以使用残差差分脉冲编解码调制(RDPCM)来生成残差块。在一些示例中,可以使用执行二进制减法的一个或多个减法器电路来形成残差生成单元204。
在模式选择单元202将CU分割为PU的示例中,每个PU可以与亮度预测单元和对应的色度预测单元相关联。视频编码器200和视频解码器300可以支持具有各种尺寸的PU。如上所述,CU的尺寸可以指CU的亮度编解码块的尺寸,并且PU的尺寸可以指PU的亮度预测单元的尺寸。假设特定CU的尺寸为2Nx2N,视频编码器200可支持用于帧内预测的2Nx2N或NxN的PU尺寸,以及用于帧间预测的2Nx2N、2NxN、Nx2N、NxN或类似的对称PU尺寸。视频编码器200和视频解码器30还可以支持用于帧间预测的2NxnU、2NxnD、nLx2N和nRx2N的PU尺寸的非对称分割。
在模式选择单元不将CU进一步分割为PU的示例中,每个CU可与亮度编解码块和对应的色度编解码块相关联。如上所述,CU的尺寸可以指CU的亮度编解码块的尺寸。视频编码器200和视频解码器120可以支持2Nx2N、2NxN或Nx2N的CU尺寸。
对于其他视频编解码技术,诸如帧内块复制模式编解码、仿射模式编解码和线性模型(LM)模式编解码(作为少数示例),模式选择单元202经由与编解码技术相关联的相应单元,针对正在编码的当前块生成预测块。在一些示例中,诸如调色板模式编解码,模式选择单元202可以不生成预测块,而是生成指示基于所选调色板来重构块的方式的语法元素。在这种模式下,模式选择单元202可以将这些语法元素提供到熵编码单元220以进行编码。
如上所述,残差生成单元204接收当前块和对应预测块的视频数据。然后,残差生成单元204针对当前块生成残差块。为了生成残差块,残差生成单元204计算预测块和当前块之间的逐样点差。
变换处理单元206对残差块应用一个或多个变换,以生成变换系数的块(本文称为“变换系数块”)。变换处理单元206可以对残差块应用各种变换,以形成变换系数块。例如,变换处理单元206可以对残差块应用离散余弦变换(DCT)、方向变换、Karhunen-Loeve变换(KLT)、或概念上类似的变换。在一些示例中,变换处理单元206可以对残差块执行多个变换,例如主变换和二次变换,诸如旋转变换。在一些示例中,变换处理单元206不对残差块应用变换。
量化单元208可以量化变换系数块中的变换系数,以产生量化的变换系数块。量化单元208可以根据与当前块相关联的量化参数(QP)值来量化变换系数块的变换系数。视频编码器200(例如,经由模式选择单元202)可以通过调整与CU相关联的QP值来调整应用于与当前块相关联的变换系数块的量化的程度。量化可能引入信息损失,因此,量化的变换系数可能具有比由变换处理单元206产生的原始变换系数更低的精度。
反量化单元210和反变换处理单元212可以分别对量化的变换系数块应用反量化和反变换,以从变换系数块重构残差块。重构单元214可以基于重构的残差块和由模式选择单元202生成的预测块来产生对应于当前块的重构块(尽管可能具有一定程度的失真)。例如,重构单元214可以将重构的残差块的样点添加到来自模式选择单元202生成的预测块的对应样点中,以产生重构块。
滤波器单元216可以对重构块执行一个或多个滤波操作。例如,滤波器单元216可以执行去方块操作以减少沿CU边缘的块效应伪像。在一些示例中,可以跳过滤波器单元216的操作。
视频编码器200在DPB 218中存储重构块。例如,在跳过滤波器单元216的操作,即不执行滤波操作,的示例中,重构单元214可以将重构块存储到DPB 218。在执行滤波器单元216的操作的示例中,滤波器单元216可以将经滤波的重构块存储到DPB 218。运动估计单元222和运动补偿单元224可以从DPB 218中检索参考图片,该参考图片由重构的(并且可能经滤波的)块形成,以对随后编码的图片的块进行帧间预测。此外,帧内预测单元226可以使用当前图片的DPB 218中的重构块来对当前图片中的其他块进行帧内预测。
通常,熵编码单元220可以对从视频编码器200的其他功能组件接收的语法元素进行熵编码。包括上述用于系数编解码的语法元素。熵编码单元220可以例如对以上所述的用于信令通知变换系数的语法元素进行熵编码。例如,熵编码单元220可以对来自量化单元208的量化的变换系数块进行熵编码。作为另一示例,熵编码单元220可以对来自模式选择单元202的预测语法元素(例如,用于帧间预测的运动信息或用于帧内预测的帧内模式信息)进行熵编码。熵编码单元220可以对作为视频数据的另一示例的语法元素执行一个或多个熵编码操作,以生成熵编码的数据。例如,熵编码单元220可以对数据执行上下文自适应可变长度编解码(CAVLC)操作、CABAC操作、变量到变量(V2V)长度编解码操作、基于语法的上下文自适应二进制算术编解码(SBAC)操作、概率区间分割熵(PIPE)编解码操作、指数-Golomb(Exponential-Golomb)编码操作、或另一种类型的熵编码操作。在一些示例中,熵编码单元220可以在语法元素不被熵编码的旁路模式下操作。
视频编码器200可以输出包括重构条带或图片的块所需的经熵编码的语法元素的比特流。具体地,熵编码单元220可以输出比特流。
上述操作是针对块进行描述的。这种描述应该理解为用于亮度编解码块和/或色度编解码块的操作。如上所述,在一些示例中,亮度编解码块和色度编解码块是CU的亮度和色度分量。在一些示例中,亮度编解码块和色度编解码块是PU的亮度和色度分量。
在一些示例中,不需要对色度编解码块重复针对亮度编解码块执行的操作。作为一个示例,不需要为标识色度块的运动矢量(MV)和参考图片而重复标识亮度编解码块的MV和参考图片的操作。相反,亮度编解码块的MV可以被缩放以确定色度块的MV,并且参考图片可以是相同的。作为另一个示例,对于亮度编解码块和色度编解码块,帧内预测处理可以是相同的。
视频编码器200代表被配置为编码视频数据的设备的示例,该设备包括被配置为存储视频数据的存储器,以及在电路中实施并被配置为如本公开所述编码系数的一个或多个处理单元。
例如,视频编码器200可以针对变换系数组的第一语法元素执行第一编码遍历,其中第一语法元素对应于变换系数组中的第一系数集合;对变换系数组的附加语法元素执行附加编码遍历,其中附加语法元素包括指示第一系数集合的变换系数的剩余级别的至少一个语法元素;根据本公开中的任何技术处理指示变换系数的剩余级别的至少一个语法元素。例如,第一语法元素可以包括一个或多个重要性标志,一个或多个重要性标志中的每一个指示变换系数的绝对级别是否等于零。第一语法元素可包括一个或多个奇偶性级别标志,其中一个或多个奇偶性级别标志中的每一个指示变换系数的绝对级别是偶数还是奇数。视频编码器200还可在执行附加编码遍历之前对变换系数组的第二语法元素执行第二编码遍历。
视频编码器200还代表被配置为对视频数据进行编码的设备的示例,该设备包括被配置为存储视频数据的存储器,以及在电路中实施并且被配置为确定变换系数组的系数的值并且对变换系数组的第一系数集合的语法元素进行上下文编码,直到达到常规编解码二进制位的最大数量的一个或多个处理单元。上下文编码的语法元素包括指示变换系数的绝对级别是否等于零的一个或多个重要性标志、指示变换系数的绝对级别是偶数还是奇数的一个或多个奇偶性级别标志、以及指示变换系数的绝对级别是否大于2的一个或多个第一标志。为了对变换系数组的语法元素进行上下文编码,视频编码器200可以被配置为执行上下文自适应二进制算术编码以对变换系数组的语法元素进行编码。
视频编码器200可以被配置为响应于达到常规编解码二进制位的最大数量而对变换系数组的第二系数集合的附加语法元素进行旁路编码。为了对附加语法元素进行旁路编码,视频编码器200确定第二系数集合的变换系数的级别值,响应于级别值大于阈值而使用Golomb-Rice编解码对变换系数的前缀值进行编码,以及响应于级别值大于阈值,使用指数Golomb编解码对后缀值进行编码。例如,视频编码器200可以通过从变换系数的级别值中减去前缀值来确定后缀值。变换系数的级别值可以是绝对级别值或剩余级别值。
为了对附加语法元素进行旁路编码,视频编码器200还可以被配置为确定第二系数集合的第二系数的第二级别值,并且响应于第二级别值小于阈值,使用Golomb-Rice编解码对第二系数的前缀值进行编码而不对第二系数的后缀值进行编码。阈值可以对于所有系数是固定值或变化的值。例如,视频编码器200可以例如被配置为确定变换系数的Rice参数的值并且基于Rice参数的值确定阈值。例如,阈值可以是5或6,但也可以使用其他值。
图6是示出可以执行本公开的技术的示例视频解码器300的框图。图6是出于说明的目的而提供的,并不限制本公开中广泛示例和描述的技术。为了说明的目的,本公开描述了根据JEM和HEVC的技术描述的视频解码器300。然而,本公开的技术可以由被配置为其他视频编解码标准的视频编解码设备来执行。
在图6的示例中,视频解码器300包括编解码图片缓冲器(CPB)存储器320、熵解码单元302、预测处理单元304、反量化单元306、反变换处理单元308、重构单元310、滤波器单元312和解码图片缓冲器(DPB)314。预测处理单元304包括运动补偿单元316和帧内预测单元318。预测处理单元304可以包括附加单元,以根据其他预测模式来执行预测。作为示例,预测处理单元304可以包括调色板单元、帧内块复制单元(其可以形成运动补偿单元316的一部分)、仿射单元、线性模型(LM)单元等。在其他示例中,视频解码器300可以包括更多、更少或不同的功能组件。
CPB存储器320可以存储要由视频解码器300的组件解码的视频数据,诸如编码的视频比特流。在CPB存储器320中存储的视频数据可以例如从计算机可读介质110(图1)获得。CPB存储器320可以包括存储来自编码的视频比特流的编码的视频数据(例如,语法元素)的CPB。此外,CPB存储器320可以存储除编码的图片的语法元素之外的视频数据,诸如表示来自视频解码器300的各个单元的输出的临时数据。DPB 314通常存储解码图片,其可以是视频解码器300输出的,和/或视频解码器300可以在解码编码的视频比特流的后续数据或图片时将其用作参考视频数据。CPB存储器320和DPB314可以由诸如动态随机访问存储器(DRAM)的各种存储设备中的任意一种形成,包括同步DRAM(SDRAM)、磁阻RAM(MRAM)、电阻性RAM(RRAM)或其他类型的存储设备。CPB存储器320和DPB 314可以由相同的存储设备或分离的存储设备提供。在各种示例中,CPB存储器320可以与视频解码器300的其他组件在芯片上,或者相对于这些组件在芯片外。
附加地或可替代地,在一些示例中,视频解码器300可以从存储器120(图1)检索编解码的视频数据。也就是说,存储器120可以如上所述利用CPB存储器320存储数据。同样,当视频解码器300的某些或全部功能在软件中实施以由视频解码器300的处理电路运行时,存储器120可以存储要由视频解码器300运行的指令。
示出图6中图示的各种单元以帮助理解由视频解码器300执行的操作。这些单元可以被实施为固定功能电路、可编程电路或其组合。类似于图5,固定功能电路是指提供特定功能的电路,并对可以执行的操作进行预设。可编程电路是指可以编程以执行各种任务并在可以执行的操作中提供灵活功能的电路。例如,可编程电路可以运行软件或固件,使得可编程电路以由软件或固件的指令定义的方式操作。固定功能电路可以运行软件指令(例如,接收参数或输出参数),但是固定功能电路执行的操作的类型通常是不可变的。在一些示例中,一个或多个单元可以是不同的电路块(固定功能或可编程),并且在一些示例中,一个或多个单元可以是集成电路。
视频解码器300可包括ALU、EFU、数字电路、模拟电路和/或由可编程电路形成的可编程核。在由可编程电路上运行的软件来执行视频解码器300的操作的示例中,片上或片外存储器可以存储视频解码器300接收和运行的软件的指令(例如,目标代码)。
熵解码单元302可以从CPB接收编码的视频数据,并对视频数据进行熵解码以再现语法元素,包括上述用于系数编解码的语法元素。预测处理单元304、反量化单元306、反变换处理单元308、重构单元310和滤波器单元312可以基于从比特流提取的语法元素来生成解码的视频数据。
通常,视频解码器300在逐块的基础上重构图片。视频解码器300可以对每个块单独执行重构操作(其中当前正在重构(即解码)的块可以被称为“当前块”)。
熵解码单元302可以对定义量化的变换系数块的量化的变换系数的语法元素、以及变换信息(诸如量化参数(QP)和/或(一个或多个)变换模式指示)进行熵解码。熵解码单元302可以例如对以上所述的用于信令通知变换系数的语法元素进行熵解码。反量化单元306可以使用与量化的变换系数块相关联的QP来确定量化的程度,并且类似地,确定反量化单元306要应用的反量化的程度。反量化单元306可以例如执行逐位左移位操作来对量化的变换系数进行反量化。反量化单元306可以由此形成包括变换系数的变换系数块。
在反量化单元306形成变换系数块之后,反变换处理单元308可以对变换系数块应用一个或多个反变换,以生成与当前块相关联的残差块。例如,反变换处理单元308可以对变换系数块应用反DCT、反整数变换、反Karhunen-Loeve变换(KLT)、反旋转变换、反方向变换、或另一反变换。
此外,预测处理单元304根据由熵解码单元302熵解码的预测信息语法元素生成预测块。例如,如果预测信息语法元素指示当前块是帧间预测的,则运动补偿单元316可以生成预测块。在这种情况下,预测信息语法元素可以指示从中检索参考块的DPB 314中的参考图片,以及标识参考图片中的参考块的位置相对于当前图片中的当前块的位置的运动矢量。运动补偿单元316通常可以以与关于运动补偿单元224(图5)描述的大体相似的方式来执行帧间预测处理。
作为另一示例,如果预测信息语法元素指示当前块是帧内预测的,则帧内预测单元318可以根据由预测信息语法元素指示的帧内预测模式来生成预测块。同样,帧内预测单元318通常可以以与关于帧内预测单元226(图5)所描述的大体类似的方式来执行帧内预测处理。帧内预测单元318可以从DPB 314检索当前块的临近样点的数据。
重构单元310可以使用预测块和残差块来重构当前块。例如,重构单元310可以将残差块的样点添加到预测块的对应样点以重构当前块。
滤波器单元312可以对重构块执行一个或多个滤波操作。例如,滤波器单元312可以执行去方块操作以减少沿着重构块的边缘的块效应伪像。滤波器单元312的操作不一定在所有示例中执行。
视频解码器300可以将重构块存储在DPB 314中。如上所述,DPB 314可以向预测处理单元304提供参考信息,例如用于帧内预测的当前图片的样点以及用于随后的运动补偿的先前解码的图片。此外,视频解码器300可以从DPB输出解码图片,以用于随后在诸如图1的显示设备118的显示设备上呈现。
以这种方式,视频解码器300表示视频解码设备的示例,该视频解码设备包括被配置为存储视频数据的存储器,以及在电路中实施并被配置为如本公开所述解码系数的一个或多个处理单元。
例如,视频解码器300可以针对变换系数组的第一语法元素执行第一解码遍历,其中第一语法元素对应于变换系数组中的第一系数集合;对变换系数组的附加语法元素执行附加解码遍历,其中附加语法元素包括指示第一系数集合的变换系数的剩余级别的至少一个语法元素;以及根据本公开中的任何技术处理指示变换系数的剩余级别的至少一个语法元素。视频解码器300可基于第一语法元素和附加语法元素来确定变换系数的值。
例如,第一语法元素可以包括一个或多个重要性标志,其中一个或多个重要性标志中的每一个指示变换系数的绝对级别是否等于零。例如,第一语法元素可以包括一个或多个奇偶性级别标志,其中一个或多个奇偶性级别标志中的每一个指示变换系数的绝对级别是偶数还是奇数。视频解码器300还可在执行附加解码遍历之前针对变换系数组的第二语法元素执行第二解码遍历。
以这种方式,视频解码器300还代表视频解码设备的示例,该设备包括被配置为存储视频数据的存储器,以及在电路中实施并且被配置为对变换系数组的第一系数集合的语法元素进行上下文解码,直到达到常规编解码二进制位的最大数量的一个或多个处理单元。上下文编码的语法元素包括指示变换系数的绝对级别是否等于零的一个或多个重要性标志、指示变换系数的绝对级别是偶数还是奇数的一个或多个奇偶性级别标志、以及指示变换系数的绝对级别是否大于2的一个或多个第一标志。为了对变换系数组的语法元素进行上下文解码,视频解码器可以被配置为执行上下文自适应二进制算术解码以对变换系数组的语法元素进行解码。
视频解码器300可以被配置为响应于达到常规编解码二进制位的最大数量而对第二系数集合的附加语法元素进行旁路解码。为了对附加语法元素进行旁路解码,视频解码器300可以被配置为接收变换系数的前缀值,使用Golomb-Rice编解码对前缀值进行解码,响应于前缀值的长度等于阈值来接收变换系数的后缀值,并使用指数Golomb编解码对后缀值进行解码。
视频解码器300可以被配置为基于经上下文解码的语法元素确定变换单元的第一系数集合的值,且基于附加语法元素确定变换单元的第二系数集合的值。为了基于附加语法元素确定变换单元的第二系数集合的值,视频解码器300可以被配置为基于解码的前缀值和解码的后缀值来确定变换系数的级别值。为了确定变换系数的级别值,视频解码器300可以被配置为将解码的前缀值添加到解码的后缀值。变换系数的级别值可以是绝对级别值或剩余级别值。
对于第二系数,视频解码器300可以被配置为接收第二系数的第二前缀值;使用Golomb-Rice编解码解码第二前缀值;响应于第二前缀值的长度小于阈值,在不接收第二系数的后缀值的情况下确定第二系数的级别值。
阈值可以对于所有系数是固定值或变化的值。例如,视频解码器300可以例如被配置为确定变换系数的Rice参数的值并且基于Rice参数的值确定阈值。例如,阈值可以是5或6,但也可以使用其他值。
视频解码器可以被配置为基于第一系数集合的值和第二系数集合的值来确定解码的变换块;将解码的变换块添加到预测块以确定重构块;对重构块执行一个或多个滤波操作以确定视频数据的解码块;并且输出包括视频数据的解码块的视频数据的解码图片。
图7A和7B图示了二进制位n处的CABAC过程的示例。在图7A的示例400中,在二进制位n处,二进制位2处的范围包括RangeMPS和RangeLPS,RangeMPS和RangeLPS由给定特定上下文状态(σ)的最不可能符号(LPS)的概率(pσ)给出。示例400图示了当二进制位n的值等于最可能符号(MPS)时在二进制位n+1处的范围的更新。在此示例中,低保持不变,但二进制位n+1处的范围值减少为二进制位n处的RangeMPS的值。图7B的示例402图示了当二进制位n的值不等于MPS(即,等于LPS)时在二进制位n+1处的范围的更新。在该示例中,低移动到二进制位n处RangeLPS的下限范围值。此外,二进制位n+1处的范围的值减少为二进制位n处的RangeLPS的值。
在HEVC视频编解码过程的一个示例中,范围用9比特表示,并且低用10比特表示。存在重新归一化过程,以保持足够精确的范围和低值。只要范围小于256,就会发生重新归一化。因而,重新归一化后,范围始终等于或大于256。取决于范围值和低值,二进制算术编解码器(BAC)向比特流输出“0”或“1”,或更新内部变量(称为BO:未分配比特(bits-outstanding))以保留未来输出。图8图示了取决于范围的BAC输出的示例。例如,当范围和低高于某个阈值(例如512)时,会向比特流输出“1”。当范围和低低于某个阈值(例如512)时,会向比特流输出“0”。例如,当范围和低在某些阈值之间时,不会向比特流输出任何内容。相反,BO值递增,并且下一个二进制位被编码。
在H.264/AVC的CABAC上下文模型和HEVC的一些示例中,有128个状态。有64个可能的LPS概率(由状态σ表示),可以从0到63。每个MPS可以为零或一。同样地,128个状态是64个状态概率乘以MPS的2个可能值(0或1)。因而,状态可以用7比特索引。
为了减少导出LPS范围(rangeLPSσ)的计算,可以预先计算所有情况的结果并将其存储为查找表中的近似值。因而,通过使用简单的表查找,无需任何乘法即可获得LPS范围。避免乘法对于某些设备或应用可能很重要,因为此操作可能会导致许多硬件架构中的明显时延。
可以使用4列预先计算的LPS范围表来代替乘法。该范围分为四个段。段索引可以通过问题(range>>6)&3导出。实际上,段索引是通过将比特从实际范围移位和丢弃(drop)而导出的。下表1图示了可能的范围及其相应的索引。
表1-范围索引
范围 | 256-319 | 320-383 | 384-447 | 448-511 |
(range>>6)&3 | 0 | 1 | 2 | 3 |
LPS范围表有64个条目(每个概率状态一个)乘以4(每个范围索引一个)。每个条目是Range LPS,即范围乘以LPS概率的值。该表的一部分的示例如下表2所示。表2描述了概率状态9-12。在针对HEVC的一项建议中,概率状态的范围可能为0-63。
表2-RangeLPS
在每个段(即范围值)中,每个概率状态σ(stateσ)的LPS范围是预定义的。换句话说,概率状态σ的LPS范围被量化为四个值(即,每个范围索引一个值)。在给定点使用的特定LPS范围取决于该范围属于哪个段。表中使用的可能LPS范围的数量是表列数(即可能的LPS范围值的数量)和LPS范围精度之间的折衷。一般来说,较多的列使得LPS范围值的量化误差较小,但需要增加更多存储器来存储表。较少的列会增加量化误差,但也会减少存储表所需的存储器。
如上所述,每个LPS概率状态都有对应的概率。每个状态的概率p导出如下:
pσ=αpσ-1
其中,状态σ是从0到63。常数α代表每个上下文状态之间的概率变化量。在一个示例中,α=0.9493,或更精确地,α=(0.01875/0.5)1/63。在状态σ=0时的概率等于0.5(即p0=/2)。即,在上下文状态0处,LPS和MPS同等可能。每个连续状态处的概率是通过将前一个状态乘以α导出的。同样地,LPS在上下文状态α=1处发生的概率为p0*0.9493(0.5*0.9493=.47465)。同样地,随着状态α的索引增加,LPS发生的概率下降。
CABAC是自适应的,因为更新概率状态以遵循信号统计(即,先前编解码的二进制位的值)。更新过程如下。对于给定的概率状态,更新取决于状态索引和标识为LPS或MPS的编码符号的值。作为更新过程的结果,一个新的概率状态被导出,其由一个可能修改的LPS概率估计,如果需要,一个修改的MPS值组成。
在二进制位值等于MPS的情况下,给定的状态索引可以增加1。这适用于所有状态,除了当MPS发生在状态索引62处,其中LPS概率已经处于其最小值(或等效地,达到最大MPS概率)。在这种情况下,状态索引62保持固定直到看到LPS,或者最后一个二进制位值被编码(状态63用于最后一个二进制位值的特殊情况)。当LPS发生时,状态索引会通过将状态索引减少一定量来改变,如下面的等式所示。此规则一般适用于LPS的每次出现,但有以下例外。假设LPS已在索引σ=0的状态下编码,这对应于等概率情况,状态索引保持固定,但MPS值将被切换(toggle),使得LPS和MPS的值将是可以互换的。在所有其他情况下,无论编码了哪个符号,MPS值都不会改变。LPS概率的转换规则的推导基于给定LPS概率pold与其更新的配对物pnew之间的以下关系:
如果MPS出现,pnew=max(αpold,p62)
如果LPS出现,pnew=(1-α)+αpold
关于CABAC中概率估计过程的实际实施方式,重要的是要注意所有转换规则可以通过最多两个表来实现,每个表具有63个6-比特无符号整数值的条目。在一些示例中,可以用单个表TransIdxLPS确定状态转换,该表针对给定的状态索引σ确定新的更新状态索引TransIdxLPS[σ],以防已经观察到LPS。MPS驱动的转换可以通过将状态索引简单(饱和(saturated))增加固定值1而获得,从而产生更新的状态索引min(σ+1,62)。下面的表3是部分TransIdxLPS表的示例。
表3-TransIdxLPS
可能的状态(σ) | 新状态TransIdxLPS[σ] |
… | … |
9 | 6 |
10 | 8 |
11 | 8 |
12 | 8 |
… | … |
上面关于图7A、7B和8描述的技术仅代表CABAC的一种示例实施方式。应当理解,本公开的技术不仅限于所描述的CABAC的实施方式。例如,在较旧的BAC方法中(例如,在H.264/AVC中使用的BAC方法),表RangeLPS和TransIdxLPS针对低分辨率视频(即,通用中间格式(CIF)和四分之一CIF(QCIF)视频)进行了调整。使用HEVC和未来的编解码器(例如VVC),大量视频内容是高清(HD),并且在某些情况下比HD更高。HD或高于HD分辨率的视频内容往往与用于开发H.264/AVC的10年前的QCIF序列具有不同的统计特性。同样地,来自H.264/AVC的表RangeLPS和TransIdxLPS可能会以过快的方式导致状态之间的自适应。也就是说,概率状态之间的转换,尤其是当LPS发生时,对于更流畅、更高分辨率的HD视频内容来说可能太大了。因此,根据传统技术使用的概率模型对于HD和超HD内容可能不那么准确。此外,由于HD视频内容包括更大范围的像素值,H.264/AVC表不能包括足够的条目来考虑HD内容中可能存在的更极端值。
因此,对于HEVC和未来的编解码标准(诸如VVC),可以修改RangeLPS和TransIdxLPS表以考虑该新内容的特性。具体地,HEVC和未来编解码标准的BAC过程可能会使用允许较慢的自适应过程的表,并且可能会考虑更极端的情况(即偏斜概率(skewedprobability))。因此,作为一个示例,可以修改RangeLPS和TransIdxLPS表以通过包括比在H.264/AVC或HEVC的BAC中使用的更多概率状态和范围来实现这些目标。
图9是可以被配置为根据本公开的技术执行CABAC的示例熵编码单元220的框图。语法元素418被输入到熵编码单元220中。如果语法元素已经是二进制值语法元素(即,只有0和1的值的语法元素),则可以跳过二值化步骤。如果语法元素是非二进制值语法元素(例如,由多个比特代表的语法元素,诸如变换系数级别),则非二进制值语法元素由二进制化器420进行二进制化。二进制化器420执行将非二进制值语法元素映射到二进制决策序列。这些二进制决策通常被称为“二进制位”。例如,对于变换系数级别,级别的值可以分解为连续的二进制位,每个二进制位指示系数级别的绝对值是否大于某个值。例如,二进制位0(有时称为重要性标志)指示变换系数级别的绝对值是否大于0。二进制位1指示变换系数级别的绝对值是否大于1,等等。可以为每个非二进制值语法元素开发一个唯一映射。
由二进制化器420产生的每个二进制位被馈送到熵编码单元220的二进制算术编解码侧。即,对于非二进制值语法元素的预定集合,每个二进制位类型(例如二进制位0)在下一个二进制位类型(例如二进制位1)之前被编解码。编解码可以以常规模式或旁路模式执行。在旁路模式中,旁路编解码引擎426使用固定概率模型执行算术编解码,例如使用Golomb-Rice或指数Golomb编解码。旁路模式通常用于更可预测的语法元素。
常规模式的编解码涉及执行CABAC。常规模式CABAC用于编解码二进制位值,其中给定先前编解码二进制位的值,二进制位的值的概率是可预测的。二进制位是LPS的概率由上下文建模器422确定。上下文建模器422输出二进制位值和上下文模型(例如,概率状态σ)。上下文模型可以是一系列二进制位的初始上下文模型,或者可以基于先前编解码二进制位的编解码值来确定。如上所述,上下文建模器可以基于先前编解码的二进制位是MPS还是LPS来更新状态。
在上下文建模器422确定上下文模型和概率状态σ之后,常规编解码引擎424对二进制位值执行BAC。根据本公开的技术,常规编解码引擎424使用包括超过64个概率状态σ的TransIdxLPS表430来执行BAC。在一个示例中,概率状态的数量是128。TransIdxLPS用于确定当前一个二进制位(二进制位n)是LPS时,哪个概率状态用于下一个二进制位(二进制位n+1)。常规编解码引擎424还可使用RangeLPS表128来确定给定特定概率状态σ的LPS的范围值。然而,根据本公开的技术,不是使用TransIdxLPS表430的所有可能的概率状态σ,而是将概率状态索引σ映射到分组索引以供在RangeLPS表中使用。即,RangeLPS表428中的每个索引可以代表概率状态总数中的两个或多个。概率状态索引σ到分组索引的映射可以是线性的(例如,除以二),也可以是非线性的(例如,对数函数或映射表)。
在本公开的其他示例中,可以通过将参数α设置为大于0.9493来使得连续概率状态之间的差更小。在一个示例中,α=0.9689。在本公开的另一个示例中,LPS发生的最高概率(p0)可以被设置为低于0.5。在一个示例中,p0可以等于0.493。
根据本公开的一种或多种技术,与在二进制算术编解码过程中使用与用于更新概率状态的变量相同的值(例如,窗口尺寸、缩放因子(α)、和概率更新速度)相反,熵编码单元220可以针对不同的上下文模型和/或不同的语法元素使用变量的不同值。例如,熵编码单元220可以针对多个上下文模型中的一个上下文模型确定用于在二进制算术编解码过程中更新概率状态的变量的值,并基于确定的值更新概率状态。
图10是可以被配置为根据本公开的技术执行CABAC的示例熵解码单元302的框图。图10的熵解码单元302以与图9中描述的熵编码单元220相反的方式执行CABAC。来自比特流448的编解码比特被输入到熵解码单元302中。基于编解码比特是使用旁路模式还是常规模式进行熵编解码的,将编解码比特馈送到上下文建模器450或旁路解码引擎452。如果以旁路模式对编解码比特进行编解码,则旁路解码引擎452可以例如使用Golomb-Rice或指数Golomb解码来检索二进制值语法元素或非二进制语法元素的二进制位。
如果编解码比特以常规模式进行编解码,则上下文建模器450可以确定编解码比特的概率模型,并且常规解码引擎454可以对编解码比特进行解码以产生非二进制值语法元素的二进制位(或者如果是二进制值的,则是语法元素本身)。在上下文建模器450确定上下文模型和概率状态σ之后,常规解码引擎454对二进制位值执行BAC。根据本公开的技术,常规解码引擎454使用包括超过64个概率状态σ的TransIdxLPS表458来执行BAC。在一个示例中,概率状态的数量是128,但是可以定义其他数量的概率状态,这与本公开的技术一致。TransIdxLPS表458用于确定当前一个二进制位(二进制位n)是LPS时,哪个概率状态用于下一个二进制位(二进制位n+1)。常规解码引擎454还可使用RangeLPS表456来确定给定特定概率状态σ的LPS的范围值。然而,根据本公开的技术,不是使用TransIdxLPS表458的所有可能的概率状态σ,而是将概率状态索引σ映射到分组索引以供在RangeLPS表456中使用。即,RangeLPS表456中的每个索引可以代表概率状态总数中的两个或多个。概率状态索引σ到分组索引的映射可以是线性的(例如,除以二),也可以是非线性的(例如,对数函数或映射表)。
在本公开的其他示例中,可以通过将参数α设置为大于0.9493来使得连续概率状态之间的差更小。在一个示例中,α=0.9689。在本公开的另一个示例中,LPS发生的最高概率(p0)可以被设置为低于0.5。在一个示例中,p0可以等于0.493。
在由常规解码引擎454解码二进制位之后,反二进制化器460可执行反向映射以将二进制位转换回非二进制值语法元素的值。
图11是示出视频编码器对视频数据的当前块进行编码的示例操作的流程图。当前块可以包括当前CU。尽管针对视频编码器200(图1和图5)进行描述,但是应当理解,其他设备可以被配置为执行与图11类似的操作。
在本示例中,视频编码器200最初预测当前块(550)。例如,视频编码器200可以形成当前块的预测块。然后,视频编码器200可以计算当前块的残差块(552)。为了计算残差块,视频编码器200可计算原始未编解码块与当前块的预测块之间的差。然后,视频编码器200可以变换和量化残差块的系数(554)。接下来,视频编码器200可以扫描残差块的量化的变换系数(556)。在扫描期间,或在扫描之后,视频编码器200可以对变换系数进行熵编码(558)。例如,视频编码器200可以使用CAVLC或CABAC对变换系数进行编码。然后,视频编码器200可输出块的熵编解码数据(560)。
图12是示出视频解码器解码视频数据的当前块的示例操作的流程图。当前块可以包括当前CU。尽管针对视频解码器300(图1和图6)进行描述,但是应当理解,其他设备可以被配置为执行与图12类似的操作。
视频解码器300可接收当前块的熵编解码数据,例如对应于当前块的残差块的系数的熵编解码数据和熵编解码的预测信息(570)。视频解码器300可熵解码熵编解码的数据以确定用于当前块的预测信息并再现残差块的系数(572)。视频解码器300可预测当前块(574),例如,使用由当前块的预测信息指示的帧内或帧间预测模式,来计算当前块的预测块。然后,视频解码器300可以反扫描再现的系数(576),以创建量化的变换系数的块。然后,视频解码器300可以对变换系数进行反量化和反变换,以产生残差块(578)。视频解码器300可通过组合预测块和残差块来最终解码当前块(580)。
图13是示出视频编码器对视频数据的当前块进行编码的示例操作的流程图。当前块可以例如是变换单元或变换块。尽管针对视频编码器200(图1和图5)进行描述,但是应当理解,其他设备可以被配置为执行与图13类似的操作。
在图13的示例中,视频编码器200确定变换系数组的系数的值(602),并且对变换系数组的第一系数集合的语法元素进行上下文编码直到达到常规编解码二进制位的最大数量(604)。上下文编码的语法元素包括指示变换系数的绝对级别是否等于零的一个或多个重要性标志、指示变换系数的绝对级别是偶数还是奇数的一个或多个奇偶性级别标志、以及指示变换系数的绝对级别是否大于2的一个或多个第一标志。为了对变换系数组的语法元素进行上下文编码,视频编码器200可以被配置为执行上下文自适应二进制算术编码以对变换系数组的语法元素进行编码。视频编码器200响应于达到常规编解码二进制位的最大数量而对变换系数组的第二系数集合的附加语法元素进行旁路编码(606)。
图14是示出视频编码器对变换系数组的第二系数集合的附加语法元素进行旁路编码的示例操作的流程图。在这方面,图14代表可以对应于图13的框606的示例过程。在图14的示例中,视频编码器200确定第二系数集合的变换系数的级别值(608)。视频编码器200确定变换系数的级别值是否小于阈值(610)。如果变换系数小于阈值(610),则视频编码器200使用Golomb-Rice编解码对等于变换系数级别的前缀值进行编码(612)。因此,在不用对变换系数的后缀值进行编码的情况下,视频编码器200对小于阈值的变换系数的级别进行编码。
如果变换系数大于阈值(610,否),则视频编码器200使用Golomb-Rice编解码对等于阈值的前缀值进行编码(614)并且使用指数Golomb编解码对后缀值进行编码(616)。例如,视频编码器200可以通过从变换系数的级别值中减去前缀值来确定后缀值。变换系数的级别值可以是绝对级别值或剩余级别值。
图15是示出视频解码器解码视频数据的当前块的示例操作的流程图。当前块可以例如是变换单元或变换块。尽管针对视频解码器300(图1和图6)进行描述,但是应当理解,其他设备可以被配置为执行与图14类似的操作。
在图15的示例中,视频解码器300对变换系数组的第一系数集合的语法元素进行上下文解码直到达到常规编解码二进制位的最大数量(620)。上下文编码的语法元素包括指示变换系数的绝对级别是否等于零的一个或多个重要性标志、指示变换系数的绝对级别是偶数还是奇数的一个或多个奇偶性级别标志、以及指示变换系数的绝对级别是否大于2的一个或多个第一标志。为了对变换系数组的语法元素进行上下文解码,视频解码器可以被配置为执行上下文自适应二进制算术解码以对变换系数组的语法元素进行解码。
视频解码器300响应于达到常规编解码二进制位的最大数量对第二系数集合的附加语法元素进行旁路解码(622)。视频解码器300基于经上下文解码的语法元素确定变换单元的第一系数集合的值(624),且基于附加语法元素确定变换单元的第二系数集合的值(626)。视频解码器300基于第一系数集合的值和第二系数集合的值确定解码的变换块(628)。
图16是示出视频解码器对变换系数组的第二系数集合的附加语法元素进行旁路解码的示例操作的流程图。在这方面,图16代表可以对应于图15的框622的示例过程。在图14的示例中,视频解码器300接收变换系数的前缀值(630)并且使用Golomb-Rice编解码来解码该前缀值(632)。视频解码器300确定解码的前缀值是否小于阈值(634)。如果解码的前缀值小于阈值(634,是),则视频解码器300确定变换系数级别等于解码的前缀值。在这种情况下,视频解码器300在不接收后缀值的情况下确定变换系数的级别值。
如果解码的前缀值大于阈值(634,否),则视频解码器300接收变换系数的后缀值(638)并使用指数Golomb编解码对后缀值进行解码(640)。视频解码器300确定变换系数的级别等于解码的前缀值加上解码的后缀值(642)。
应当认识到,根据示例,本文描述的任何技术的某些动作或事件可以以不同的顺序执行,可以被添加,合并或完全省略(例如,并非所有描述的动作或事件都是技术实践所必需的)。此外,在某些示例中,动作或事件可以例如通过多线程处理、中断处理或多个处理器并发地而不是顺序地执行。
在一个或多个示例中,可以以硬件、软件、固件或其任何组合来实现所描述的功能。如果以软件实施,则功能可以作为一个或多个指令或码存储在计算机可读介质上或通过计算机可读介质传输,并由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质,其对应于诸如数据存储介质的有形介质,或者通信介质,包括例如根据通信协议来促进将计算机程序从一个地方转换到另一个地方的任何介质。以这种方式,计算机可读介质通常可以对应于(1)非暂时性的有形计算机可读存储介质,或者(2)诸如信号或载波的通信介质。数据存储介质可以是可由一台或多台计算机或一个或多个处理器访问以检索指令、代码和/或数据结构以实现本公开中描述的技术的任何可用介质。计算机程序产品可以包括计算机可读介质。
作为示例而非限制,这种计算机可读存储介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁性存储装置、闪存或任何其他可以用来以指令或数据结构的形式存储所需的程序代码,并且可以由计算机访问。而且,任何连接都适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)或无线技术(例如红外、无线电和微波)从网站、服务器或其他远程源传输指令,则介质的定义包括同轴电缆、光纤电缆、双绞线、DSL或诸如红外、无线电和微波之类的无线技术。然而,应当理解的是,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他瞬时介质,而是针对非瞬时的有形存储介质。本文使用的磁盘和光盘包括光碟(CD)、激光光盘、光学盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘则通过激光光学方式再现数据。上述的组合也应包括在计算机可读介质的范围内。
指令可以由一个或多个处理器运行,例如一个或多个DSP、通用微处理器、ASIC、FPGA或其他等效的集成或离散逻辑电路。因此,如本文所使用的术语“处理器”可以指任何前述结构或适合于实现本文描述的技术的任何其他结构。另外,在一些方面,本文描述的功能可以在被配置用于编码和解码的专用硬件和/或软件模块内提供,或结合在组合编解码器中。同样,该技术可以在一个或多个电路或逻辑元件中完全实现。
本公开的技术可以在包括无线手持机、集成电路(IC)或一组集IC(例如,芯片组)的多种设备或装置中实施。在本发明中描述各种组件、模块或单元以强调经配置以执行所揭示技术的设备的功能方面,但不一定需要由不同硬件单元来实现。而是,如上所述,各种单元可以组合在编解码器硬件单元中,或者由包括如上所述的一个或多个处理器的互操作硬件单元的集合结合合适的软件和/或固件来提供。
已经对各种示例进行了描述。这些示例以及其他示例都在下述权利要求的范围内。
Claims (44)
1.一种解码视频数据的方法,所述方法包括:
对变换系数组的第一变换系数集合的语法元素进行上下文解码,直到达到常规编解码二进制位的最大数量,其中,上下文解码的语法元素包括一个或多个重要性标志、一个或多个奇偶级别标志、以及一个或多个第一标志,其中,所述一个或多个重要性标志中的每一个指示变换系数的绝对级别是否等于零,所述一个或多个奇偶级别标志中的每一个指示变换系数的绝对级别是偶数还是奇数,以及所述一个或多个第一标志中的每一个指示变换系数的绝对级别是否大于2;
响应于达到所述常规编解码二进制位的最大数量,对第二系数集合的附加语法元素进行旁路解码,其中,对所述附加语法元素进行旁路解码包括:
接收变换系数的前缀值;
使用Golomb-Rice编解码对所述前缀值进行解码;
响应于所述前缀值的长度等于阈值,接收所述变换系数的后缀值;以及
使用指数Golomb编解码对所述后缀值进行解码;
基于上下文解码的语法元素确定变换单元的第一系数集合的值;以及
基于所述附加语法元素确定所述变换单元的第二系数集合的值,其中基于所述附加语法元素确定所述变换单元的第二系数集合的值包括基于解码的前缀值和解码的后缀值确定所述变换系数的级别值。
2.根据权利要求1所述的方法,其中,确定所述变换系数的级别值包括:
将所述解码的前缀值添加到所述解码的后缀值中。
3.根据权利要求1所述的方法,其中,对所述附加语法元素进行旁路解码还包括:
接收第二系数的第二前缀值;
使用Golomb-Rice编解码对所述第二前缀值进行解码;
响应于所述第二前缀值的长度小于所述阈值,在不接收所述第二系数的后缀值的情况下确定所述第二系数的级别值。
4.根据权利要求1所述的方法,其中,所述阈值对于所有系数是固定值。
5.根据权利要求1所述的方法,其中,对所述附加语法元素进行旁路解码还包括:
为所述变换系数确定Rice参数的值;以及
基于所述Rice参数的值确定所述阈值。
6.根据权利要求1所述的方法,其中,对所述变换系数组的语法元素进行上下文解码包括执行上下文自适应二进制算术解码以解码所述变换系数组的语法元素。
7.根据权利要求1所述的方法,其中,所述变换系数的级别值包括绝对级别值。
8.根据权利要求1所述的方法,其中,所述变换系数的级别值包括剩余级别值。
9.根据权利要求1所述的方法,其中,所述阈值等于5。
10.根据权利要求1所述的方法,其中,所述阈值等于6。
11.根据权利要求1所述的方法,还包括:
基于所述第一系数集合的值和所述第二系数集合的值确定解码的变换块;
将所述解码的变换块添加到预测块以确定重构块;
对所述重构块执行一个或多个滤波操作以确定视频数据的解码块;以及
输出包括视频数据的所述解码块的视频数据的解码图片。
12.一种用于解码视频数据的设备,所述设备包括:
存储器,被配置为存储视频数据;和
一个或多个处理器,在电路中实施并被配置为:
对变换系数组的第一系数集合的语法元素进行上下文解码,直到达到常规编解码二进制位的最大数量,其中,上下文解码的语法元素包括一个或多个重要性标志、一个或多个奇偶级别标志、以及一个或多个第一标志,其中,所述一个或多个重要性标志中的每一个指示变换系数的绝对级别是否等于零,所述一个或多个奇偶级别标志中的每一个指示变换系数的绝对级别是偶数还是奇数,以及所述一个或多个第一标志中的每一个指示变换系数的绝对级别是否大于2;
响应于达到所述常规编解码二进制位的最大数量,对第二系数集合的附加语法元素进行旁路解码,其中,为了对所述附加语法元素进行旁路解码,所述一个或多个处理器被配置为:
接收变换系数的前缀值;
使用Golomb-Rice编解码对所述前缀值进行解码;
响应于所述前缀值的长度等于阈值,接收所述变换系数的后缀值;以及
使用指数Golomb编解码对所述后缀值进行解码;
基于上下文解码的语法元素确定变换单元的第一系数集合的值;以及
基于所述附加语法元素确定所述变换单元的第二系数集合的值,其中为了基于所述附加语法元素确定所述变换单元的第二系数集合的值,所述一个或多个处理器被配置为基于解码的前缀值和解码的后缀值确定所述变换系数的级别值。
13.根据权利要求12所述的设备,其中,为了确定所述变换系数的级别值,所述一个或多个处理器被配置为:
将所述解码的前缀值添加到所述解码的后缀值中。
14.根据权利要求12所述的设备,其中,为了对所述附加语法元素进行旁路解码,所述一个或多个处理器被配置为:
接收第二系数的第二前缀值;
使用Golomb-Rice编解码对所述第二前缀值进行解码;
响应于所述第二前缀值的长度小于所述阈值,在不接收所述第二系数的后缀值的情况下确定所述第二系数的级别值。
15.根据权利要求12所述的设备,其中,所述阈值对于所有系数是固定值。
16.根据权利要求12所述的设备,其中,为了对所述附加语法元素进行旁路解码,所述一个或多个处理器被配置为:
为所述变换系数确定Rice参数的值;以及
基于所述Rice参数的值确定所述阈值。
17.根据权利要求12所述的设备,其中,为了对所述变换系数组的语法元素进行上下文解码,所述一个或多个处理器被配置为执行上下文自适应二进制算术解码以解码所述变换系数组的语法元素。
18.根据权利要求12所述的设备,其中,所述变换系数的级别值包括绝对级别值。
19.根据权利要求12所述的设备,其中,所述变换系数的级别值包括剩余级别值。
20.根据权利要求12所述的设备,其中,所述阈值等于5。
21.根据权利要求12所述的设备,其中,所述阈值等于6。
22.根据权利要求12所述的设备,其中,所述一个或多个处理器被配置为:
基于所述第一系数集合的值和所述第二系数集合的值确定解码的变换块;
将所述解码的变换块添加到预测块以确定重构块;
对所述重构块执行一个或多个滤波操作以确定视频数据的解码块;以及
输出包括视频数据的所述解码块的视频数据的解码图片。
23.一种编码视频数据的方法,所述方法包括:
确定变换系数组的系数的值;
对所述变换系数组的第一变换系数集合的语法元素进行上下文编码,直到达到常规编解码二进制位的最大数量,其中,上下文编码的语法元素包括一个或多个重要性标志、一个或多个奇偶级别标志、以及一个或多个第一标志,其中,所述一个或多个重要性标志中的每一个指示变换系数的绝对级别是否等于零,所述一个或多个奇偶级别标志中的每一个指示变换系数的绝对级别是偶数还是奇数,以及所述一个或多个第一标志中的每一个指示变换系数的绝对级别是否大于2;
响应于达到所述常规编解码二进制位的最大数量,对所述变换系数组的第二系数集合的附加语法元素进行旁路编码,其中,对所述附加语法元素进行旁路编码包括:
确定所述第二系数集合的变换系数的级别值;
响应于所述级别值大于阈值,使用Golomb-Rice编解码对所述变换系数的前缀值进行编码;以及
响应于所述级别值大于所述阈值,使用指数Golomb编解码对后缀值进行编码。
24.根据权利要求23所述的方法,还包括:
通过从所述变换系数的级别值中减去所述前缀值来确定所述后缀值。
25.根据权利要求23所述的方法,其中,对所述附加语法元素进行旁路编码还包括:
确定所述第二系数集合的第二系数的第二级别值;
响应于所述第二级别值小于所述阈值,在不编码所述第二系数的后缀值的情况下,使用Golomb-Rice编解码对所述第二系数的前缀值进行编码。
26.根据权利要求23所述的方法,其中,所述阈值对于所有系数是固定值。
27.根据权利要求23所述的方法,其中,对所述附加语法元素进行旁路编码还包括:
为所述变换系数确定Rice参数的值;以及
基于所述Rice参数的值确定所述阈值。
28.根据权利要求23所述的方法,其中,对所述变换系数组的语法元素进行上下文编码包括执行上下文自适应二进制算术编码以编码所述变换系数组的语法元素。
29.根据权利要求23所述的方法,其中,所述变换系数的级别值包括绝对级别值。
30.根据权利要求23所述的方法,其中,所述变换系数的级别值包括剩余级别值。
31.根据权利要求23所述的方法,其中,所述阈值等于5。
32.根据权利要求23所述的方法,其中,所述阈值等于6。
33.一种用于编码视频数据的设备,所述设备包括:
存储器,被配置为存储视频数据;和
一个或多个处理器,在电路中实施并被配置为:
确定变换系数组的系数的值;
对所述变换系数组的第一变换系数集合的语法元素进行上下文编码,直到达到常规编解码二进制位的最大数量,其中,上下文编码的语法元素包括一个或多个重要性标志、一个或多个奇偶级别标志、以及一个或多个第一标志,其中,所述一个或多个重要性标志中的每一个指示变换系数的绝对级别是否等于零,所述一个或多个奇偶级别标志中的每一个指示变换系数的绝对级别是偶数还是奇数,以及所述一个或多个第一标志中的每一个指示变换系数的绝对级别是否大于2;
响应于达到所述常规编解码二进制位的最大数量,对所述变换系数组的第二系数集合的附加语法元素进行旁路编码,其中,对所述附加语法元素进行旁路编码包括:
确定所述第二系数集合的变换系数的级别值;
响应于所述级别值大于阈值,使用Golomb-Rice编解码对所述变换系数的前缀值进行编码;以及
响应于所述级别值大于所述阈值,使用指数Golomb编解码对后缀值进行编码。
34.根据权利要求33所述的设备,其中,所述一个或多个处理器还被配置为:
通过从所述变换系数的级别值中减去所述前缀值来确定所述后缀值。
35.根据权利要求33所述的设备,其中,为了对所述附加语法元素进行旁路编码,所述一个或多个处理器还被配置为:
确定所述第二系数集合的第二系数的第二级别值;
响应于所述第二级别值小于所述阈值,在不编码所述第二系数的后缀值的情况下,使用Golomb-Rice编解码对所述第二系数的前缀值进行编码。
36.根据权利要求33所述的设备,其中,所述阈值对于所有系数是固定值。
37.根据权利要求33所述的设备,其中,为了对所述附加语法元素进行旁路编码,所述一个或多个处理器还被配置为:
为所述变换系数确定Rice参数的值;以及
基于所述Rice参数的值确定所述阈值。
38.根据权利要求33所述的设备,其中,为了对所述变换系数组的语法元素进行上下文编码,所述一个或多个处理器被配置为执行上下文自适应二进制算术编码以编码所述变换系数组的语法元素。
39.根据权利要求33所述的设备,其中,所述变换系数的级别值包括绝对级别值。
40.根据权利要求33所述的设备,其中,所述变换系数的级别值包括剩余级别值。
41.根据权利要求33所述的设备,其中,所述阈值等于5。
42.根据权利要求23所述的设备,其中,所述阈值等于6。
43.一种存储指令的计算机可读存储介质,所述指令由一个或多个处理器运行时使所述一个或多个处理器:
对变换系数组的第一变换系数集合的语法元素进行上下文解码,直到达到常规编解码二进制位的最大数量,其中,上下文解码的语法元素包括一个或多个重要性标志、一个或多个奇偶级别标志、以及一个或多个第一标志,其中所述一个或多个重要性标志中的每一个指示变换系数的绝对级别是否等于零,所述一个或多个奇偶级别标志中的每一个指示变换系数的绝对级别是偶数还是奇数,以及所述一个或多个第一标志中的每一个指示变换系数的绝对级别是否大于2;
响应于达到所述常规编解码二进制位的最大数量,对第二系数集合的附加语法元素进行旁路解码,其中,为了对所述附加语法元素进行旁路解码,所述指令使所述一个或多个处理器:
接收变换系数的前缀值;
使用Golomb-Rice编解码对所述前缀值进行解码;
响应于所述前缀值的长度等于阈值,接收所述变换系数的后缀值;以及
使用指数Golomb编解码对所述后缀值进行解码;
基于上下文解码的语法元素确定变换单元的第一系数集合的值;以及
基于所述附加语法元素确定所述变换单元的第二系数集合的值,其中基于所述附加语法元素确定所述变换单元的第二系数集合的值包括基于解码的前缀值和解码的后缀值确定所述变换系数的级别值。
44.一种用于解码视频数据的装置,所述装置包括:
用于对变换系数组的第一变换系数集合的语法元素进行上下文解码,直到达到常规编解码二进制位的最大数量的部件,其中,上下文解码的语法元素包括一个或多个重要性标志、一个或多个奇偶级别标志、以及一个或多个第一标志,其中,所述一个或多个重要性标志中的每一个指示变换系数的绝对级别是否等于零,所述一个或多个奇偶级别标志中的每一个指示变换系数的绝对级别是偶数还是奇数,以及所述一个或多个第一标志中的每一个指示变换系数的绝对级别是否大于2;
用于响应于达到常规编解码二进制位的最大数量对第二系数集合的附加语法元素进行旁路解码的部件,其中,用于对所述附加语法元素进行旁路解码的部件包括:
用于接收变换系数的前缀值的部件;
用于使用Golomb-Rice编解码对所述前缀值进行解码的部件;
用于响应于所述前缀值的长度等于阈值,接收所述变换系数的后缀值的部件;以及
用于使用指数Golomb编解码对所述后缀值进行解码的部件;
用于基于上下文解码的语法元素确定变换单元的第一系数集合的值的部件;以及
用于基于所述附加语法元素确定所述变换单元的第二系数集合的值的部件,其中基于所述附加语法元素确定所述变换单元的第二系数集合的值包括基于解码的前缀值和解码的后缀值确定所述变换系数的级别值。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962787707P | 2019-01-02 | 2019-01-02 | |
US62/787,707 | 2019-01-02 | ||
US16/732,008 | 2019-12-31 | ||
US16/732,008 US11477486B2 (en) | 2019-01-02 | 2019-12-31 | Escape coding for coefficient levels |
PCT/US2020/012054 WO2020142608A1 (en) | 2019-01-02 | 2020-01-02 | Escape coding for coefficient levels |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113228654A true CN113228654A (zh) | 2021-08-06 |
Family
ID=71123535
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080007433.3A Pending CN113228654A (zh) | 2019-01-02 | 2020-01-02 | 系数级别转义编解码 |
Country Status (9)
Country | Link |
---|---|
US (2) | US11477486B2 (zh) |
EP (1) | EP3906679A1 (zh) |
JP (1) | JP7509784B2 (zh) |
KR (1) | KR20210107018A (zh) |
CN (1) | CN113228654A (zh) |
BR (1) | BR112021011060A2 (zh) |
SG (1) | SG11202105292RA (zh) |
TW (1) | TW202032993A (zh) |
WO (1) | WO2020142608A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11477486B2 (en) | 2019-01-02 | 2022-10-18 | Qualcomm Incorporated | Escape coding for coefficient levels |
CN113316934B (zh) * | 2019-01-25 | 2024-03-08 | 寰发股份有限公司 | 带有变换块级别约束的变换系数编码的方法和设备 |
US11269645B2 (en) * | 2020-03-11 | 2022-03-08 | Western Digital Technologies, Inc. | Storage system and method for implementing an encoder, decoder, and/or buffer using a field programmable gate array |
US11695965B1 (en) | 2022-10-13 | 2023-07-04 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Video coding using a coded picture buffer |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070201554A1 (en) * | 2006-02-24 | 2007-08-30 | Samsung Electronics Co., Ltd. | Video transcoding method and apparatus |
US20160050427A1 (en) * | 2013-04-08 | 2016-02-18 | Sony Corporation | Encoding and decoding of significant coefficients in dependence upon a parameter of the significant coefficients |
CN105474641A (zh) * | 2013-07-12 | 2016-04-06 | 高通股份有限公司 | 视频译码过程中用于系数层级译码的莱斯(rice)参数初始化 |
CN106105040A (zh) * | 2014-03-14 | 2016-11-09 | 高通股份有限公司 | 视频译码过程中的系数层级译码 |
US20170105026A1 (en) * | 2012-04-15 | 2017-04-13 | Samsung Electronics Co., Ltd. | Parameter update method for entropy coding and decoding of conversion coefficient level, and entropy coding device and entropy decoding device of conversion coefficient level using same |
WO2018065154A1 (en) * | 2016-10-05 | 2018-04-12 | Thomson Licensing | Method and device for context-adaptive binary arithmetic coding a sequence of binary symbols representing a syntax element related to picture data |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8213509B2 (en) * | 2006-10-06 | 2012-07-03 | Calos Fund Limited Liability Company | Video coding on parallel processing systems |
JP2008252230A (ja) * | 2007-03-29 | 2008-10-16 | Toshiba Corp | 画像復号装置及び復号方法 |
CN108235015A (zh) * | 2011-11-08 | 2018-06-29 | 三星电子株式会社 | 用于对视频进行解码的设备 |
US10616581B2 (en) * | 2012-01-19 | 2020-04-07 | Huawei Technologies Co., Ltd. | Modified coding for a transform skipped block for CABAC in HEVC |
CN106851277B (zh) | 2012-04-13 | 2021-05-07 | 佳能株式会社 | 视频数据的变换单位的子集的编解码的方法、设备和*** |
GB2521828A (en) * | 2013-12-23 | 2015-07-08 | Sony Corp | Data encoding and decoding |
WO2015194187A1 (en) * | 2014-06-20 | 2015-12-23 | Sharp Kabushiki Kaisha | Harmonized palette coding |
JP6476900B2 (ja) * | 2015-01-21 | 2019-03-06 | 富士通株式会社 | 動画像符号化装置、動画像符号化方法及び動画像符号化用コンピュータプログラム |
US10616604B2 (en) | 2015-09-01 | 2020-04-07 | Qualcomm Incorporated | Coefficient level coding in video coding |
US11477486B2 (en) | 2019-01-02 | 2022-10-18 | Qualcomm Incorporated | Escape coding for coefficient levels |
US10798397B2 (en) * | 2019-01-02 | 2020-10-06 | Tencent America LLC | Method and apparatus for video coding |
EP4085636A4 (en) * | 2019-12-30 | 2024-01-24 | Beijing Dajia Internet Information Technology Co., Ltd. | RESIDUAL AND COEFFICIENT ENCODING FOR VIDEO CODING |
-
2019
- 2019-12-31 US US16/732,008 patent/US11477486B2/en active Active
-
2020
- 2020-01-02 EP EP20702707.9A patent/EP3906679A1/en active Pending
- 2020-01-02 JP JP2021538268A patent/JP7509784B2/ja active Active
- 2020-01-02 CN CN202080007433.3A patent/CN113228654A/zh active Pending
- 2020-01-02 BR BR112021011060-7A patent/BR112021011060A2/pt unknown
- 2020-01-02 SG SG11202105292RA patent/SG11202105292RA/en unknown
- 2020-01-02 TW TW109100111A patent/TW202032993A/zh unknown
- 2020-01-02 WO PCT/US2020/012054 patent/WO2020142608A1/en unknown
- 2020-01-02 KR KR1020217019962A patent/KR20210107018A/ko active Search and Examination
-
2022
- 2022-09-08 US US17/930,533 patent/US11785259B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070201554A1 (en) * | 2006-02-24 | 2007-08-30 | Samsung Electronics Co., Ltd. | Video transcoding method and apparatus |
US20170105026A1 (en) * | 2012-04-15 | 2017-04-13 | Samsung Electronics Co., Ltd. | Parameter update method for entropy coding and decoding of conversion coefficient level, and entropy coding device and entropy decoding device of conversion coefficient level using same |
US20160050427A1 (en) * | 2013-04-08 | 2016-02-18 | Sony Corporation | Encoding and decoding of significant coefficients in dependence upon a parameter of the significant coefficients |
CN105474641A (zh) * | 2013-07-12 | 2016-04-06 | 高通股份有限公司 | 视频译码过程中用于系数层级译码的莱斯(rice)参数初始化 |
CN106105040A (zh) * | 2014-03-14 | 2016-11-09 | 高通股份有限公司 | 视频译码过程中的系数层级译码 |
WO2018065154A1 (en) * | 2016-10-05 | 2018-04-12 | Thomson Licensing | Method and device for context-adaptive binary arithmetic coding a sequence of binary symbols representing a syntax element related to picture data |
Non-Patent Citations (1)
Title |
---|
HEIKO SCHWARZ: "CE7: Transform coefficient coding with reduced number of regular-coded bins (tests 7.1.3a, 7.1.3b)", JOINT VIDEO EXPERTS TEAM (JVET) OF ITU-T SG 16 WP 3 AND ISO/IEC JTC 1/SC 29/WG 11 12TH MEETING: MACAO, CN, 3–12 OCT. 2018, JVET-L0274-V3, 12 October 2018 (2018-10-12) * |
Also Published As
Publication number | Publication date |
---|---|
US20220417563A1 (en) | 2022-12-29 |
JP7509784B2 (ja) | 2024-07-02 |
KR20210107018A (ko) | 2021-08-31 |
TW202032993A (zh) | 2020-09-01 |
SG11202105292RA (en) | 2021-07-29 |
BR112021011060A2 (pt) | 2021-08-31 |
US11785259B2 (en) | 2023-10-10 |
US11477486B2 (en) | 2022-10-18 |
WO2020142608A1 (en) | 2020-07-09 |
US20200213623A1 (en) | 2020-07-02 |
EP3906679A1 (en) | 2021-11-10 |
JP2022516132A (ja) | 2022-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112640457B (zh) | 使用阈值和莱斯参数的用于系数编译码的常规编译码二进制数缩减 | |
CN113170138B (zh) | 使用阈值和莱斯参数进行系数解码的常规编译码二进制位缩减 | |
US11202100B2 (en) | Coefficient coding for transform skip mode | |
CN112534815B (zh) | 用于对视频数据进行编解码的方法和设备 | |
US11785259B2 (en) | Escape coding for coefficient levels | |
CN114402603A (zh) | 视频编解码中无损/有损编解码模式的rice参数推导 | |
US11924471B2 (en) | Context-based transform index signaling in video coding |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40058472 Country of ref document: HK |