CN112640457B - 使用阈值和莱斯参数的用于系数编译码的常规编译码二进制数缩减 - Google Patents
使用阈值和莱斯参数的用于系数编译码的常规编译码二进制数缩减 Download PDFInfo
- Publication number
- CN112640457B CN112640457B CN201980056730.4A CN201980056730A CN112640457B CN 112640457 B CN112640457 B CN 112640457B CN 201980056730 A CN201980056730 A CN 201980056730A CN 112640457 B CN112640457 B CN 112640457B
- Authority
- CN
- China
- Prior art keywords
- coefficients
- coefficient
- syntax elements
- encoding
- values
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
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/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive 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/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- 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/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive 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/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)
Abstract
一种视频解码器能够被配置为确定用于第一解码通路的常规编译码二进制数的阈值数量;对于第一系数集,对系数组的上下文语法元素进行上下文解码,直到达到常规编译码二进制数的阈值数量;以及响应于达到常规编译码二进制数的阈值数量,对于第二系数集,对附加语法元素进行旁路解码,其中,对附加语法元素进行旁路解码包括:对于第二系数集的系数,基于该系数的邻近系数的绝对值的和推导用于莱斯参数的值;基于上下文解码的语法元素确定用于变换单元的第一系数集的值;以及基于附加语法元素确定用于变换单元的第二系数集的值。
Description
相关申请的交叉引用
本申请要求以下专利申请的优先权:
2019年9月4日提交的美国专利申请第16/560,907号,该专利申请要求以下权益:
2018年9月5日提交的美国临时专利申请62/727,472;
2018年9月14日提交的美国临时专利申请62/731,667;
2019年1月3日提交的美国临时专利申请62/788,092;
2019年3月25日提交的美国临时专利申请62/823,537;
2018年12月6日提交的美国临时专利申请62/776,379;以及
2019年1月2日提交的美国临时专利申请62/787,681;
每个申请的全部内容通过引用并入本文。
技术领域
本公开涉及视频编码和视频解码。
背景技术
数字视频功能能够集成到广泛的设备中,包括数字电视、数字直播系统、无线广播系统、个人数字助理(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)条带中的视频块,可以使用相对于同一图片中邻近块中的参考样点的空域预测,或者相对于其他参考图片中的参考样点的时域预测。图片可以被称为帧,并且参考图片可以被称为参考帧。
发明内容
视频编译码(例如视频编码和/或视频解码)通常涉及根据同一图片中已经编译码的视频数据块来预测视频数据块(例如帧内预测)或不同图片中已经编译码的视频数据块来预测视频数据块(例如帧间预测)。在某些情况下,视频编码器还通过比较预测块和原始块来计算残差数据。因此,残差数据表示视频数据的预测块和原始块之间的差异。为了减少信令通知残差数据所需的比特数,视频编码器将残差数据变换为变换系数,量化的变换系数,并且在编码比特流中信令通知变换和量化的系数。通过变换和量化过程实现的压缩可能是有损的,这意味着变换和量化过程可能将失真引入解码的视频数据中。本公开描述了与变换系数编译码相关的技术。
在一个示例中,一种解码视频数据的方法包括确定用于第一解码通路的常规编译码二进制数的阈值数量;对于第一系数集,对系数组的语法元素进行上下文解码,直到达到常规编译码二进制数的阈值数量,其中,上下文解码的语法元素包括一个或多个显著性标志、一个或多个奇偶性级别标志以及一个或多个第一标志,其中,一个或多个显著性标志中的每一个指示系数的绝对级别是否等于零,一个或多个奇偶性级别标志中的每一个指示系数是否具有是偶数或奇数的绝对级别,以及一个或多个第一标志中的每一个指示系数是否具有大于2的绝对级别;响应于达到常规编译码二进制数的阈值数量,对于第二系数集,对附加语法元素进行旁路解码,其中,对附加语法元素进行旁路解码包括:对于第二系数集的系数,基于该系数的邻近系数的绝对值的和推导用于莱斯参数的值;基于上下文解码的语法元素确定用于变换单元的第一系数集的值;以及基于附加语法元素确定用于变换单元的第二系数集的值。
在另一示例中,一种用于解码视频数据的设备包括被配置为存储视频数据的存储器,以及在电路中实现的一个或多个处理器,该一个或多个处理器被配置为:确定用于第一解码通路的常规编译码二进制数的阈值数量;对于第一系数集,对系数组的语法元素进行上下文解码,直到达到常规编译码二进制数的阈值数量,其中,上下文解码的语法元素包括一个或多个显著性标志、一个或多个奇偶性级别标志以及一个或多个第一标志,其中,一个或多个显著性标志中的每一个指示系数的绝对级别是否等于零,一个或多个奇偶性级别标志中的每一个指示系数是否具有是偶数或奇数的绝对级别,以及一个或多个第一标志中的每一个指示系数是否具有大于2的绝对级别;响应于达到常规编译码二进制数的阈值数量,对于第二系数集,对附加语法元素进行旁路解码,其中,为了对附加语法元素进行旁路解码,一个或多个处理器被配置为:对于第二系数集的系数,基于该系数的邻近系数的绝对值的和推导用于莱斯参数的值;基于上下文解码的语法元素确定用于变换单元的第一系数集的值;以及基于附加语法元素确定用于变换单元的第二系数集的值。
在另一示例中,一种计算机可读存储介质,其存储指令,当被一个或多个处理器执行时,该指令促使一个或多个处理器:确定用于第一解码通路的常规编译码二进制数的阈值数量;对于第一系数集,对系数组的语法元素进行上下文解码,直到达到常规编译码二进制数的阈值数量,其中,上下文解码的语法元素包括一个或多个显著性标志、一个或多个奇偶性级别标志以及一个或多个第一标志,其中,一个或多个显著性标志中的每一个指示系数的绝对级别是否等于零,一个或多个奇偶性级别标志中的每一个指示系数是否具有是偶数或奇数的绝对级别,以及一个或多个第一标志中的每一个指示系数是否具有大于2的绝对级别;响应于达到常规编译码二进制数的阈值数量,对于第二系数集,对附加语法元素进行旁路解码,其中,对附加语法元素进行旁路解码包括:对于第二系数集的系数,基于该系数的邻近系数的绝对值的和推导用于莱斯参数的值;基于上下文解码的语法元素确定用于变换单元的第一系数集的值;以及基于附加语法元素确定用于变换单元的第二系数集的值。
在另一示例中,一种装置包括:用于确定用于第一解码通路的常规编译码二进制数的阈值数量的部件;对于第一系数集,对系数组的语法元素进行上下文解码,直到达到常规编译码二进制数的阈值数量的部件,其中,上下文解码的语法元素包括一个或多个显著性标志、一个或多个奇偶性级别标志以及一个或多个第一标志,其中,一个或多个显著性标志中的每一个指示系数的绝对级别是否等于零,一个或多个奇偶性级别标志中的每一个指示系数是否具有是偶数或奇数的绝对级别,以及一个或多个第一标志中的每一个指示系数是否具有大于2的绝对级别;响应于达到常规编译码二进制数的阈值数量,对于第二系数集,对附加语法元素进行旁路解码的部件,其中,对附加语法元素进行旁路解码包括:对于第二系数集的系数,基于该系数的邻近系数的绝对值的和推导用于莱斯参数的值;用于基于上下文解码的语法元素确定用于变换单元的第一系数集的值的部件;以及用于基于附加语法元素确定用于变换单元的第二系数集的值的部件。
在另一示例中,一种编码视频数据的方法包括:确定用于第一解码通路的常规编译码二进制数的阈值数量;以及对于第一系数集,对系数组的语法元素进行上下文编码,直到达到常规编译码二进制数的阈值数量,其中,上下文编码的语法元素包括一个或多个显著性标志、一个或多个奇偶性级别标志以及一个或多个第一标志,其中,一个或多个显著性标志中的每一个指示系数的绝对级别是否等于零,一个或多个奇偶性级别标志中的每一个指示系数是否具有是偶数或奇数的绝对级别,以及一个或多个第一标志中的每一个指示系数是否具有大于2的绝对级别;响应于达到常规编译码二进制数的阈值数量,对于第二系数集,对附加语法元素进行旁路编码,其中,对附加语法元素进行旁路编码包括,对于第二系数集的系数,基于该系数的邻近系数的绝对值的和推导用于莱斯参数的值。
在另一示例中,一种用于编码视频数据的设备包括被配置为存储视频数据的存储器;以及在电路中实现的一个或多个处理器,并且该一个或多个处理器被配置为:用于确定用于第一解码通路的常规编译码二进制数的阈值数量;对于第一系数集,对系数组的语法元素进行上下文编码,直到达到常规编译码二进制数的阈值数量,其中,上下文编码的语法元素包括一个或多个显著性标志、一个或多个奇偶性级别标志以及一个或多个第一标志,其中,一个或多个显著性标志中的每一个指示系数的绝对级别是否等于零,一个或多个奇偶性级别标志中的每一个指示系数是否具有是偶数或奇数的绝对级别,以及一个或多个第一标志中的每一个指示系数是否具有大于2的绝对级别;以及响应于达到常规编译码二进制数的阈值数量,对于第二系数集,对附加语法元素进行旁路编码,其中,对附加语法元素进行旁路编码包括,对于第二系数集的系数,基于该系数的邻近系数的绝对值的和推导用于莱斯参数的值。
在另一示例中,一种计算机可读存储介质,其存储指令,当被一个或多个处理器执行时,该指令使一个或多个处理器:确定用于第一解码通路的常规编译码二进制数的阈值数量;对于第一系数集,对系数组的语法元素进行上下文编码,直到达到常规编译码二进制数的阈值数量,其中,上下文编码的语法元素包括一个或多个显著性标志、一个或多个奇偶性级别标志以及一个或多个第一标志,其中,一个或多个显著性标志中的每一个指示系数的绝对级别是否等于零,一个或多个奇偶性级别标志中的每一个指示系数是否具有是偶数或奇数的绝对级别,以及一个或多个第一标志中的每一个指示系数是否具有大于2的绝对级别;以及响应于达到常规编译码二进制数的阈值数量,对于第二系数集,对附加语法元素进行旁路编码,其中,对附加语法元素进行旁路编码包括,对于第二系数集的系数,基于该系数的邻近系数的绝对值的和推导用于莱斯参数的值。
在另一示例中,一种装置包括:用于确定用于第一解码通路的常规编译码二进制数的阈值数量的部件;对于第一系数集,对系数组的语法元素进行上下文编码直到达到常规编译码二进制数的阈值数量的部件,其中,上下文编码的语法元素包括一个或多个显著性标志、一个或多个奇偶性级别标志以及一个或多个第一标志,其中,一个或多个显著性标志中的每一个指示系数的绝对级别是否等于零,一个或多个奇偶性级别标志中的每一个指示系数是否具有是偶数或奇数的绝对级别,以及一个或多个第一标志中的每一个指示系数是否具有大于2的绝对级别;以及响应于达到常规编译码二进制数的阈值数量,对于第二系数集,对附加语法元素进行旁路编码的部件,其中,对附加语法元素进行旁路编码包括,对于第二系数集的系数,基于该系数的邻近系数的绝对值的和推导用于莱斯参数的值。
在附图和以下描述中阐述了一个或多个示例的细节。根据说明书、附图和权利要求,其他特征、目的和优点将是显而易见的。
附图说明
图1是图示可以执行本发明的技术的示例视频编码和解码系统的框图。
图2A和2B是图示示例四叉树二叉树(QTBT)结构以及对应编译码树单元(CTU)的概念图。
图3示出了语法元素的示例扫描顺序。
图4示出了用于选择概率模型的示例模板的图示。
图5A-图5C示出了语法元素的示例扫描顺序。
图6示出了如何使用莱斯参数推导用于在旁路编译码的格伦布-莱斯(Golomb-Rice)编译码和指数-格伦布(Exponential-Golomb)编译码之间切换的阈值的示例。
图7是图示可以执行本公开的技术的示例视频编码器的框图。
图8是图示可以执行本公开的技术的示例视频解码器的框图。
图9A和图9B是图示二进制算术编译码中的范围更新过程的概念图。
图10是图示二进制算术编译码中的输出过程的概念图。
图11是图示视频编码器中的上下文自适应二进制算术编译码(CABAC)编译码器的框图。
图12是图示视频解码器中的CABAC编译码器的框图。
图13是图示视频编码器的示例操作的流程图。
图14是图示视频解码器的示例操作的流程图。
图15是图示视频编码器的示例操作的流程图。
图16是图示视频解码器的示例操作的流程图。
具体实施方式
视频编译码(例如视频编码和/或视频解码)通常涉及根据同一图片中已经编译码的视频数据块来预测视频数据块(例如帧内预测)或不同图片中已经编译码的视频数据块来预测视频数据块(例如帧间预测)。在某些情况下,视频编码器还通过比较预测块和原始块来计算残差数据。因此,残差数据表示视频数据的预测块和原始块之间的差异。为了减少信令通知残差数据所需的比特数,视频编码器对残差数据进行转换和量化,并在编码的比特流中信令通知转换和量化的残差数据。通过变换和量化过程实现的压缩可能是有损的,这意味着变换和量化过程可能将失真引入解码的视频数据中。
视频解码器解码残差数据并将其添加到预测块,以产生比单独的预测块更紧密地匹配原始视频块的重构视频块。由于残差数据的变换和量化引入的损失,重构块可能具有失真或伪影。伪影或失真一种常见的类型被称为块效应,其中用于编译码视频数据的块的边界是可见的。
为了进一步提高解码的视频的质量,视频解码器能够对重构视频块执行一个或多个滤波操作。这些滤波操作的示例包括去块(deblock)滤波、样点自适应偏移(SAO)滤波和自适应环路滤波(ALF)。用于这些滤波操作的参数可以由视频编码器确定并在编码的视频比特流中显式地信令通知,或者可以由视频解码器隐式地确定,而无需在编码视频比特流中显式地信令通知。
如上所介绍的,视频编码器对残差数据进行变换以产生变换系数。那些变换系数可以附加地被量化。在本公开中,术语变换系数或系数可以指量化的变换系数或未量化的变换系数。本公开描述了用于将变换系数(例如量化的变换系数)的值从视频编码器信令通知到视频解码器的技术。更具体地,本发明描述了与熵解码过程相关的技术,该熵解码过程将比特的二进制表示转换为一系列非二进制值的量化的变换系数。在本公开中还描述了对应的熵编码过程,其通常是熵解码的逆过程。
本公开描述了与变换编译码相关的技术。变换系数编译码的各方面在JVET-K0072,H.Schwarz,T.Nguyen,D.Marpe,T.Wiegand,“Non-CE7:Alternative entropycoding for dependent quantization”,JVET文件JVET-K0072,亚卢布尔雅那,斯洛文尼,2018年7月中做了描述。当与JVET-K0072的技术相比时,本文描述的技术可以提高编码和解码量化的系数的效率。
本公开描述了用于在视频编译码过程中对与残差数据相关联的系数进行编译码的技术。在一个示例中,本公开描述了用于确定哪些语法元素被上下文编译码以及哪些语法元素被旁路编译码的技术。在另一示例中,本公开描述了用于确定用来定义码(例如格伦布-莱斯码或指数格伦布码)的莱斯参数的技术,该码用于对系数块的系数级别的剩余绝对值进行编译码,其中上下文自适应二进制算术编译码(CABAC)用于对显著性系数(significant coefficient)的其他指示(比如系数级别大于1和系数级别大于2)进行编译码。在有损编译码的情况下,系数级别可以是变换系数的级别,或者在无损编译码或在变换跳过模式下的有损编译码的情况下,系数级别可以是不应用变换(即残差像素值)的系数的级别。
莱斯参数是一个可调值,用于从格伦布码族(例如格伦布-莱斯码或指数-格伦布码)中选择码字集。由莱斯参数定义的码可用于对变换单元(transform unit,TU)或系数组(coefficient group,CG)(即系数块)中的至少一个系数的系数级别的剩余绝对值进行编译码。每一个CG可以是视频数据的4×4变换块或变换块的4×4子块。在有损编译码的情况下,CG可以包括变换系数,或者在无损编译码或在变换跳过模式下的有损编译码的情况下,CG可以包括不应用变换的系数。
本公开的技术可以应用于现有的视频编解码器中的任何一种,比如高效视频编译码(HEVC)、或可以提议为用于新的视频编译码标准(诸如当前正在开发的通用视频编译码(VVC))或用于其他未来的视频编译码标准的有前途的编译码工具。
图1是图示可以执行本公开的技术的示例视频编码和解码系统100的框图。本公开的技术通常指向编译码(编码和/或解码)视频数据。通常,视频数据包括用于处理视频的任何数据。从而,视频数据可以包括原始的、未编码的视频、编码的视频、解码的(例如重构的)视频以及视频元数据(诸如,信令通知的数据)。
如图1所示,在此示例中,系统100包括提供将由目标设备116进行解码和显示的编码视频数据的源设备102。特别地,源设备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的编译码视频数据。本公开将“编译码”设备表示为执行数据编译码(编码和/或解码)的设备。从而,视频编码器200和视频解码器300表示编译码设备的示例,具体地,分别是视频编码器和视频解码器。在某些示例中,源设备102和目标设备116可以用基本上对称的方式操作,使得源设备102和目标设备116中的每一个均包括视频编码和解码组件。于是,系统100可以支持源设备102和目标设备116之间的单向或双向视频传输,例如用于视频流、视频回放、视频广播或者视频电话。
总体上,视频源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的编码视频数据。这可以包括适合访问存储在文件服务器114上的编码视频数据的无线信道(例如Wi-Fi连接)、有线连接(例如数字用户线路(DSL)、电缆调制解调器等)或者二者的组合。文件服务器114和输入接口122可以被配置为根据流传输协议、下载传输协议或其组合来操作。
输出接口108和输入接口122可以表示无线发射机/接收机、调制解调器、有线联网组件(例如以太网卡)、根据各种各样的IEEE 802.11标准中的任何一种进行操作的无线通信组件,或者其他物理组件。在输出接口108和输入接口122包括无线组件的示例中,输出接口108和输入接口122可以配置为根据比如4G、4G-LTE(长期演进)、LTE高级、5G或类似标准的蜂窝通信标准来传送比如编码视频数据的数据。在输出接口108包括无线发射机的某些示例中,输出接口108和输入接口122可以配置为根据其他无线标准,比如IEEE 802.11规范、IEEE 802.15规范(例如ZigBeeTM)、BluetoothTM标准等来传送比如编码视频数据的数据。在某些示例中,源设备102和/或目标设备116可以包括各自的片上系统(SoC)设备。例如,源设备102可以包括SoC设备来执行归于视频编码器200和/或输出接口108的功能,并且目标设备116可以包括SoC设备来执行归于视频解码器300和/或输入接口122的功能。
本公开的技术可以应用于支持各种多媒体应用中的任何一种的视频编码,比如空中电视广播、有线电视传输、卫星电视传输、互联网流视频传输,比如基于HTTP的动态自适应流(DASH)、编码到数据存储介质上的数字视频、对存储在数据存储介质上的数字视频进行解码,或其他应用。
目标设备116的输入接口122从计算机可读介质110(例如通信介质、存储设备112、文件服务器114等)接收编码视频比特流。编码视频比特流可以包括由视频编码器200定义的、也由视频解码器300使用的信令信息,比如语法元素,该语法元素具有描述和/或处理视频块或其他编译码单元(例如条带、图片、图片组、序列等)的特征的值。显示设备118向用户显示解码视频数据的已解码图片。显示设备118可以表示比如液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器或另一类显示设备的各种显示设备中的任何一种。
尽管未在图1中示出,但在某些示例中,视频编码器200和视频解码器300每一个可以与音频编码器和/或音频解码器集成在一起,并且可以包括适当的MUX-DEMUX单元或其他硬件和/或软件来处理公共数据流中的包括音频和视频的多路复用流。如果适用,MUX-DEMUX单元可以符合ITU H.223多路复用器协议或比如用户数据报协议(UDP)的其他协议。
视频编码器200和视频解码器300每一个可以实现为各种合适的编码器和/或解码器电路中的任何一种,比如一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑、软件、硬件、固件或其任何组合。当该技术部分地以软件实施时,设备可以将用于软件的指令存储在合适的非暂时计算机可读介质中,并使用一个或多个处理器在硬件中执行该指令来执行本公开的技术。可以在一个或多个编码器或解码器中包括视频编码器200和视频解码器300的每一个,它们中的任意一个可以集成为各自设备中的组合编码器/解码器(编解码器)的一部分。包括视频编码器200和/或视频解码器300的设备可以包括集成电路、微处理器和/或比如蜂窝电话的无线通信设备。
视频编码器200和视频解码器300可以根据视频编译码标准进行操作,比如ITU-TH.265,也表示为高效视频编译码(HEVC)或其扩展,比如多视图和/或可缩放的视频编译码扩展。可替代地,视频编码器200和视频解码器300可以根据其他专有标准或工业标准来操作,比如联合探索测试模型(JEM)或ITU-T H.266,(也被称为通用视频编译码(VVC))。于2019年7月3-12日在瑞典哥德堡举办的ITU-T SG 16WP 3和ISO/IEC JTC 1/SC 29/WG 11的联合视频专家组(JVET)第15次会议中的Bross等人的“Versatile Video Coding(Draft6),JVET-S2001-vA(以下简称“VVC草案6”)中描述了VVC标准的近期草案。然而,本公开的技术不限于任何特定的编译码标准。
总体上,视频编码器200和视频解码器300可以执行图片的基于块的编译码。术语“块”通常是指包括要处理的(例如编码的、解码的或以其他方式在编码和/或解码过程中使用的)数据的结构。例如,块可以包括亮度和/或色度数据样点的二维矩阵。总体上,视频编码器200和视频解码器300可以对以YUV(例如Y、Cb、Cr)格式表示的视频数据进行编译码。也就是说,视频编码器200和视频解码器300可以对亮度和色度分量进行编译码,其中色度分量可以包括红色和蓝色色度分量,而不是对图片的样点的红色、绿色和蓝色(RGB)数据进行编译码。在某些示例中,视频编码器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可以根据比如四叉树-二叉树(QTBT)结构或多类型树(MTT)结构的树结构来对CTU进行分割。QTBT结构消除了多个分割类型的概念,比如HEVC的CU、PU和TU之间的区分。QTBT结构包括两个级别:根据四叉树分割而分割出来的第一级,以及根据二叉树分割而分割出来的第二级。QTBT结构的根节点对应于CTU。二叉树的叶节点对应于编译码单元(CU)。
在MTT分割结构中,可以使用四叉树(QT)分割、二叉树(BT)分割以及一种或多种类型的三叉树(triple tree,TT)(也称为三进制树(ternary tree,TT))分割来对块进行分割。三叉(triple)或三进制(ternary)树分割是将块划分为三个子块的分割。在某些示例中,三叉(triple)树或三进制(ternary)树分割在不通过中心划分原始块的情况下将块划分为三个子块。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行的矩形区。片可以是图片中在特定片列(tile column)和特定片行(tile row)内的CTU的矩形区。片列表示CTU的矩形区,其高度等于图片的高度并且其宽度由(例如在图片参数集中的)语法元素指定。片行表示CTU的矩形区,其具有由语法元素指定的高度(例如在图片参数集中)并且其宽度等于图片的宽度。
在某些示例中,可以将片分割成多个砖块,该砖块中的每一个可以包括片内的一个或多个CTU行。没有分割为多个砖块的片也可以被称为砖块。但是,作为片的真子集的砖块不能被称为片。
图片中的砖块也可以按条带排列。条带可以是图片的砖块的整数倍,这些砖块可以排他地包含在单个网络抽象层(NAL)单元中。在某些示例中,条带包括若干完整片或仅一个片的完整砖块的连续序列。
本公开可以互换地使用“N×N”和“N乘N”来表示块(比如CU或其他视频块)在垂直和水平维度方面的样点维度,例如16×16样点或16乘16样点。总体上,16×16CU在垂直方向上将有16个样点(y=16)并且在水平方向上将有16个样点(x=16)。同样地,N×N的CU通常在垂直方向上具有N个样点,并且在水平方向上具有N个样点,其中N表示非负整数值。CU中的样点可以按行和列来排列。此外,CU在水平方向上不必具有与垂直方向上相同数量的样点。举例来说,CU可以包含N×M个样点,其中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的某些示例还提供了仿射运动补偿模式,其可以被视为帧间预测模式。在仿射运动补偿模式中,视频编码器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可以进一步地比如在图片报头、块报头、条带报头中生成到视频解码器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可以编码QTBT结构130的区域树级(即实线)的语法元素(例如划分信息)和QTBT结构130的预测树级(即虚线)的语法元素(例如划分信息),并且视频解码器300可以对以上进行解码。对于QTBT结构130的终端叶节点表示的CU,视频编码器200可以编码视频数据(比如预测和变换数据),并且视频解码器300可以对以上进行解码。
总体上,图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尺寸设置为128×128(亮度样点和两个对应的64×64色度样点),MinQTSize设置为16×16,MaxBTSize设置为64×64,MinBTSize(用于宽度和高度)设置为4,以及MaxBTDepth设置为4。首先,将四叉树分割应用于CTU来生成四叉树叶节点。四叉树叶节点可以具有从16×16(即MinQTSize)到128×128(即CTU尺寸)的尺寸。如果叶四叉树节点是128×128,则由于其尺寸超过了MaxBTSize(例如,在此示例中是64×64),因此不会进一步被二叉树划分。否则,叶四叉树节点将进一步进行二叉树分割。因此,四叉树叶节点也是二叉树的根节点,并且具有为0的二叉树深度。当二叉树深度达到MaxBTDepth(在此示例中为4)时,不允许进一步划分。当二叉树节点具有等于MinBTSize(在此示例中为4)的宽度时,这意味着不允许进一步的水平划分。类似地,具有等于MinBTSize的高度的二叉树节点表明不允许对该二叉树节点进行进一步的垂直划分。如上所述,二叉树的叶节点被称为CU并且根据预测和变换被进一步处理而无需进一步分割。
JVET-K0072描述了用于网格编译码的量化(TCQ)的技术。在实施JVET-K0072的TCQ提议时,视频编译码器切换地使用两个标量量化器用于量化/去量化。视频编译码器基于在扫描顺序中先于当前变换/量化系数的量化系数的奇偶性(parity)(即最低有效位),确定要对当前变换/量化系数使用的标量量化器。
JVET-K0072还描述了与TCQ耦合的系数编译码方案。在JVET-K0072提议中,视频编译码器基于使用的量化器执行用于对量化的系数进行解码的上下文选择。具体地,指示系数为零或非零的系数的显著性标志(SIG)具有三个上下文模型集,并且为特定SIG选择的上下文模型集取决于用于相关联系数所使用的量化器。因此,当开始编码/解码当前系数的SIG值时,视频编译码器基于前一扫描位置中的系数的奇偶性(是已知值)来确定用于当前系数的量化器,并由此确定用于该系数的SIG的上下文集。
例如通过完全重构先前的绝对级别(absLevel),视频编译码器可以确定先前扫描位置中的奇偶性。但是,此技术可能限制吞吐量。在JVET-K0071中,提出了一种替代方案,即在比特流中显式传输每个非零系数的奇偶性并且在移至下一个扫描位置之前对其进行解码,此替代方案在VVC的早期草案中被采用。以下提供JVET-K0071的更多细节。
将TU划分为不重叠的子块,称为编译码组(coding group,CG),其尺寸通常为4×4。此处描述的解码过程适用于4×4CG,但可以轻松扩展到任何其他CG尺寸。
视频编码器200和视频解码器300可以被配置为处理比特流中的语法元素。在一个示例编译码方案中,五个语法元素被用于表示absLevel的值。在此方案中,如果absLevel为0,则语法元素“sig_coeff_flag”等于0;否则,该标志等于1。如果sig_coeff_flag等于1,则在比特流中存在语法元素“par_level_flag”。如果absLevel是奇数,则语法元素“par_level_flag”等于0;并且如果absLevel是偶数,则语法元素“par_level_flag”等于1。如果sig_coeff_flag等于1,则在比特流中存在语法元素“rem_abs_gt1_flag”。如果absLevel大于2,则语法元素“rem_abs_gt1_flag”等于1;否则,此标志等于0。如果rem_abs_gt1_flag等于1,则在比特流中存在语法元素“rem_abs_gt2_flag”。如果absLevel大于4,则语法元素“rem_abs_gt2_flag”等于1;否则,该标志等于0。如果rem_abs_gt2_flag等于1,则在比特流中存在语法元素“abs_remainder”。
在以下和在图3和图5A-5C中,为了简化描述,将sig_coeff_flag、par_level_flag、rem_abs_gt1_flag、rem_abs_gt2_flag以及abs_remainder分别表示为SIG、Par、Gt1、Gt2以及rem。当不从比特流解析时,视频解码器300可以被配置为将以上语法元素中的任何一个设置为默认值0。给定用于这五个语法元素的值,视频解码器300可如公式(1)所示计算absLevel的值。
absLevel=SIG+Par+(Gt1<<1)+(Gt2<<1)+(rem<<1) (1)
在absLevel大于6的编译码场景中,全部五个语法元素都从比特流解析。
图3示出了对于CG中所有absLevel值的五个语法元素的示例顺序。图3中的顺序示出了按照JVET-K0072中的CG中表示absLevel的语法元素的顺序。
CG中的位置最多以三个通路进行扫描。在第一通路中(图3中标记为通路#1),对于系数0到15中的每一个,对标志SIG、Par和Gt1进行解析。如果对于特定系数的SIG标志为零,则该系数没有相关联的Par或Gt1标志。因此,在第一通路中,仅非零的SIG标志之后跟随有对应的Par和Gt1标志。第一通路之后,可以确定每个位置的部分absLevel,表示为absLevel1,如(2)所示。
absLevel1=SIG+Par+(Gt1<<1) (2)
如果在第一通路中存在至少一个非零的Gt1,则扫描第二通路(图3中的通路#2)。在第二通路中,对具有非零的Gt1的系数的Gt2标志进行解析。在第一通路和第二通路中的二进制数(bin)可以全部是常规编译码的,这意味着二进制数的概率分布由适当选择的上下文模型建模,如以下更详细地描述的建模。如果在第二通路中至少存在一个非零的Gt2,则扫描第三通路(图3中的通路#3),并且对具有非零的Gt2的系数的rem值进行解析。由于rem值不是二进制的,因此rem值的二进制版本的二进制数可能全部被旁路编译码,这意味着这些二进制数被假定为均匀分布并且不需要上下文选择。
在另一示例中,奇偶性标志和gt1标志的编译码顺序可以互换,并且如果gt1标志为零,则可以不信令通知奇偶性标志。在此示例中,absLevel计算如下:
absLevel=SIG+Par+Gt1+(Gt2<<1)+(rem<<1)
视频编译码设备(比如源设备102和视频编码器200或者目标设备116和视频解码器300)通常可以比常规编译码二进制数快得多地处理旁路编译码二进制数,这是由于旁路编译码二进制数不具有与上下文选择相关的数据依赖性,因而旁路编译码二进制数可以更容易地被并行处理,并且因为旁路二进制数的算术编译码通常更简单,其只需要右移而不是常规编译码二进制数所需的表查找。因此,可以通过减少常规编译码二进制数的数量并转而使用旁路编译码二进制数来提高视频编译码器的整体吞吐量。
JVET-K0072中提出的系数编译码方案至少存在两个可能的问题。第一个可能的问题是增加了常规编译码二进制数的数量。由于上下文选择和区间细分计算,对常规编译码二进制数进行的处理比旁路编译码二进制数要慢得多。在JVET-K0072中,CG中的常规编译码二进制数的数量多达80个,而JEM或HEVC中相比较地为25个(SIG为16个、gt1为8个、gt2为1个)。在平均情况下,当与JEM相比时,取决于不同的比特率,JVET-K0072中使用的表示absLevel的二进制数的总数要高出40%至90%。另一个可能的问题是,具有不同上下文集的常规编译码二进制数是交织的。当使用相同逻辑进行上下文选择的二进制数被分组在一起时,每个周期处理多个二进制数所需的推测性计算就更少了。在JVET-K0072中,对于每个系数,SIG、Par和Gt1(其使用不同上下文集)是交织的(如图3所示)。
视频编码器200和视频解码器300可以被配置为执行上下文建模。JVET-K0072中使用的上下文建模在此也做了简要介绍,因为本公开对其进行了改进。术语上下文建模通常指为要解码的二进制数选择概率模型(又称为上下文)。在JVET-K0072中,SIG、Par、Gt1以及Gt2标志需要上下文建模,并且该选择取决于局部邻域中的absLevel1的值,表示为N。在一些实施方案中,可将在模板内但在当前TU外的位置从N中排除。
图4示出了可用于选择概率模型的模板的图示。框150表示变换单元。框150中的位置X表示当前扫描位置,并且框150中的位置Y表示用于确定对于当前扫描位置的概率模型的局部邻域。
对于当前扫描位置(参见图4中具有X的黑色正方形),视频编码器200和视频解码器300可以基于Y位置确定SIG、Par、Gt1以及Gt2标志的上下文索引,分别表示为ctxIdxSig、ctxIdxPar、ctxIdxGt1以及ctxIdxGt2。为了确定ctxIdxSig、ctxIdxPar、ctxIdxGt1以及ctxIdxGt2,视频编码器200和视频解码器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,视频编码器200和视频解码器300可以按照如下确定用于解码SIG的上下文索引:
·对于亮度,视频编码器200和视频解码器300如下确定ctxIdxSig:
ctxIdxSig=18*max(0,state-1)+min(sumAbs1,5)+(d<2?12:(d<5?6:0)) (6)
·对于色度,视频编码器200和视频解码器300如下确定ctxIdxSig:
ctxIdxSig=12*max(0,state-1)+min(sumAbs1,5)+(d<2?6:0)) (7)
在上面的等式(6)和(7)中,变量“state”表示如JVET-K0072中所定义的状态机的当前状态。
给定sumSig、sumAbs1和d,视频编码器200和视频解码器300可以如下确定用于解码Par的上下文索引:
·如果当前扫描位置等于最后一个非零系数的位置,则ctxIdxPar为0。
·否则,
○对于亮度,ctxIdxPar由以下确定:
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)
ctxIdxGt1和ctxIdxGt2设置为ctxIdxPar的值。
视频编码器200和视频解码器300可以执行absLevel重构,方式与JVET-K0072中描述的相同。
根据本公开的技术,为了减少常规编译码二进制数的数量,视频编码器200和视频解码器300可以使用系数组的预定数量(C1)的常规编译码二进制数来对系数组中的系数的sig-par-gt1通路(即第一通路)进行编译码,直到达到常规编译码二进制数阈值C1。将针对4×4CG来描述本公开的技术,但是本公开的技术总体上可应用于任何尺寸的CG。
在一个示例实施方式中,视频编码器200和视频解码器300被配置为将最后系数(其中达到常规二进制数计数阈值C1)的全部二进制数编译码为常规二进制数。在可能仅包括常规编译码二进制数的第一通路之后,视频编码器200和视频解码器300可以使用常规二进制数对预定数量(C2)的gt2标志(如果可用)进行编译码。值等于2的C2是一种可以很好地权衡性能复杂性的特定选择;然而,也可以使用C2的其他值。在第二通路之后,可以使用旁路二进制数对在第一通路和第二通路之后的系数的全部剩余级别进行编译码。具体地,如图5A所示,视频编码器200和视频解码器300可以按照从具有剩余级别信息的第一系数开始的编译码扫描顺序,使用以下描述的莱斯/格伦布编译码组合对剩余级别进行编译码。对于Gt2标志的编译码,最后的常规编译码的Gt2标志不能超过第一通路中的最后的常规编译码的Gt1标志的位置,即在图5A中,j<=K,如果未达到C2阈值,甚至不能超过C2。
图5A示出了语法元素的示例扫描顺序。在图5A的示例中,在第一通路中,视频编码器200和视频解码器300对SIG、Par和Gt1标志进行编译码,直到达到常规编译码二进制数的阈值数量。在图5A的示例中,常规编译码二进制数的阈值数量表示为C1并且出现在系数K处。一旦达到常规编译码二进制数的阈值数量,则视频编码器200和视频解码器300可以使用常规编译码二进制数对系数K的剩余标志(比如Par和Gt1(如果对于K存在))进行编译码,然后第一通路完成。在第二通路中,视频编码器200和视频解码器300对Gt2标志进行编译码,直到达到常规编译码二进制数的第二阈值数量。在图5A的示例中,常规编译码二进制数的第二阈值数量由C2表示并且出现在系数j处。取决于特定的编译码场景,系数j可以是系数1到N中的任何一个。在对用于系数j的Gt2标志进行编译码后,第二通路完成。
对于第三通路,视频编码器200和视频解码器300可以对具有要编译码的剩余级别的那些系数执行剩余级别编译码。对于系数K+1到N,剩余级别表示系数的绝对级别。对于系数0到K,剩余级别表示中间值和绝对级别之间的差。系数的中间级别是基于SIG、Par和Gt1标志而确定的级别,并且对于某些系数,也基于Gt2标志来确定。视频编码器200和视频解码器300可以使用JVET-K0072中描述的方案对系数的remLevel部分进行编译码,remLevel部分的前缀二进制数在第一通路和第二通路中被编译码为常规二进制数,其中莱斯参数(ricePar)是根据以下规则来确定:
·如果sumAbs–numSig小于12,则将ricePar设置为等于0;
·否则,如果sumAbs–numSig小于25,则将ricePar设置为等于1;
·否则,将ricePar设置为等于2。
如图6所图示,对于JVET-K0072,ricePar被用于推导阈值以在旁路编译码的格伦布-莱斯码和指数-格伦布码之间切换。
本公开描述了用于对没有在第一通路中被常规二进制数编译码的系数的remLevel值(即在达到C1常规编译码二进制数阈值之后CG的剩余系数)进行编译码的技术。本公开描述了用于修改的ricePar推导的技术,该推导取决于邻近系数的绝对值的总和。邻近系数可以例如是与图4中标识为相同的邻近系数,或者可以是不同的系数。
在某些示例中,视频编码器200和视频解码器300可以依赖于TCQ状态(对于非TCQ情况假设为0)以及邻域模板中的绝对值的和来执行系数级别到要编译码的码字的映射。除了绝对值的和以及TCQ状态依赖性之外,对比如在TU内对角线位置的系数位置的依赖也可以被用作参数以定义用于将系数值重新映射到码字的阈值(pos0)。
视频编码器200和视频解码器300可以被配置为如下推导ricePar。视频编码器200和视频解码器300计算上下文模板中的系数的绝对值的和(即绝对系数值)
/>
视频编码器200和视频解码器300将sumAbsLevel的最大值限制为31,以便从下表中查找riceParameter。视频编码器200和视频解码器300基于sumAbsLevel或31中的较小者确定r的值。下表示出了位置0到31处的32个值的数组。如果sumAbsLevel大于31,则r的值等于位置sumAbsLevel或位置31处的值。
r=g_auGoRiceParsCoeff[min(sumAbsLevel,31)],其中
const uint32_t g_auiGoRiceParsCoeff[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};
视频编码器200和视频解码器300按照如下推导pos0值以用于剩余级别的编译码:
pos0=g_auigoRicePosCoeff0[max(0,state-1)][sumAbsLevel],其中
const uint32_t g_auiGoRicePosCoeff0[3][32]={
{0,0,0,0,0,1,2,2,2,2,3,3,4,4,4,4,4,4,5,5,6,7,7,8,8,8,8,8,8,9,9,9},{1,1,1,1,2,3,4,4,5,6,6,7,8,8,8,9,10,11,12,12,12,12,14,15,15,15,16,16,16,16,17,17},
{1,1,2,2,2,3,4,4,5,6,6,7,8,8,9,9,10,11,12,12,12,12,14,15,15,16,16,16,16,17,17,17}
};
对于具有absLevel值的系数,视频编码器200和视频解码器300使用莱斯/指数格伦布编译码(如上所述计算出莱斯参数值r)计算要编译码的absLevel0值,如下:
-将absLevel0定义为
if(absLevel==0)
{
absLevel0=pos0;
}
else if(absLevel<=pos0)
{
absLevel0=absLevel–1;
}
else
{
absLevel0=absLevel;
}
使用此技术,视频编码器200和视频解码器300可以将常规编译码二进制数和旁路编译码二进制数分为一个系数组,这增加了CABAC解析的吞吐量。
在某些示例中,对于在第一通路和第二通路中部分编译码的系数,或更具体地,对于第三通路中的部分上下文编译码的系数,该部分上下文编译码的系数是第一通路和第二通路中编译码sig+gt1+par+(gt2<<1)后的剩余级别的一半,也可以使用以上的g_auiGoRiceParsCoeff[32]表来推导用于remLevel编译码的基于模板编译码的ricePar。由于剩余级别的一半被编译码,用于完全旁路编译码二进制数的完全绝对系数编译码的ricePar查找表的输出可以减1以对第三通路中的剩余部份的值的一半进行编译码。因此,用于对剩余部份的进行基于模板的编译码的ricePar可以修改为:
r=g_auGoRiceParsCoeff[min(sumAbsLevel,31)],
r=r>0?r-1:0。
如上所介绍的,根据本公开的技术,为了减少常规编译码二进制数的数量,视频编码器200和视频解码器300可以使用CG中预定数量(C1)的常规编译码二进制数来对系数组中的系数的sig-par-gt1通路(即第一通路)(或在某些示例中,sig-gt1-par通路)进行编译码,直到达到C1的常规编译码二进制数阈值。可以将最后系数(其中达到常规二进制数计数阈值C1)的全部二进制数编译码为常规二进制数。在对sig-par-gt1或sig-gt1-par进行编译码之后,在第一通路的其余部分中,可以用TCQ的预定状态将全部剩余系数的显著性标志编译码为常规二进制数,以推导用于对SIG标志进行编译码的上下文,这意味着无需信令通知用于推导显著性标志上下文的奇偶性标志。在由仅对常规编译码二进制数进行编译码组成的第一通路之后,可以使用常规二进制数对预定数量(C2)的gt2标志(如需要)进行编译码。在某些示例中,具有等于2或4的值的C2可以提供良好的性能复杂性折衷。在第二通路之后,可以按照JVET-K0072或JVET-K0071中所描述的使用莱斯/格伦布译码编译码组合的剩余级别编译码,遵循如图5B和5C所示的从具有剩余级别信息的第一系数开始的编译码扫描顺序,使用旁路二进制数对第一通路和第二通路之后的系数的全部剩余级别进行编译码。在某些示例中,对于Gt2标志的编译码,最后的常规编译码的Gt2标志不能超过第一通路中的最后的常规编译码的Gt1标志的位置,即在图5B和5C中,j<=K,如果未达到C2阈值,甚至不能超过C2。
图5B示出了用于sig-par-gt1编译码顺序的常规二进制数编译码顺序。在图5B的示例中,在第一通路中,视频编码器200和视频解码器300对SIG、Par和Gt1标志进行编译码,直到达到常规编译码二进制数的阈值数量。在图5B的示例中,常规编译码二进制数的阈值数量表示为C1并且出现在系数K处。一旦达到常规编译码二进制数的阈值数量,则视频编码器200和视频解码器300可以将系数K的剩余标志(比如Par和Gt1(如果对于系数K存在)编译码为常规编译码二进制数。作为第一通路的一部分,视频编码器200和视频解码器300可以将使用常规编译码二进制数编译码的全部剩余的SIG标志进行编译码。在第二通路中,视频编码器200和视频解码器300对Gt2标志进行编译码,直到达到第二阈值数量的常规编译码二进制数。在图5B的示例中,常规编译码二进制数的第二阈值数量表示为C2并且出现在系数j处。取决于特定的编译码场景,系数j可以是系数1到N中的任何一个。在对用于系数j的Gt2标志进行编译码后,第二通路完成。
图5C示出了用于sig-gt1-par编译码顺序的常规二进制数编译码顺序。图5C通常表示与图5B所示的类似的编译码方案,但是Gt1和Par标志的顺序相反。
在某些示例中,在第一通路中在仅sig标志(非sig-par-gt1或sig-gt1-par编译码)被编译码的区域中,视频编码器200和视频解码器300可能不在两个TCQ量化器之间切换状态驱动的逆量化(或级别重构部分)。在此区域中选择的量化器可以由分配给sig标记上下文推导的预定状态而不是在此区域中的级别的奇偶性来确定。
根据本公开的另一技术,为了减少常规编译码二进制数的数量,视频编码器200和视频解码器300可以使用系数组(当前4×4系数)中的预定数量(C1)的常规编译码二进制数来对系数组中的系数的sig-par-gt1通路(即第一通路)进行编译码,直到达到C1的常规编译码二进制数阈值。可以将最后系数(其中达到常规二进制数计数阈值C1)的全部二进制数编译码为常规二进制数。在由仅对常规编译码二进制数进行编译码组成的第一通路之后,可以使用常规二进制数对预定数量(C2)的gt2标志(如果可用)进行编译码。值等于2的C2是一个可以提供良好的性能-复杂度折衷的示例值。在第二通路之后,可以使用如下所示的莱斯/格伦布编译码组合、遵循如图5A所示的从具有剩余级别信息的第一系数开始的编译码扫描顺序,使用剩余级别编译码、使用旁路二进制数对第一通路和第二通路之后的系数的全部剩余级别进行编译码。在某些示例中,对于Gt2标志的编译码,最后的常规编译码的Gt2标志不能超过第一通路中最后的常规编译码的Gt1标志的位置,即在图5A中,j<=K,如果未达到C2阈值,甚至不能超过C2。
视频编码器200和视频解码器300可以被配置为执行剩余级别编译码。可以使用JVET-K0072中描述的方案对系数的remLevel部分进行编译码,remLevel部分的前缀二进制数在第一通路和/或第二通路中被编译码为常规二进制数,在JVET-K0072中莱斯参数(ricePar)是根据以下规则来确定:
·如果sumAbs–numSig小于12,则将ricePar设置为等于0;
·否则,如果sumAbs–numSig小于25,则将ricePar设置为等于1;
·否则,将ricePar设置为等于2。
ricePar可以被用于推导在JVET-K0072的旁路编译码的码和指数-格伦布码之间切换的阈值,如图6所图示。
在该提出的方案中,对于在通路1中没有被常规二进制数编译码的系数的remLevel值的编译码,即可以使用修改的ricePar推导对在达到C1的常规编译码二进制数阈值之后的CG的剩余系数进行编译码,该ricePar推导取决于以上所述的针对上下文建模的上下文模板中的邻近系数的绝对值的和。
系数级别到要编译码的码字的映射可以依赖于TCQ状态(对于非TCQ情况假设为0)以及邻域模板中的绝对值的和。用于推导CABAC状态的上下文推导技术,其中该CABAC状态用于对常规编译码二进制数的显著性标志进行编译码,可以用在邻近系数信息可用的完全旁路编译码的系数区域中。CABAC状态可以用于从莱斯/指数格伦布编译码的absLevel0的值推导用于将系数值重新映射到码字的阈值(pos0)。这可以总结为:
-使用JVET-K0072中描述的方案,用absLevel的值计算用于系数的要使用莱斯/指数格伦布编译码(如上所述的莱斯参数值r已经计算出来)进行编译码的absLevel0的值
将absLevel0定义为
if(absLevel==0)
{
absLevel0=pos0;
}
else if(absLevel<=pos0)
{
absLevel0=absLevel–1;
}
else
{
absLevel0=absLevel;
}
使用此方案,常规编译码二进制数和旁路编译码二进制数可以以增加用于CABAC解析的吞吐量的方式被分组为系数组。
根据本公开的另一技术,在系数组中将特定数量的系数进行编译码之后,驱动状态机的奇偶性位可以不改变状态。在这种情况下,因为状态不需要为了编译码效率而改变,所以不需要交织显著性和奇偶性二进制数。因此,在对系数组中特定数量的系数进行解码之后,系数编译码方案可以采用消除了对TCQ状态的依赖的sig-gt1-gt2-remLevel顺序的编译码的形式,其可以以更细的粒度向旁路编译码二进制数转移(减少常规编译码二进制数),其中sig、大于1(gt1)、大于2(gt2)常规编译码二进制数可以被转换为旁路编译码二进制数。
图7是图示可以执行本公开的技术的视频编码器200示例的框图。提供图7是出于解释的目的,而非限制本公开中广泛示例和描述的技术。出于解释的目的,本公开在比如开发中的HEVC视频编译码标准和H.266视频编译码标准的视频编译码标准的上下文中描述了视频编码器200。然而,本公开的技术不限于这些视频编译码标准并且通常可应用于视频编码和解码。
在图7的示例中,视频编码器200包括视频数据存储器230、模式选择单元202、残差生成单元204、变换处理单元206、量化单元208、逆量化单元210、逆变换处理单元212、重构单元214、滤波单元216、解码图片缓冲器(DPB)218以及熵编码单元220。
视频数据存储器230可以存储要由视频编码器200的组件编码的视频数据。视频编码器200可以从例如视频源104(图1)接收存储在视频数据存储器230中的视频数据。DPB218可以用作参考图片存储器,该参考图片存储器存储参考视频数据,用于由视频编码器200预测后续视频数据。视频数据存储器230和DPB218可以由多种存储设备中的任何一种形成,比如动态随机存取存储器(DRAM),包括同步DRAM(SDRAM)、磁阻RAM(MRAM)、阻变RAM(RRAM)或其他类型的存储器设备。视频数据存储器230和DPB218可以由同一存储器设备或单独的存储器设备提供。在各种示例中,视频数据存储器230可以与视频编码器200的其他组件一起片装,如图所示,或者相对于那些组件置于片外。
在本公开中,对视频数据存储器230的引用不应解释为限于视频编码器200内部的存储器,除非特别说明,或者限于视频编码器200外部的存储器,除非特别说明。而是,对视频数据存储器230的引用应被理解为存储视频编码器200接收的用于编码的视频数据(例如当前块的要编码的视频数据)的参考存储器。图1的存储器106还可以提供来自视频编码器200的各种单元输出的临时存储。
图示了图7的各种单元来帮助理解由视频编码器200执行的操作。可以将这些单元实现为固定功能电路、可编程电路或其组合。固定功能电路指提供特定功能并被预设了能够被执行的操作的电路。可编程电路指可以被编程来执行各种任务并且在能够被执行的操作中提供灵活功能的电路。例如,可编程电路可以执行软件或固件,该软件或固件促使可编程电路以由软件或固件的指令所定义的方式操作。固定功能电路可以执行软件指令(例如来接收参数或输出参数),但是固定功能电路执行的操作的类型通常是不变的。在某些示例中,单元中的一个或多个可以是不同的电路块(固定功能或可编程的),并且在某些示例中,一个或多个单元可以是集成电路。
视频编码器200可以包括算术逻辑单元(ALU)、基本功能单元(EFU)、数字电路、模拟电路和/或由可编程电路形成的可编程核心。在使用由可编程电路执行的软件来执行视频编码器200的操作的示例中,存储器106(图1)可以存储视频编码器200接收和执行的软件的目标代码,或视频编码器200内部的另一存储器(未示出)可以存储这样的指令。
视频数据存储器230被配置为存储接收的视频数据。视频编码器200可以从视频数据存储器230中取得视频数据的图片,并且将视频数据提供给残差生成单元204和模式选择单元202。视频数据存储器230中的视频数据可以是要编码的原始视频数据。
模式选择单元202包括运动估计单元222、运动补偿单元224和帧内预测单元226。模式选择单元202可以包括附加功能单元以根据其他预测模式来执行视频预测。作为示例,模式选择单元202可以包括调色板单元、块内复制单元(其可以是运动估计单元222和/或运动补偿单元224的一部分)、仿射单元、线性模型(LM)单元等。
模式选择单元202通常协调多个编码通路以测试编码参数的组合以及这些组合所得到的率失真值。编码参数可以包括将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可以执行运动搜索来识别在一个或多个参考图片中的一个或多个紧密匹配的参考块(例如存储在DPB 218中的一个或多个先前编译码的图片)。特别地,运动估计单元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的尺寸为2N×2N,则视频编码器200可以支持2N×2N或N×N的PU尺寸用于帧内预测,以及2N×2N、2N×N、N×2N、N×N或类尺寸的对称PU尺寸用于帧间预测。视频编码器20和视频解码器30还可以支持2N×nU、2N×nD、nL×2N和nR×2N的PU尺寸的非对称分割用于帧间预测。
在模式选择单元202不将CU进一步分割为PU的示例中,每一个CU可以与亮度编译码块和对应的色度编译码块相关联。如上所述,CU的尺寸可以指CU的亮度编译码块的尺寸。视频编码器200和视频解码器300可以支持2N×2N、2N×N或N×2N的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可以将滤波后的重构块存储到DPB218。运动估计单元222和运动补偿单元224可以从DPB 218中取得参考图片,该参考图片是由重构(并且可能是滤波的)块形成的,来对随后编码图片的块进行帧间预测。另外,帧内预测单元226可以使用当前图片的DPB 218中的重构块来对当前图片中的其他块进行帧内预测。
总体上,熵编码单元220可以对从视频编码器200的其他功能组件接收的语法元素进行熵编码,该语法元素包括上述用于系数编译码的语法元素。例如,熵编码单元220可以对来自量化单元208的量化的变换系数块进行熵编码。作为另一示例,熵编码单元220可以对来自模式选择单元202的预测语法元素(例如用于帧间预测的运动信息或用于帧内预测的帧内模式信息)进行熵编码。熵编码单元220可以对视频数据的另一示例的语法元素执行一个或多个熵编码操作来生成熵编码数据。例如,熵编码单元220可以对数据执行上下文自适应可变长度编译码(CAVLC)操作、CABAC操作、可变到可变(V2V)长度编译码操作、基于语法的上下文自适应二进制算术编译码(SBAC)操作、概率区间分割熵(PIPE)编译码操作、指数-格伦布编码操作或数据的另一种熵编码操作。在某些示例中,熵编码单元220可以在语法元素未被熵编码的情况下以旁路模式操作。
视频编码器200可以输出比特流,其包括对条带或图片的块进行重构所需的熵编码语法元素。特别地,熵编码单元220可以输出比特流。
上述操作是针对块来描述的。这样的描述应该被理解为是用于亮度编译码块和/或色度编译码块的操作。如上所述,在某些示例中,亮度编译码块和色度编译码块是CU的亮度和色度分量。在某些示例中,亮度编译码块和色度编译码块是PU的亮度和色度分量。
在某些示例中,不必针对色度编译码块重复对于亮度编译码块执行的操作。作为一个示例,不需要重复用于识别亮度编译码块的运动矢量(MV)和参考图片的操作来识别用于色度块的MV和参考图片。相反,可以缩放亮度编译码块的MV来确定色度块的MV,并且参考图片可以是相同的。作为另一示例,对于亮度编译码块和色度编译码块,帧内预测处理可以是相同的。
视频编码器200表示被配置编码视频数据的设备的示例,该设备包括被配置为存储视频数据的存储器;以及一个或多个在电路中实现的处理单元,并且该处理单元被配置为:确定用于第一解码通路的常规编译码二进制数的阈值数量;对于第一系数集,对系数组的语法元素进行上下文编码,直到达到常规编译码二进制数的阈值数量,其中,上下文编码的语法元素包括一个或多个显著性标志、一个或多个奇偶性级别标志以及一个或多个第一标志,其中,一个或多个显著性标志中的每一个指示系数的绝对级别是否等于零,一个或多个奇偶性级别标志中的每一个指示系数是否具有是偶数或奇数的绝对级别,以及一个或多个第一标志中的每一个指示系数是否具有大于2的绝对级别;以及响应于达到常规编译码二进制数的阈值数量,对于第二系数集,对附加语法元素进行旁路编码,其中,对附加语法元素进行旁路编码包括,对于第二系数集的系数,基于该系数的邻近系数的绝对值的和推导用于莱斯参数的值。
图8是图示可以执行本公开的技术的视频解码器300示例的框图。提供图8是出于解释的目的,而非限制本公开中广泛示例和描述的技术。出于解释的目的,本公开描述了根据JEM和HEVC的技术描述的视频解码器300。然而,本公开的技术可以由被配置为其他视频编译码标准的视频编译码设备来执行。
在图8的示例中,视频解码器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可以输出该解码图片和/或将其用作参考视频数据。CPB存储器320和DPB 314可以由多种存储器设备中的任何一种形成,比如动态随机存取存储器(DRAM),包括同步DRAM(SDRAM)、磁阻RAM(MRAM)、阻变RAM(RRAM)或其他类型的存储器设备。CPB存储器320和DPB 314可以由相同的存储器设备或独立的存储器设备提供。在各种示例中,CPB存储器320可以与视频解码器300的其他组件置于片上,或者相对于那些组件置于片外。
另外地或可替代地,在某些示例中,视频解码器300可以从存储器120(图1)中取得编译码视频数据。也就是说,存储器120可以如上述讨论的与CPB存储器320一起存储数据。同样,当视频解码器300的某些或全部功能被将由视频解码器300的处理电路执行的软件实现时,存储器120可以存储将由视频解码器300执行的指令。
图示图8所示的各种单元以帮助理解由视频解码器300执行的操作。可以将这些单元实现为固定功能电路、可编程电路或其组合。类似于图7,固定功能电路指提供特定功能并且被预设了可以被执行的操作的电路。可编程电路指可以被编程来执行各种任务并且在能够被执行的操作中提供灵活功能的电路。例如,可编程电路可以执行软件或固件,该软件或固件促使可编程电路以由软件或固件的指令所定义的方式操作。固定功能电路可以执行软件指令(例如用于接收参数或输出参数),但是固定功能电路执行的操作的类型通常是不可变的。在某些示例中,单元中的一个或多个可以是不同的电路块(固定功能或可编程的),并且在某些示例中,一个或多个单元可以是集成电路。
视频解码器300可包括ALU、EFU、数字电路、模拟电路和/或由可编程电路形成的可编程核心。在视频解码器300的操作由在可编程电路上执行的软件执行的示例中,片上或片外存储器可以存储视频解码器300接收并执行的软件的指令(例如目标代码)。
熵解码单元302可以从CPB接收编码视频数据并且熵解码视频数据以再现语法元素,包括以上描述的用于系数编译码码的语法元素。预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310以及滤波单元312可以基于从比特流中提取的语法元素来生成解码视频数据。
总体上,视频解码器300在逐块的基础上重构图片。视频解码器300可以单独地对每一个块执行重构操作(其中当前正在进行重构(即解码)的块可以被称为“当前块”)。
熵解码单元302可以对定义量化的变换系数块的量化的变换系数的语法元素以及比如量化参数(QP)和/或(多个)变换模式指示的变换信息进行熵解码。逆量化单元306可以使用与量化的变换系数块相关联的QP来确定量化程度,并且同样地,确定逆量化程度以供逆量化单元306应用。逆量化单元306可以(例如执行按位左移操作来)对量化的变换系数进行逆量化。逆量化单元306从而可以形成包括变换系数的变换系数块。
在逆量化单元306形成变换系数块之后,逆变换处理单元308可以将一个或多个逆变换应用于变换系数块来生成与当前块相关联的残差块。例如,逆变换处理单元308可以将逆DCT、逆整数变换、逆Karhunen-Loeve变换(KLT)、逆旋转变换、逆方向变换或另一逆变换应用于变换系数块。
进一步来说,预测处理单元304根据由熵解码单元302熵解码的预测信息语法元素来生成预测块。例如,如果预测信息语法元素指示当前块是帧间预测的,则运动补偿单元316可以生成预测块。在这种情况下,预测信息语法元素可以指示DPB 314中的参考图片,以从参考图片中取得参考块,以及指示识别参考图片中参考块相对于当前图片中的当前块的位置的运动矢量。运动补偿单元316通常可以以与针对运动补偿单元224(图7)所描述的方式基本上相似的方式来执行帧间预测过程。
作为另一示例,如果预测信息语法元素指示当前块是帧内预测的,则帧内预测单元318可以根据由预测信息语法元素指示的帧内预测模式来生成预测块。再次,帧内预测单元318通常可以以与针对帧内预测单元226(图7)所描述的方式基本上相似的方式来执行帧内预测过程。帧内预测单元318可以从DPB 314中取得当前块的邻近样点的数据。
重构单元310可以使用预测块和残差块来重构当前块。例如,重构单元310可以将残差块的样点添加到预测块的对应样点来重构当前块。
滤波单元312可以对重构块执行一个或多个滤波操作。例如,滤波单元312可以执行去块操作来减少沿着重构块的边缘的块状伪影。不一定在所有示例中都执行滤波单元312的操作。
视频解码器300可以将重构块存储在DPB 314中。如上所述,DPB 314可以向预测处理单元304提供参考信息,比如用于帧内预测的当前图片的样点以及用于随后的运动补偿的先前解码图片。此外,视频解码器300可以从DPB输出解码图片,用于随后呈现在比如图1的显示设备118的显示设备上。
以这种方式,视频解码器300表示视频解码设备的示例,该视频解码设备包括被配置为存储视频数据的存储器,以及一个或多个在电路中实现的处理单元,并且该处理单元被配置为:确定用于第一解码通路的常规编译码二进制数的阈值数量;对于第一系数集,对系数组的语法元素进行上下文解码,直到达到常规编译码二进制数的阈值数量,其中,上下文解码的语法元素包括一个或多个显著性标志、一个或多个奇偶性级别标志以及一个或多个第一标志,其中,一个或多个显著性标志中的每一个指示系数的绝对级别是否等于零,一个或多个奇偶性级别标志中的每一个指示系数是否具有是偶数或奇数的绝对级别,以及一个或多个第一标志中的每一个指示系数是否具有大于2的绝对级别;响应于达到常规编译码二进制数的阈值数量,对于第二系数集,对附加语法元素进行旁路解码,其中,为了对附加语法元素进行旁路解码,一个或多个处理器被配置为:对于第二系数集的系数,基于该系数的邻近系数的绝对值的和推导用于莱斯参数的值;基于上下文解码的语法元素确定用于变换单元的第一系数集的值;以及基于附加语法元素确定用于变换单元的第二系数集的值。
图9A和9B示出了在二进制数n处的CABAC过程的示例。在图9A的示例400中,在二进制数n处,在二进制数2的范围包括由在给定某个上下文状态(σ)情况下的最小可能符号(least probable symbol,LPS)的概率(pσ)给出的RangeMPS和RangeLPS。示例400示出了当二进制数n的值等于最大可能符号(most probable symbol,MPS)时,在二进制数n+1处范围的更新。在此示例中,低点(low)保持不变,但在二进制数n+1处的范围的值减小为在二进制数n处的RangeMPS的值。图9B的示例402示出了当在二进制数n处的值不等于MPS(即,等于LPS)时,在二进制数n+1处范围的更新。在此示例中,低点移至在二进制数n处的RangeLPS的较低范围值。此外,在二进制数n+1处的范围的值减小为在二进制数n处的RangeLPS的值。
在HEVC视频编译码过程的一个示例中,用9个比特表示范围并且用10个比特表示低点。存在重新归一化的过程来以足够的精度保持范围和低点值。只要范围小于256,重新归一化就会发生。因此,重新归一化以后,范围始终等于或大于256。取决于范围和低点的值,二进制算术编译码器(BAC)将“0”或“1”输出到比特流,或者更新内部变量(称为BO:位-未完成(bits-outstanding)),以保留将来的输出。图10示出了取决于范围的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推导出。实际上,段索引是通过从实际范围位移和丢弃比特推导出的。下表1示出了可能的范围及其对应的索引。
表1–范围索引
范围 | 256-319 | 320-383 | 384-447 | 448-511 |
(range>>6)&3 | 0 | 1 | 2 | 3 |
然后,LPS范围表具有64个条目(每个概率状态一个)乘以4(每个范围索引一个)。每个条目都是RangeLPS,即范围乘以LPS概率的值。下表2中示出了此表的一部分示例。表2描绘了概率状态9-12。在针对HEVC的一项提议中,概率状态的范围可能为0-63。
表2–RangeLPS
在每个段(即范围值)中,每个概率状态σ的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=1/2)。也就是说,在上下文状态0下,LPS和MPS是同等可能的。在每个先前状态的概率是通过将先前状态乘以α推导出。这样,LPS在上下文状态α=1下发生的概率是p0*0.9493(0.5*0.9493=.47465)。这样,随着状态索引α增加,LPS发生的概率下降。
CABAC是自适应的,因为更新了概率状态以便遵循信号统计(即先前编译码的二进制数的值)。更新过程如下。对于给定的概率状态,更新取决于状态索引和识别为LPS或MPS的编码符号的值。作为更新过程的结果,新的概率状态被推导出来,该概率状态由可能修改的LPS概率估计以及(如有必要)修改的MPS值组成。
在二进制数值等于MPS的事件中,给定的状态索引可以增加1。这适用于所有状态,除了当在状态索引62处MPS发生时,其中LPS概率已经处于最小值(或等效地,达到了最大MPS概率)。在这种情况下,状态索引62保持固定,直到看到LPS或最后二进制数值被编码为止(状态63被用于最后二进制数值的特殊情况)。当LPS发生时,通过将状态索引递减一定量来更改状态索引,如下式所示。此规则总体上适用于每次出现LPS,但以下情况除外。假设LPS已经在索引σ=0的状态下被编码,这对应于等概率情况,状态索引保持固定,但是将切换MPS值使得LPS和MPS的值互换。在所有其他情况下,无论哪个符号已经被编码,MPS值都不会更改。推导出用于LPS概率的转换规则是基于给定的LPS概率pold与更新后的对等概率pnew之间的以下关系:
pnew=max(αpold,p62) 如果MPS发生
pnew=(1-α)+αpold 如果LPS发生,
关于在CABAC中概率估计过程的实际实施方式,重要的是要注意所有转换规则可以通过至多两个表来实现,每个表具有6比特无符号整数值的63个条目。在某些示例中,可以使用单个表TransIdxLPS来确定状态转换,已经观察到LPS的情况下,对于给定的状态索引σ,该表TransIdxLPS确定新的更新状态索引TransIdxLPS[σ]。MPS驱动的转换可以通过将状态索引简单地(饱和地)增加固定值1来获得,从而得到更新的状态索引min(σ+1,62)。以下表3是部分TransIdxLPS表的示例。
表3-TransIdxLPS
概率状态(σ) | 新状态TransIdxLPS[σ] |
… | … |
9 | 6 |
10 | 8 |
11 | 8 |
12 | 8 |
… | … |
上面针对图9A、图9B和图10的描述的技术仅表示CABAC的一个示例实施方式。应当理解的是,本公开的技术不仅限于所描述的CABAC的实施方式。例如,在较旧的BAC解决方案(例如,H.264/AVC中使用的BAC解决方案)中,对于低分辨率视频对表RangeLPS和TransIdxLPS进行调整(即通用中间格式(common intermediate format,CIF)和四分之一CIF(quarter-CIF,QCIF))视频)。使用HEVC和未来的编解码器(例如VVC),大量视频内容是高清(HD)的,在某些情况下还高于HD。高清或高于高清分辨率的视频内容与用于已有10年历史的用于开发H.264/AVC的QCIF序列的统计数据往往不同。这样,来自H.264/AVC的表RangeLPS和TransIdxLPS可能会以太快的方式导致状态之间的自适应。也就是说,概率状态之间的转换(尤其是发生LPS时)对于HD视频的更平滑、更高分辨率内容而言可能太大。因此,根据常规技术使用的概率模型对于HD和超HD内容可能不那么准确。另外,由于HD视频内容包括更大范围的像素值,因此H.264/AVC表没有包括足够的条目来顾及HD内容中可能存在的更极端的值。
这样,对于HEVC和比如VVC的未来编译码标准,可以修改RangeLPS和TransIdxLPS表以考虑此新内容的特点。特别地,用于HEVC和将来的编译码标准的BAC过程可以使用允许更慢的自适应过程并且可以考虑更多极端情况(即偏斜概率)的表。因此,作为一个示例,通过包含比在利用H.264/AVC或HEVC的BAC中使用的概率状态和范围更多的概率状态和范围,可以修改RangeLPS和TransIdxLPS表来实现这些目标。
图11是根据本公开的技术的可以被配置为执行CABAC的示例熵编码单元220的框图。语法元素418被输入到熵编码单元220中。如果语法元素已经是二进制值语法元素(即仅具有值0和1的语法元素),则可以跳过二值化步骤。如果语法元素是非二进制值语法元素(例如,由多个比特表示的语法元素,比如变换系数级别),则二值化器420对非二进制值语法元素进行二值化。二值化器420执行非二进制值语法元素到二元决策序列的映射。这些二元决策通常被称为“二进制数(bin)”。例如,对于变换系数级别,级别的值可以分解成连续的二进制数,每个二进制数指示系数级别的绝对值是否大于某个值。例如,二进制数0(有时被称为显著性标记)指示变换系数级别的绝对值是否大于0。二进制数1指示变换系数级别的绝对值是否大于1,诸如此类。可以为每个非二进制值的语法元素开发唯一的映射。
由二值化器420产生的每个二进制数被馈送到熵编码单元220的二进制算术编译码侧。也就是说,对于预定的非二进制值语法元素集,每个二进制类型(例如二进制数0)在下一个二进制数类型(例如二进制数1)之前被编译码。可以在常规模式或旁路模式下执行编译码。在旁路模式下,旁路编译码引擎426使用固定概率模型,例如使用格伦布-莱斯或指数格伦布编译码来执行算术编译码。旁路模式通常用于更可预测的语法元素。
常规模式下的编译码涉及执行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的范围值。然而,根据本公开的技术,概率状态索引σ被映射到用于RangeLPS表的分组索引,而不使用TransIdxLPS表430的所有可能的概率状态σ。也就是说,RangeLPS表428中的每个索引可以表示概率状态总数中的两个或更多个。概率状态索引σ到分组索引的映射可以是线性的(例如除以二),也可以是非线性的(例如对数函数或映射表)。
在本公开的其他示例中,可以通过设置参数α大于0.9493来减小连续概率状态之间的差异。在一个示例中,α=0.9689。在本公开的另一示例中,LPS发生的最高概率(p0)可以设置为小于0.5。在一个示例中,p0可以等于0.493。
根据本公开的一种或多种技术,与在二进制算术编译码过程中使用用于更新概率状态的变量的相同值(例如窗口尺寸、缩放因子(α)以及概率更新速度中的一个或多个)相反,熵编码单元220可以对于不同的上下文模型和/或不同的语法元素使用变量的不同值。例如,对于多个上下文模型中的上下文模型,熵编码单元220可以确定用于更新二进制算术编译码处理中的概率状态的变量的值并且基于所确定的值来更新概率状态。
图12是根据本公开的技术的可以被配置为执行CABAC的示例熵解码单元302的框图。图12的熵解码单元302以与图11中描述的熵编码单元220相反的方式执行CABAC。来自比特流448的编译码比特被输入到熵解码单元302。基于编译码比特是使用旁路模式还是常规模式进行的熵编译码,将编译码比特馈送到上下文建模器450或旁路解码引擎452。如果编译码比特是以旁路模式进行的编译码,则旁路解码引擎452可以例如使用格伦布-莱斯或指数格伦布编译码来取得二进制值语法元素或非二进制语法元素的二进制数。
如果编译码比特是以常规模式进行的编译码,则上下文建模器450可以确定用于编译码比特的概率模型,并且常规解码引擎454可以解码编译码比特来产生非二进制值语法元素(或者如果是二进制值的,则是语法元素本身)的二进制数。在上下文建模器450确定了上下文模型和概率状态σ之后,常规解码引擎454对二进制数值执行BAC。根据本公开的技术,常规解码引擎454使用包括多于64个概率状态σ的TransIdxLPS表458执行BAC。在一个示例中,概率状态的数量是128,尽管可以定义其他数量的概率状态,与本公开的技术一致。TransIdxLPS表458用于确定在前一个二进制数(二进制数n)是LPS时哪个概率状态用于下一个二进制数(二进制数n+1)。常规解码引擎454还可以使用RangeLPS表456来确定给定特定概率状态σ的LPS的范围值。然而,根据本公开的技术,将概率状态索引σ映射到分组索引以在RangeLPS表456中使用,而不是使用TransIdxLPS表458的所有可能的概率状态σ。也就是说,RangeLPS表456中的每个索引可以表示概率状态总数中的两个或更多个。概率状态索引σ到分组索引的映射可以是线性的(例如除以二),也可以是非线性的(例如对数函数或映射表)。
在本公开的其他示例中,可以通过设置参数α大于0.9493来减小连续概率状态之间的差异。在一个示例中,α=0.9689。在本公开的另一示例中,LPS发生的最高概率(p0)可以设置为小于0.5。在一个示例中,p0可以等于0.493。
在常规解码引擎454解码了二进制数之后,逆二值化器460可以执行逆映射以将二进制数转换回为非二进制值语法元素的值。
图13是图示用于编码视频数据的当前块的视频编码器的示例操作的流程图。当前块可以包括当前CU。尽管针对视频编码器200(图1和7)进行了描述,但是应当理解的是,可以将其他设备配置为执行与图13类似的操作。
在此示例中,视频编码器200首先预测当前块(550)。例如,视频编码器200可以形成当前块的预测块。然后,视频编码器200可以计算用于当前块的残差块(552)。为了计算残差块,视频编码器200可以计算原始的、未编译码块与当前块的预测块之间的差。然后,视频编码器200可以对残差块的系数进行变换和量化(554)。接下来,视频编码器200可以扫描残差块的量化的变换系数(556)。在扫描期间或扫描之后,视频编码器200可以对系数进行熵编码(558)。例如,视频编码器200可以使用CAVLC或CABAC来编码系数。然后,视频编码器200可以输出块的熵编译码数据(560)。
图14是图示用于解码视频数据的当前块的视频解码器的示例操作的流程图。当前块可以包括当前CU。尽管针对视频编解码器300(图1和8)进行了描述,但是应当理解的是,可以将其他设备配置为执行与图14类似的操作。
视频解码器300可以接收当前块的熵编译码数据,比如熵编译码预测信息和对应于当前块的残差块的系数的熵编译码数据(570)。视频解码器300可以对熵编译码数据进行熵解码来确定当前块的预测信息并且再现残差块的系数(572)。视频解码器300可以例如使用当前块的预测信息所指示的帧内或帧间预测模式来预测当前块以计算当前块的预测块(574)。然后,视频解码器300可以对再现系数进行逆扫描(576)来创建量化的变换系数的块。然后,视频解码器300可以对系数进行逆量化和逆变换来产生残差块(578)。视频解码器300可以通过组合预测块和残差块来最终解码当前块(580)。
图15是图示用于编码视频数据的当前块的视频编码器的示例操作的流程图。当前块可以包括当前CU。尽管针对视频编码器200(图1和7)进行了描述,但是应当理解的是,可以将其他设备配置为执行与图15类似的操作。
在图15的示例中,视频编码器200确定用于第一解码通路的常规编译码二进制数的阈值数量(600)。对于第一系数集,视频编码器200对系数组的语法元素进行上下文编码,直到达到常规编译码二进制数的阈值数量(602)。上下文编码的语法元素包括一个或多个显著性标志,一个或多个奇偶性级别标志以及一个或多个第一标志,一个或多个显著性标志中的每一个指示系数的绝对级别是否等于零,一个或多个奇偶性级别标志中的每一个指示系数是否具有是偶数或奇数的绝对级别,以及一个或多个第一标志中的每一个标志指示系数是否具有大于2的绝对级别。
响应于达到常规编译码二进制数的阈值数量,对于第二系数集,对附加语法元素进行旁路编码,其中,对附加语法元素进行旁路编码包括,对于第二系数集的系数,基于该系数的邻近系数的绝对值的和推导用于莱斯参数的值(604)。基于用于莱斯参数的值,视频编码器200可以在使用格伦布-莱斯编译码对系数的值进行旁路编码或使用指数-格伦布编译码对系数的值进行旁路编码之间进行选择。
视频编码器200可以从查找表确定莱斯参数的值。视频编码器200可以基于第二系数集的系数周围的邻域中的系数的绝对值的和来识别查找表中对应于用于莱斯参数的值的条目。邻域可以例如包括五个系数,并且五个系数可以包括与第二系数集的系数邻近的三个系数。
为了对系数组的语法元素进行上下文编码,视频编码器200可以执行CABAC以编码系数组的语法元素。为了对系数组的语法元素进行上下文编码直到达到常规编译码二进制数的阈值数量,视频编码器200可以在编译码第一系数集的系数的语法元素和上下文编码第一系数集的一个或多个剩余语法元素时确定已经达到了常规编译码二进制数的阈值数量。视频编码器200可以输出包括上下文编码的语法元素和旁路编码的附加语法元素的编码视频数据的比特流。
图16是图示用于解码视频数据的当前块的视频解码器的示例操作的流程图。当前块可以包括当前CU。尽管针对视频编解码器300(图1和8)进行了描述,但是应当理解的是,可以将其他设备配置为执行与图16类似的操作。
在图16的示例中,视频解码器300确定用于第一解码通路的常规编译码二进制数的阈值数量(610)。对于第一系数集,对系数组的语法元素进行上下文解码,直到达到常规编译码二进制数的阈值数量(612)。上下文解码的语法元素可以例如包括一个或多个显著性标志,一个或多个奇偶性级别标志以及一个或多个第一标志,一个或多个显著性标志中的每一个指示系数的绝对级别是否相等,一个或多个奇偶性级别标志中的每一个指示系数是否具有是偶数或奇数的绝对级别,以及一个或多个第一标志中的每一个指示系数是否具有大于2的绝对级别。
为了对系数组的语法元素进行上下文解码,视频解码器300可以执行CABAC以解码系数组的语法元素。为了对系数组的语法元素进行上下文解码直到达到常规编译码二进制数的阈值数量,视频解码器300可以在解码第一系数集的系数的语法元素和上下文解码第一系数集的系数的一个或多个剩余语法元素时确定已经达到了常规编译码二进制数的阈值数量。
响应于达到常规编译码二进制数的阈值数量,对于第二系数集,视频解码器300旁路解码附加语法元素(614)。为了旁路解码附加语法元素,对于第二系数集的系数,视频解码器300基于该系数的邻近系数的绝对值的和推导用于莱斯参数的值。视频解码器300可以从查找表确定莱斯参数的值。视频解码器300可以基于第二系数集的系数周围的邻域中的系数的绝对值的和来识别查找表中对应于用于莱斯参数的值的条目。邻域可以例如包括五个系数,并且五个系数可以包括与第二系数集的系数邻近的三个系数。
视频解码器300基于上下文解码的语法元素来确定变换单元的第一系数集的值(616)。视频解码器300基于附加语法元素来确定变换单元的第二系数集的值(618)。基于用于莱斯参数的值,视频解码器300可以在使用格伦布-莱斯编译码来旁路解码系数的值或使用指数-格伦布编译码来旁路解码系数的值之间进行选择。
视频解码器300还可以基于第一系数集的值和第二系数集的值来确定解码的变换块;将解码的变换块加到预测块以确定重构块;对重构块执行一个或多个滤波操作以确定视频数据的解码块;以及输出包括视频数据的解码块的视频数据的解码图片。
应当认识到的是,取决于该示例,本文描述的任何技术的某些动作或事件可以以不同的顺序执行,可以被添加,合并或完全省略(例如,并非所有描述的动作或事件都是技术实践所必需的)。此外,在某些示例中,动作或事件可以例如通过多线程处理、中断处理或多个处理器并发地而不是顺序地执行。
在一个或多个示例中,可以以硬件,软件,固件或其任何组合来实现所描述的功能。如果以软件实现,则功能可以作为一个或多个指令或代码存储在计算机可读介质上或在计算机可读介质上传输,并且由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质,其对应于比如数据存储介质的有形介质,或者通信介质,包括例如根据通信协议来促进将计算机程序从一个地方传输到另一个地方的任何介质。以这种方式,计算机可读介质通常可以对应于(1)非暂时性的有形计算机可读存储介质,或者(2)例如信号或载波的通信介质。数据存储介质可以是可以由一台或多台计算机或一个或多个处理器访问以取得指令、代码和/或数据结构以实现本公开中描述的技术的任何可用介质。计算机程序产品可以包括计算机可读介质。
作为示例而非限制,这类计算机可读存储介质可以包括以下中的一个或多个:RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁性存储设备、闪存或可以用来以指令或数据结构的形式存储所需的程序代码并且可以由计算机访问的任何其他介质。而且,任何连接都适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或无线技术(比如红外、无线电和微波)从网站、服务器或其他远程源传输指令,则介质的定义包括同轴电缆、光纤电缆、双绞线、DSL或比如红外、无线电和微波的无线技术。然而,应当理解的是,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他瞬时介质,但是反而指向非瞬时的有形存储介质。本文使用的磁盘和光盘包括光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中磁盘通常以磁性方式复制数据,而光盘则通过激光光学方式复制数据。上述内容的组合也应包括在计算机可读介质的范围内。
指令可以由一个或多个处理器执行,比如一个或多个DSP、通用微处理器、ASIC、FPGA或其他等效的集成或离散逻辑电路。相应地,如本文所使用的术语“处理器”可以指任何前述结构或适合于实现本文描述的技术的任何其他结构。另外,在某些方面,本文描述的功能可以在配置用于编码和解码的专用硬件和/或软件模块内提供,或结合在组合式编解码器中。同样,这些技术可以在一个或多个电路或逻辑元件中完全实现。
本公开的技术可以在包括无线手持机、集成电路(IC)或一组IC(例如芯片组)的多种设备或装置中实现。在本发明中将各种组件、模块或单元描述为强调配置设备的功能方面为执行所揭示的技术,但不一定需要由不同硬件单元来实现。而是,如上所述,各种单元可以组合在编解码器硬件单元中,或者由一批互操作的硬件单元来提供,包括与合适的软件和/或固件结合的如上所述的一个或多个处理器。
已经描述了各种示例。这些和其他示例在如下权利要求的范围内。
Claims (32)
1.一种解码视频数据的方法,所述方法包括:
对于变换块,确定用于第一解码通路的常规编译码二进制数的阈值数量;
对于所述变换块的第一系数集,对系数组的语法元素进行上下文解码,直到达到常规编译码二进制数的所述阈值数量,其中,上下文解码的语法元素包括一个或多个显著性标志、一个或多个奇偶性级别标志以及一个或多个第一标志,其中,所述一个或多个显著性标志中的每一个指示系数的绝对级别是否等于零,所述一个或多个奇偶性级别标志中的每一个指示系数是否具有是偶数或奇数的绝对级别,以及所述一个或多个第一标志中的每一个指示系数是否具有大于2的绝对级别;
响应于达到常规编译码二进制数的所述阈值数量,对于所述变换块的第二系数集,对附加语法元素进行旁路解码,其中,对所述附加语法元素进行旁路解码包括,对于第二系数集的系数:
基于所述第二系数集的所述系数的邻近系数的绝对值的和推导用于莱斯参数的值;
基于所述用于莱斯参数的值,确定用于在使用格伦布-莱斯编译码对用于所述第二系数集的所述系数的值进行旁路解码和使用指数-格伦布编译码对用于所述第二系数集的所述系数的所述值进行旁路解码之间进行切换的可变阈值,其中,所述可变阈值对应于要使用格伦布-莱斯编译码进行解码的二进制数的可变数量;
基于所述可变阈值,确定是使用格伦布-莱斯编译码对用于所述第二系数集的所述系数的所述值进行旁路解码还是使用指数指数-格伦布编译码对用于所述第二系数集的所述系数的所述值进行旁路解码;
基于上下文解码的语法元素确定用于所述第一系数集的值;以及
基于所述附加语法元素确定用于所述第二系数集的值。
2.根据权利要求1所述的方法,还包括:
从查找表确定所述用于莱斯参数的值。
3.根据权利要求2所述的方法,还包括:
基于第二系数集的所述系数周围的邻域中的系数的绝对值的和,识别所述查找表中对应于所述用于莱斯参数的值的条目。
4.根据权利要求3所述的方法,其中,所述邻域包括五个系数。
5.根据权利要求4所述的方法,其中,所述五个系数包括与第二系数集的所述系数邻近的三个系数。
6.根据权利要求1所述的方法,其中,对所述系数组的语法元素进行上下文解码包括执行上下文自适应二进制算术解码以对所述系数组的语法元素进行解码。
7.根据权利要求1所述的方法,其中,对系数组的语法元素进行上下文解码直到达到常规编译码二进制数的所述阈值数量包括:
当对用于第一系数集的系数的语法元素进行编译码时,确定已经达到常规编译码二进制数的所述阈值数量;
对用于第一系数集的所述系数的一个或多个剩余语法元素进行上下文解码。
8.根据权利要求1所述的方法,还包括:
基于用于第一系数集的所述值和用于第二系数集的所述值确定解码的变换块;
将所述解码的变换块加到预测块来确定重构块;
对所述重构块执行一个或多个滤波操作以确定视频数据的解码块;以及
输出包括视频数据的所述解码块的视频数据的解码图片。
9.一种编码视频数据的方法,所述方法包括:
对于变换块,确定用于第一解码通路的常规编译码二进制数的阈值数量;
对于所述变换块的第一系数集,对系数组的语法元素进行上下文编码,直到达到常规编译码二进制数的所述阈值数量,其中,上下文编码的语法元素包括一个或多个显著性标志、一个或多个奇偶性级别标志以及一个或多个第一标志,其中,所述一个或多个显著性标志中的每一个指示系数的绝对级别是否等于零,所述一个或多个奇偶性级别标志中的每一个指示系数是否具有是偶数或奇数的绝对级别,以及所述一个或多个第一标志中的每一个指示系数是否具有大于2的绝对级别;
响应于达到常规编译码二进制数的所述阈值数量,对于所述变换块的第二系数集,对附加语法元素进行旁路编码,其中,对所述附加语法元素进行旁路编码包括,对于第二系数集的系数:
基于所述第二系数集的所述系数的邻近系数的绝对值的和推导用于莱斯参数的值;
基于所述用于莱斯参数的值,确定用于在使用格伦布-莱斯编译码对用于所述第二系数集的所述系数的值进行旁路解码和使用指数-格伦布编译码对用于所述第二系数集的所述系数的所述值进行旁路解码之间进行切换的可变阈值,其中,所述可变阈值对应于要使用格伦布-莱斯编译码进行解码的二进制数的可变数量;以及
基于所述可变阈值,确定是使用格伦布-莱斯编译码对用于所述第二系数集的所述系数的所述值进行旁路解码还是使用指数指数-格伦布编译码对用于所述第二系数集的所述系数的所述值进行旁路解码。
10.根据权利要求9所述的方法,还包括:
从查找表确定所述用于莱斯参数的值。
11.根据权利要求10所述的方法,还包括:
基于第二系数集的所述系数周围的邻域中的系数的绝对值的和,识别查找表中对应于所述用于莱斯参数的值的条目。
12.根据权利要求11所述的方法,其中,所述邻域包括五个系数。
13.根据权利要求12所述的方法,其中,所述五个系数包括与第二系数集的所述系数邻近的三个系数。
14.根据权利要求9所述的方法,其中,对所述系数组的语法元素进行上下文编码包括执行上下文自适应二进制算术编译码来对所述系数组的语法元素进行编码。
15.根据权利要求9所述的方法,其中,对系数组的语法元素进行上下文编码直到达到常规编译码二进制数的所述阈值数量包括:
当对用于第一系数集的系数的语法元素进行编译码时,确定已经达到常规编译码二进制数的所述阈值数量;
对用于第一系数集的所述系数的一个或多个剩余语法元素进行上下文编码。
16.根据权利要求9所述的方法,还包括:
输出包括上下文编码的语法元素和旁路编码的附加语法元素的编码视频数据的比特流。
17.一种用于解码视频数据的设备,所述设备包括:
存储器,被配置为存储视频数据;以及
一个或多个处理器,在电路中实现并且被配置为:
对于变换块,确定用于第一解码通路的常规编译码二进制数的阈值数量;
对于所述变换块的第一系数集,对系数组的语法元素进行上下文解码,直到达到常规编译码二进制数的所述阈值数量,其中,上下文解码的语法元素包括一个或多个显著性标志、一个或多个奇偶性级别标志以及一个或多个第一标志,其中,所述一个或多个显著性标志中的每一个指示系数的绝对级别是否等于零,所述一个或多个奇偶性级别标志中的每一个指示系数是否具有是偶数或奇数的绝对级别,以及所述一个或多个第一标志中的每一个指示系数是否具有大于2的绝对级别;
响应于达到常规编译码二进制数的所述阈值数量,对于所述变换块的第二系数集,对附加语法元素进行旁路解码,其中,为了对所述附加语法元素进行旁路解码,所述一个或多个处理器被配置为,对于第二系数集的系数:
基于所述第二系数集的所述系数的邻近系数的绝对值的和推导用于莱斯参数的值;
基于所述用于莱斯参数的值,确定用于在使用格伦布-莱斯编译码对用于所述第二系数集的所述系数的值进行旁路解码和使用指数-格伦布编译码对用于所述第二系数集的所述系数的所述值进行旁路解码之间进行切换的可变阈值,其中,所述可变阈值对应于要使用格伦布-莱斯编译码进行解码的二进制数的可变数量;
基于所述可变阈值,确定是使用格伦布-莱斯编译码对用于所述第二系数集的所述系数的所述值进行旁路解码还是使用指数指数-格伦布编译码对用于所述第二系数集的所述系数的所述值进行旁路解码;
基于上下文解码的语法元素确定用于所述第一系数集的值;以及
基于所述附加语法元素确定用于所述第二系数集的值。
18.根据权利要求17所述的设备,其中,所述一个或多个处理器还被配置为:
从查找表确定所述用于莱斯参数的值。
19.根据权利要求18所述的设备,其中,所述一个或多个处理器还被配置为:
基于第二系数集的所述系数周围的邻域中的系数的绝对值的和,识别所述查找表中对应于所述用于莱斯参数的值的条目。
20.根据权利要求19所述的设备,其中,所述邻域包括五个系数。
21.根据权利要求20所述的设备,其中,所述五个系数包括与第二系数集的所述系数邻近的三个系数。
22.根据权利要求17所述的设备,其中,为了对所述系数组的语法元素进行上下文解码,所述一个或多个处理器还被配置为
执行上下文自适应二进制算术解码以对所述系数组的语法元素进行解码。
23.根据权利要求17所述的设备,其中,为了对系数组的语法元素进行上下文解码直到达到常规编译码二进制数的所述阈值数量,所述一个或多个处理器还被配置为:
当对用于第一系数集的系数的语法元素进行编译码时,确定已经达到常规编译码二进制数的所述阈值数量;
对用于第一系数集的所述系数的一个或多个剩余语法元素进行上下文解码。
24.根据权利要求17所述的设备,其中,所述一个或多个处理器还被配置为:
基于用于第一系数集的所述值和用于第二系数集的所述值,确定解码的变换块;
将所述解码的变换块加到预测块以确定重构块;
对所述重构块执行一个或多个滤波操作以确定视频数据的解码块;以及
输出包括视频数据的所述解码块的视频数据的解码图片。
25.一种用于编码视频数据的设备,所述设备包括:
存储器,被配置为存储视频数据;以及
一个或多个处理器,在电路中实现并且被配置为:
对于变换块,确定用于第一解码通路的常规编译码二进制数的阈值数量;
对于所述变换块的第一系数集,对系数组的语法元素进行上下文编码,直到达到常规编译码二进制数的所述阈值数量,其中,上下文编码的语法元素包括一个或多个显著性标志、一个或多个奇偶性级别标志以及一个或多个第一标志,其中,所述一个或多个显著性标志中的每一个指示系数的绝对级别是否等于零,所述一个或多个奇偶性级别标志中的每一个指示系数是否具有是偶数或奇数的绝对级别,以及所述一个或多个第一标志中的每一个指示系数是否具有大于2的绝对级别;以及
响应于达到常规编译码二进制数的所述阈值数量,对于所述变换块的第二系数集,对附加语法元素进行旁路编码,其中,为了对所述附加语法元素进行旁路编码包括,所述一个或多个处理器还被配置为对于第二系数集的系数:
基于所述第二系数集的所述系数的邻近系数的绝对值的和推导用于莱斯参数的值;
基于所述用于莱斯参数的值,确定用于在使用格伦布-莱斯编译码对用于所述第二系数集的所述系数的值进行旁路解码和使用指数-格伦布编译码对用于所述第二系数集的所述系数的所述值进行旁路解码之间进行切换的可变阈值,其中,所述可变阈值对应于要使用格伦布-莱斯编译码进行解码的二进制数的可变数量;以及
基于所述可变阈值,确定是使用格伦布-莱斯编译码对用于所述第二系数集的所述系数的所述值进行旁路解码还是使用指数指数-格伦布编译码对用于所述第二系数集的所述系数的所述值进行旁路解码。
26.根据权利要求25所述的设备,其中,所述一个或多个处理器还被配置为:
从查找表确定所述用于莱斯参数的值。
27.根据权利要求26所述的设备,其中,所述一个或多个处理器还被配置为:
基于第二系数集的所述系数周围的邻域中的系数的绝对值的和,识别所述查找表中对应于所述用于莱斯参数的值的条目。
28.根据权利要求27所述的设备,其中,所述邻域包括五个系数。
29.根据权利要求28所述的设备,其中,所述五个系数包括与第二系数集的所述系数邻近的三个系数。
30.根据权利要求25所述的设备,其中,为了对所述系数组的语法元素进行上下文编码,所述一个或多个处理器被配置为执行上下文自适应二进制算术编译码来对所述系数组的语法元素进行编码。
31.根据权利要求25所述的设备,其中,为了对系数组的语法元素进行上下文编码直到达到常规编译码二进制数的所述阈值数量,所述一个或多个处理器被配置为:
当对用于第一系数集的系数的语法元素进行编译码时,确定已经达到常规编译码二进制数的所述阈值数量;
对用于第一系数集的所述系数的一个或多个剩余语法元素进行上下文编码。
32.根据权利要求25所述的设备,其中,所述一个或多个处理器还被配置为:
输出包括上下文编码的语法元素和旁路编码的附加语法元素的编码视频数据的比特流。
Applications Claiming Priority (15)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862727472P | 2018-09-05 | 2018-09-05 | |
US62/727,472 | 2018-09-05 | ||
US201862731667P | 2018-09-14 | 2018-09-14 | |
US62/731,667 | 2018-09-14 | ||
US201862776379P | 2018-12-06 | 2018-12-06 | |
US62/776,379 | 2018-12-06 | ||
US201962787681P | 2019-01-02 | 2019-01-02 | |
US62/787,681 | 2019-01-02 | ||
US201962788092P | 2019-01-03 | 2019-01-03 | |
US62/788,092 | 2019-01-03 | ||
US201962823537P | 2019-03-25 | 2019-03-25 | |
US62/823,537 | 2019-03-25 | ||
US16/560,907 | 2019-09-04 | ||
US16/560,907 US11336918B2 (en) | 2018-09-05 | 2019-09-04 | Regular coded bin reduction for coefficient coding |
PCT/US2019/049736 WO2020051324A1 (en) | 2018-09-05 | 2019-09-05 | Regular coded bin reduction for coefficient coding using threshold and rice parameter |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112640457A CN112640457A (zh) | 2021-04-09 |
CN112640457B true CN112640457B (zh) | 2023-08-01 |
Family
ID=69640218
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980056730.4A Active CN112640457B (zh) | 2018-09-05 | 2019-09-05 | 使用阈值和莱斯参数的用于系数编译码的常规编译码二进制数缩减 |
Country Status (7)
Country | Link |
---|---|
US (1) | US11336918B2 (zh) |
EP (1) | EP3847809A1 (zh) |
CN (1) | CN112640457B (zh) |
BR (1) | BR112021003315A2 (zh) |
SG (1) | SG11202100622RA (zh) |
TW (1) | TWI826519B (zh) |
WO (1) | WO2020051324A1 (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
BR122021008882B1 (pt) * | 2018-09-11 | 2021-12-21 | Lg Electronics Inc | Método de codificação residual e dispositivo para o mesmo |
KR20230175339A (ko) * | 2018-09-20 | 2023-12-29 | 엘지전자 주식회사 | 변환 계수 레벨 코딩 방법 및 그 장치 |
IL304931A (en) * | 2018-09-21 | 2023-10-01 | Guangdong Oppo Mobile Telecommunications Corp Ltd | A method of encoding/decoding image signals and a device therefor |
JP2022500966A (ja) * | 2018-09-24 | 2022-01-04 | フラウンホッファー−ゲゼルシャフト ツァ フェルダールング デァ アンゲヴァンテン フォアシュンク エー.ファオ | 従属スカラー量子化との組み合わせに使用する又はそれに適する変換係数の効率的な符号化 |
CN118075468A (zh) * | 2018-09-28 | 2024-05-24 | 松下电器(美国)知识产权公司 | 编码装置、解码装置、以及非暂时性的计算机可读取的记录介质 |
KR20240064730A (ko) | 2018-10-05 | 2024-05-13 | 티씨엘 킹 일렉트리컬 어플라이언시스 (후이저우) 컴퍼니 리미티드 | 영상 디코딩 및 인코딩 방법과 저장 매체 |
US10904548B2 (en) | 2018-12-06 | 2021-01-26 | Qualcomm Incorporated | Coefficient processing for video encoding and decoding |
US11134273B2 (en) | 2019-02-14 | 2021-09-28 | Qualcomm Incorporated | Regular coded bin reduction for coefficient coding |
CN113994679B (zh) * | 2019-06-21 | 2024-07-12 | 北京字节跳动网络技术有限公司 | 关于上下文编解码二进制位的数量的限制 |
WO2020263442A1 (en) * | 2019-06-24 | 2020-12-30 | Alibaba Group Holding Limited | Transform-skip residual coding of video data |
US11184642B2 (en) * | 2019-08-02 | 2021-11-23 | Mediatek Inc. | Methods and apparatus for simplification of coding residual blocks |
WO2021025485A1 (ko) * | 2019-08-06 | 2021-02-11 | 현대자동차주식회사 | 비디오 부호화 및 복호화를 위한 엔트로피 코딩 |
KR20220051341A (ko) * | 2019-08-31 | 2022-04-26 | 엘지전자 주식회사 | 비디오/영상 코딩 시스템에서 변환 계수 코딩 방법 및 장치 |
US20240080480A1 (en) * | 2019-10-07 | 2024-03-07 | Lg Electronics Inc. | Entropy coding method and device in video/image coding system |
GB2599447A (en) * | 2020-10-05 | 2022-04-06 | Sony Group Corp | Data encoding and decoding |
US11722672B2 (en) | 2020-10-06 | 2023-08-08 | Qualcomm Incorporated | Adaptively deriving rice parameter values for high bit-depth video coding |
CN116095329A (zh) * | 2021-02-21 | 2023-05-09 | 腾讯科技(深圳)有限公司 | 视频编解码方法、装置、计算机可读介质及电子设备 |
WO2023168257A2 (en) * | 2022-03-01 | 2023-09-07 | Innopeak Technology, Inc. | State transition of dependent quantization for aom enhanced compression model |
WO2024119419A1 (zh) * | 2022-12-07 | 2024-06-13 | Oppo广东移动通信有限公司 | 编解码方法、码流、编码器、解码器以及存储介质 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4277276A1 (en) | 2011-06-16 | 2023-11-15 | GE Video Compression, LLC | Entropy coding of motion vector differences |
US9357185B2 (en) | 2011-11-08 | 2016-05-31 | Qualcomm Incorporated | Context optimization for last significant coefficient position coding |
US9503717B2 (en) * | 2012-01-09 | 2016-11-22 | Texas Instruments Incorporated | Context adaptive binary arithmetic coding (CABAC) with scalable throughput and coding efficiency |
US10616581B2 (en) | 2012-01-19 | 2020-04-07 | Huawei Technologies Co., Ltd. | Modified coding for a transform skipped block for CABAC in HEVC |
PH12018500137A1 (en) * | 2012-01-20 | 2018-07-09 | Ge Video Compression Llc | Transform coefficient coding |
US9866829B2 (en) | 2012-01-22 | 2018-01-09 | Qualcomm Incorporated | Coding of syntax elements that correspond to coefficients of a coefficient block in video coding |
US10158855B2 (en) | 2012-03-08 | 2018-12-18 | Sun Patent Trust | Image decoding method, and image decoding apparatus using a selected context related to neighboring coefficients |
CN108347619B (zh) | 2012-04-11 | 2020-09-15 | 杜比国际公司 | 用于对与变换系数相关联的比特流进行编码和解码方法 |
KR101974320B1 (ko) | 2012-04-13 | 2019-04-30 | 캐논 가부시끼가이샤 | 비디오 데이터의 변환 유닛의 서브 블록을 인코딩 및 디코딩하는 방법, 장치 및 기록매체 |
US9313498B2 (en) * | 2012-04-16 | 2016-04-12 | Qualcomm Incorporated | Sign hiding techniques for quantized transform coefficients in video coding |
US9088769B2 (en) | 2012-06-28 | 2015-07-21 | Blackberry Limited | Reduced worst-case context-coded bins in video compression with parity hiding |
US9936200B2 (en) | 2013-04-12 | 2018-04-03 | Qualcomm Incorporated | Rice parameter update for coefficient level coding in video coding process |
US10021419B2 (en) * | 2013-07-12 | 2018-07-10 | Qualcomm Incorported | Rice parameter initialization for coefficient level coding in video coding process |
US11233998B2 (en) * | 2015-05-29 | 2022-01-25 | Qualcomm Incorporated | Coding data using an enhanced context-adaptive binary arithmetic coding (CABAC) design |
US10616604B2 (en) | 2015-09-01 | 2020-04-07 | Qualcomm Incorporated | Coefficient level coding in video coding |
US10904548B2 (en) | 2018-12-06 | 2021-01-26 | Qualcomm Incorporated | Coefficient processing for video encoding and decoding |
US11595656B2 (en) | 2019-01-25 | 2023-02-28 | Hfi Innovation Inc. | Method and apparatus of transform coefficient coding with TB-level constraint |
US11134273B2 (en) | 2019-02-14 | 2021-09-28 | Qualcomm Incorporated | Regular coded bin reduction for coefficient coding |
-
2019
- 2019-09-04 US US16/560,907 patent/US11336918B2/en active Active
- 2019-09-05 EP EP19770241.8A patent/EP3847809A1/en active Pending
- 2019-09-05 BR BR112021003315-7A patent/BR112021003315A2/pt unknown
- 2019-09-05 TW TW108132127A patent/TWI826519B/zh active
- 2019-09-05 SG SG11202100622RA patent/SG11202100622RA/en unknown
- 2019-09-05 WO PCT/US2019/049736 patent/WO2020051324A1/en unknown
- 2019-09-05 CN CN201980056730.4A patent/CN112640457B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
EP3847809A1 (en) | 2021-07-14 |
TWI826519B (zh) | 2023-12-21 |
SG11202100622RA (en) | 2021-04-29 |
BR112021003315A2 (pt) | 2021-05-11 |
US20200077117A1 (en) | 2020-03-05 |
WO2020051324A1 (en) | 2020-03-12 |
CN112640457A (zh) | 2021-04-09 |
US11336918B2 (en) | 2022-05-17 |
TW202019178A (zh) | 2020-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112640457B (zh) | 使用阈值和莱斯参数的用于系数编译码的常规编译码二进制数缩减 | |
CN113170138B (zh) | 使用阈值和莱斯参数进行系数解码的常规编译码二进制位缩减 | |
CN112534815B (zh) | 用于对视频数据进行编解码的方法和设备 | |
US11202100B2 (en) | Coefficient coding for transform skip mode | |
JP7509784B2 (ja) | 係数レベルのためのエスケープコーディング | |
US11470334B2 (en) | Rice parameter derivation for lossless/lossy coding modes for video coding | |
CN113875258A (zh) | 视频编解码中用于变换跳过模式的系数编解码 | |
CN118489246A (zh) | 用于视频译码的上下文自适应二进制算术译码(cabac)概率估计 | |
CN116458156A (zh) | 视频译码中的基于上下文的变换索引信令 | |
TWI848073B (zh) | 用於轉換跳過模式之係數寫碼 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40046176 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |