CN107071494B - 视频图像帧的二进制语法元素的生成方法和*** - Google Patents
视频图像帧的二进制语法元素的生成方法和*** Download PDFInfo
- Publication number
- CN107071494B CN107071494B CN201710321874.0A CN201710321874A CN107071494B CN 107071494 B CN107071494 B CN 107071494B CN 201710321874 A CN201710321874 A CN 201710321874A CN 107071494 B CN107071494 B CN 107071494B
- Authority
- CN
- China
- Prior art keywords
- syntactic element
- component
- groups
- sub
- residual error
- 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/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明涉及一种视频图像帧的二进制语法元素的生成方法和***,获取视频图像帧的待编码的语法元素,对其进行分组,采用并行的方式对各组语法元素组进行二值化处理,得到多个语法元素二值化比特流,经过缓存调度后生成符合二进制算术编码顺序的视频图像帧的二进制语法元素。在本发明中,充分利用了不同类型语法元素之间的独立性,对各语法元素进行分组,实现并行处理,克服了传统串行方式处理的效率低下问题;通过缓存可以克服语法元素二值化所产生不固定长比特的问题,实现稳定的多比特二进制语法元素的输出,提升了语法元素二值化的处理速度,为后续高效二进制算术编码提供了稳定高效的输入,从而提高CABAC整体的编码效率。
Description
技术领域
本发明涉及视频编码技术领域,特别是涉及一种视频图像帧的二进制语法元素的生成方法和***。
背景技术
由于视频中的原始图像数据量较大,如果直接对其进行传输,不仅需要较大的存储空间,而且对网络传输带宽的要求较高。因此,为了降低视频数据传输带宽,提高传输数据的码率,对视频图像进行压缩编码具有了很重要的意义。
目前,针对不同的应用场合、不同的码率要求,很多视频图像专家组进行长期的研究并确立了一些相关标准,其中包括JPEG、JPEG2000、MPEG1、MPEG2、MPEG4、H.261、H.263等等。AVC(Advanced Video Coding,高级视频编码)——也被称为ITU-T H.264建议和MPEG-4的第10部分的标准,简称为H.264。H.264比传统的MPEG-4第2部分的编码效率平均高出50%,同时,它比MPEG-4更容易推广。此外,H.264集中了以往标准的优点,并吸收了以往标准制定中积累的经验。
在H.264/AVC中,采用了两种熵编码方法——CAVLC(Context AdaptiveVariableLength Coding,基于上下文的可变长编码)和CABAC(ContextAdaptive BinaryArithmatic Coding,基于上下文的自适应二进制算术编码)。其中,CABAC采用高效的算术编码思想,同时充分考虑视频流相关统计特性,对不同的视频流能够自适应地调整,大大提高了编码效率;与CAVLC相比,采用CABAC编码可使平均比特率下降9%~14%,而且在低码率情况下其编码效率优势更为明显。然而,CABAC要用到大量的码表、上下文模型及中间变量等,比使用CAVLC要多大约10%的运算量,且需要更大的存储空间,这就增加了实现的复杂度,也因此成为H.264/AVC关键技术瓶颈之一。
总体而言,CABAC编码实现包含了两个组成部分——语法元素二值化与二进制算术编码。目前,关于CABAC二进制算术编码技术可支持每个周期处理3个bin的语法元素,间接地增强了H.264/AVC实时运算能力。
另一方面,作为编码器输出数据的基本单元,语法元素都是由若干比特组成,它表示某个特定的物理意义。因此,要使用二进制算术编码输出比特码流,就必须先把这些语法元素转换为二进制的一个个比特,这一过程就是语法元素二值化。然而,完成这一过程需要涉及一系列状态切换的调度以及变长二进制串的处理,目前关于这一部分技术大体有两种:其一是按串行方式顺序生成所有语法元素并转化成二进制串;其二是合并特定语法元素。上述的这两种技术各自都存在一些问题,前者的串行处理方式最多只支持每个周期生成1个bin的语法元素,后者的合并特定语法元素存在一定的局限性,很难保证生成稳定的多bin语法元素。与二进制算术编码稳定的多bin处理能力相比,传统的语法元素二值化生成技术很容易造成处理速度不匹配,导致CABAC整体的编码效率较低。
发明内容
基于此,有必要针对传统的语法元素二值化生成方式使CABAC整体的编码效率较低的问题,提供一种视频图像帧的二进制语法元素的生成方法和***。
一种视频图像帧的二进制语法元素的生成方法,包括以下步骤:
获取视频图像帧的待编码的语法元素,按照语法元素类别对待编码的语法元素进行分组,获得各组语法元素组;
同时对各语法元素组进行二值化处理,获得多个语法元素二值化比特流;
对各语法元素二值化比特流同时进行缓存,并按照二进制算术编码的比特处理速度对所有缓存的语法元素二值化比特流进行调度,生成符合二进制算术编码顺序的视频图像帧的二进制语法元素。
一种视频图像帧的二进制语法元素的生成***,包括:
获取分组单元,用于获取视频图像帧的待编码的语法元素,按照语法元素类别对待编码的语法元素进行分组,获得各组语法元素组;
二值化单元,用于同时对各语法元素组进行二值化处理,获得多个语法元素二值化比特流;
缓存单元,用于对各语法元素二值化比特流同时进行缓存;
调度单元,用于按照二进制算术编码的比特处理速度对所有缓存的语法元素二值化比特流进行调度,生成符合二进制算术编码顺序的视频图像帧的二进制语法元素。
根据上述本发明的视频图像帧的二进制语法元素的生成方法和***,其是获取视频图像帧的待编码的语法元素,对其进行分组,采用并行的方式对各组语法元素组进行二值化处理,得到多个语法元素二值化比特流,经过缓存调度后生成符合二进制算术编码顺序的视频图像帧的二进制语法元素。在本发明中,充分利用了不同类型语法元素之间的独立性,对各语法元素进行分组,实现并行处理,克服了传统串行方式处理的效率低下问题;通过缓存可以克服语法元素二值化所产生不固定长比特的问题,实现稳定的多比特二进制语法元素的输出;通过调度实现重新排序,保证了二进制语法元素编码顺序的正确性,从而保护了各语法元素之间的相关性。总体来说,本发明在保证语法元素编码顺序正确性的基础上,通过并行处理及缓存操作提升了语法元素二值化的处理速度,为后续高效二进制算术编码提供了稳定高效的输入,从而提高CABAC整体的编码效率。
附图说明
图1是其中一个实施例中视频图像帧的二进制语法元素的生成方法的流程示意图;
图2是其中一个实施例中视频图像帧的二进制语法元素的生成***的结构示意图;
图3是其中一个具体实施例中视频图像帧的二进制语法元素的生成***的结构示意图;
图4是其中一个具体实施例中语法元素分组结构示意图;
图5(a)、5(b)是Y分量、U分量和V分量示意图;
图6(a)、6(b)、6(c)是Y分量、U分量和V分量进行DC、AC部分分离的示意图;
图7是其中一个具体实施例中残差块数据语法元素组的组成示意图;
图8是其中一个具体实施例中残差块数据语法元素组的分组示意图;
图9是其中一个具体实施例中残差块数据语法元素组调度过程示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步的详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不限定本发明的保护范围。
参见图1所示,为本发明一个实施例的视频图像帧的二进制语法元素的生成方法的流程示意图。该实施例中的视频图像帧的二进制语法元素的生成方法包括以下步骤:
步骤S101:获取视频图像帧的待编码的语法元素,按照语法元素类别对待编码的语法元素进行分组,获得各组语法元素组;
步骤S102:同时对各语法元素组进行二值化处理,获得多个语法元素二值化比特流;
在本步骤中,采用并行方式对各语法元素组进行二值化处理,得到多个语法元素二值化比特流,以此可以缩短二值化处理的时间;
步骤S103:对各语法元素二值化比特流同时进行缓存,并按照二进制算术编码的比特处理速度对所有缓存的语法元素二值化比特流进行调度,生成符合二进制算术编码顺序的视频图像帧的二进制语法元素。
在本实施例中,获取视频图像帧的待编码的语法元素,对其进行分组,采用并行的方式对各组语法元素组进行二值化处理,得到多个语法元素二值化比特流,经过缓存调度后生成符合二进制算术编码顺序的视频图像帧的二进制语法元素。在本发明中,充分利用了不同类型语法元素之间的独立性,对各语法元素进行分组,实现并行处理,克服了传统串行方式处理的效率低下问题;通过缓存可以克服语法元素二值化所产生不固定长比特的问题,实现稳定的多比特二进制语法元素的输出;通过调度实现重新排序,保证了二进制语法元素编码顺序的正确性,从而保护了各语法元素之间的相关性。总体来说,本方案在保证语法元素编码顺序正确性的基础上,通过并行处理及缓存操作提升了语法元素二值化的处理速度,为后续高效二进制算术编码提供了稳定高效的输入,从而提高CABAC整体的编码效率。
在其中一个实施例中,各组语法元素组包括宏块类型语法元素组、宏块预测语法元素组、子宏块残差编码方案语法元素组和残差块数据语法元素组。
在本实施例中,根据宏块类型、宏块预测、子宏块残差编码方案、残差块数据这四种类别对语法元素进行分组,就可以包括视屏图像处理的所有语法元素,既可以处理所有的语法元素,同时避免并行处理的数量过多,降低对硬件的要求。
在其中一个实施例中,残差块数据语法元素组包括1个亮度YDC分量、16个亮度YAC分量、1个色度UDC分量、1个色度VDC分量、4个色度UAC分量和4个色度VAC分量;
按照语法元素类别对待编码的语法元素进行分组,获得各组语法元素组的步骤包括以下步骤:
对残差块数据语法元素组进行分组,获得五组子残差语法元素组;其中,一组子残差语法元素组包括1个亮度YDC分量、1个色度UDC分量和1个色度VDC分量;其他四组子残差语法元素组分别包括四个亮度YAC分量、1个色度UAC分量和1个色度VAC分量;
同时对各语法元素组进行二值化处理的步骤包括以下步骤:
同时对宏块类型语法元素组、宏块预测语法元素组、子宏块残差编码方案语法元素组和五组子残差语法元素组进行二值化处理。
在本实施例中,残差块数据语法元素组包括1个亮度YDC分量、16个亮度YAC分量、1个色度UDC分量、1个色度VDC分量、4个色度UAC分量和4个色度VAC分量;分量的数量多达27个,将其分成五组子残差语法元素组进行并行二值化处理,可以进一步提高在实际并行二值化处理的效率。
在其中一个实施例中,四个亮度YAC分量分别为第一亮度YAC分量、第二亮度YAC分量、第三亮度YAC分量、第四亮度YAC分量;
对一组子残差语法元素组进行二值化处理的步骤包括以下步骤:
依次对亮度YDC分量、色度UDC分量和色度VDC分量进行二值化处理;在前一分量对应的语法元素二值化比特流被读取和调度后,再进行后一分量的二值化处理;
对其他四组子残差语法元素组进行二值化处理的步骤包括以下步骤:
针对其他四组子残差语法元素组中的任意一组,依次对第一亮度YAC分量、第二亮度YAC分量、第三亮度YAC分量、第四亮度YAC分量、色度UAC分量和色度VAC分量进行二值化处理;在前一分量对应的语法元素二值化比特流被读取和调度后,再进行后一分量的二值化处理。
在本实施例中,各组语法元素组是同时进行二值化处理,为了生成符合二进制算术编码顺序的视频图像帧的二进制语法元素,按照二进制算术编码的比特处理速度对所有缓存的语法元素二值化比特流进行调度需要依次进行,每一种语法元素二值化比特流在两次调度之间相隔不定的处理时间,在这一处理时间内,足以完成对语法元素组中下一个语法元素的二值化处理,并不会影响整体的并行处理,还可以减少并行处理的负荷,避免数据交叠。
可选的,宏块类型语法元素组、宏块预测语法元素组、子宏块残差编码方案语法元素组中的各语法元素的二值化处理也是依次进行的。
在其中一个实施例中,按照二进制算术编码的比特处理速度对所有缓存的语法元素二值化比特流进行调度的步骤包括以下步骤:
在缓存的语法元素二值化比特流中的二值化比特数大于2时,对缓存的语法元素二值化比特流进行调度。
在本实施例中,由于目前二进制算术编码可支持每个周期处理3个bin的语法元素,因此可以在缓存的语法元素二值化比特流中的二值化比特数大于2时,对缓存的语法元素二值化比特流进行调度,与二进制算术编码的处理速度相匹配,进一步提高CABAC整体的编码效率。
在其中一个实施例中,对各语法元素二值化比特流同时进行缓存的步骤包括以下步骤:
通过不同的缓存模块对各语法元素二值化比特流同时进行缓存,其中,各缓存模块与各语法元素组一一对应;
按照二进制算术编码的比特处理速度对所有缓存的语法元素二值化比特流进行调度的步骤包括以下步骤:
设置分组选择指针,在开始对所有缓存的语法元素二值化比特流进行调度时,将分组选择指针依次指向宏块类型语法元素组的缓存模块、宏块预测语法元素组的缓存模块、子宏块残差编码方案语法元素组的缓存模块和五组子残差语法元素组的缓存模块,对分组选择指针指向的缓存模块中的语法元素二值化比特流进行读取。
在本实施例中,针对不同的语法元素组配置不同的缓存模块,并设置分组选择指针指向不同的缓存模块,可以提示当前调度读取的是何种语法元素组的语法元素二值化比特流,确定当前二进制算术编码的进程。
在其中一个实施例中,将分组选择指针依次指向五组子残差语法元素组的缓存模块,对分组选择指针指向的缓存模块中的语法元素二值化比特流进行读取的步骤包括以下步骤:
判断宏块类型是否为帧内16×16像素块,若是,则将分组选择指针指向一组子残差语法元素组对应的缓存模块,对一组子残差语法元素组对应的缓存模块中的亮度YDC分量的语法元素二值化比特流进行读取,并判断其他四组子残差语法元素组中的第一亮度YAC分量是否都为全零分量;
若否,则将分组选择指针依次指向其他四组子残差语法元素组对应的缓存模块,对其他四组子残差语法元素组对应的缓存模块中的第一亮度YAC分量的语法元素二值化比特流依次进行读取,并判断其他四组子残差语法元素组中的第二亮度YAC分量是否都为全零分量;
若否,则将分组选择指针依次指向其他四组子残差语法元素组对应的缓存模块,对其他四组子残差语法元素组对应的缓存模块中的第二亮度YAC分量的语法元素二值化比特流依次进行读取,并判断其他四组子残差语法元素组中的第三亮度YAC分量是否都为全零分量;
若否,则将分组选择指针依次指向其他四组子残差语法元素组对应的缓存模块,对其他四组子残差语法元素组对应的缓存模块中的第三亮度YAC分量的语法元素二值化比特流依次进行读取,并判断其他四组子残差语法元素组中的第四亮度YAC分量是否都为全零分量;
若否,则将分组选择指针依次指向其他四组子残差语法元素组对应的缓存模块,对其他四组子残差语法元素组对应的缓存模块中的第四亮度YAC分量的语法元素二值化比特流依次进行读取,并判断一组子残差语法元素组中的色度UDC分量和色度VDC分量是否都为全零分量;
若否,则将分组选择指针指向一组子残差语法元素组对应的缓存模块,对一组子残差语法元素组对应的缓存模块中的色度UDC分量和色度VDC分量的语法元素二值化比特流进行读取,并判断其他四组子残差语法元素组中的色度UAC分量和色度VAC分量是否都为全零分量;
若否,则将分组选择指针依次指向其他四组子残差语法元素组对应的缓存模块,对其他四组子残差语法元素组对应的缓存模块中的色度UAC分量和色度VAC分量的语法元素二值化比特流进行读取。
在本实施例中,对五组子残差语法元素组的缓存模块的数据,依照当前宏块和语法元素组的状态进行选择读取。视频图像的宏块的基本处理单元大小是16×16像素块,只有符合这一格式,才将分组选择指针指向一组子残差语法元素组对应的缓存模块并对其中的亮度YDC分量的语法元素二值化比特流进行读取,之后将分组选择指针指向其他四组子残差语法元素组对应的缓存模块,对其中属于非零分量的亮度YAC分量的语法元素二值化比特流进行有序读取,再将分组选择指针指向一组子残差语法元素组对应的缓存模块,对其中属于非零分量的色度UDC分量和色度VDC分量的语法元素二值化比特流进行有序读取,最后将分组选择指针指向其他四组子残差语法元素组对应的缓存模块,对其中属于非零分量的色度UAC分量和色度VAC分量的语法元素二值化比特流进行有序读取,实现对五组子残差语法元素组的缓存模块的数据的有序调度,使之符合二进制算术编码的要求,提高编码效率。
在其中一个实施例中,将分组选择指针依次指向五组子残差语法元素组的缓存模块,对分组选择指针指向的缓存模块中的语法元素二值化比特流进行读取的步骤包括以下步骤:
若宏块类型不是帧内16×16像素块,则执行判断其他四组子残差语法元素组中的第一亮度YAC分量是否都为全零分量的步骤;
若其他四组子残差语法元素组中的第一亮度YAC分量都为全零分量,则执行判断其他四组子残差语法元素组中的第二亮度YAC分量是否都为全零分量的步骤;
若其他四组子残差语法元素组中的第二亮度YAC分量都为全零分量,则执行判断其他四组子残差语法元素组中的第三亮度YAC分量是否都为全零分量的步骤;
若其他四组子残差语法元素组中的第三亮度YAC分量都为全零分量,则执行判断其他四组子残差语法元素组中的第四亮度YAC分量是否都为全零分量的步骤;
若其他四组子残差语法元素组中的第四亮度YAC分量都为全零分量,则执行判断一组子残差语法元素组中的色度UDC分量和色度VDC分量是否都为全零分量的步骤;
若一组子残差语法元素组中的色度UDC分量和色度VDC分量都为全零分量,则执行判断其他四组子残差语法元素组中的色度UAC分量和色度VAC分量是否都为全零分量的步骤。
在本实施例中,若宏块类型不是帧内16×16像素块,则不读取亮度YDC分量的语法元素二值化比特流,直接判断其他四组子残差语法元素组中的第一亮度YAC分量是否都为全零分量;在其他四组子残差语法元素组中的对应分量均为全零分量时,则不读取该分量的语法元素二值化比特流,直接判断其他四组子残差语法元素组中的下一分量是否都未全零分量;之后再判断一组子残差语法元素组中的色度UDC分量和色度VDC分量是否都为全零分量,在一组子残差语法元素组中的色度UDC分量和色度VDC分量都为全零分量时,则不读取色度UDC分量和色度VDC分量的语法元素二值化比特流,直接判断其他四组子残差语法元素组中的色度UAC分量和色度VAC分量是否都为全零分量。如此可以在遇到对应分量为全零分量的情况时,无需进行读取操作,加快生成二进制语法元素的进程。
在其中一个实施例中,宏块类型语法元素组包括帧内16×16像素块的亮度CBP、色度CBP和预测模式以及帧间像素块的分割方式;
宏块预测分组所包含的语法元素包括帧内4×4像素块的预测方式、帧间像素块的参考帧索引以及运动矢量差;
子宏块残差编码方案分组所包含的语法元素包括帧内4×4像素块的亮度CBP和色度CBP、帧间像素块的亮度CBP和色度CBP以及当前宏块量化参数残差。
在本实施例中,将帧内16×16像素块的亮度CBP、色度CBP和预测模式、帧间像素块的分割方式、帧内4×4像素块的预测方式、帧间像素块的参考帧索引、运动矢量差、帧内4×4像素块的亮度CBP和色度CBP、帧间像素块的亮度CBP和色度CBP以及当前宏块量化参数残差按照上述类别进行在分组,既考虑了语法元素之间的相关性,也充分利用了语法元素的独立性,可以使获得的语法元素二值化比特流更加稳定。
根据上述视频图像帧的二进制语法元素的生成方法,本发明实施例还提供一种视频图像帧的二进制语法元素的生成***,以下就本发明的视频图像帧的二进制语法元素的生成***的实施例进行详细说明。
参见图2所示,为本发明一个实施例的视频图像帧的二进制语法元素的生成***的结构示意图。该实施例中的视频图像帧的二进制语法元素的生成***包括:
获取分组单元210,用于获取视频图像帧的待编码的语法元素,按照语法元素类别对待编码的语法元素进行分组,获得各组语法元素组;
二值化单元220,用于同时对各语法元素组进行二值化处理,获得多个语法元素二值化比特流;
缓存单元230,用于对各语法元素二值化比特流同时进行缓存;
调度单元240,用于按照二进制算术编码的比特处理速度对所有缓存的语法元素二值化比特流进行调度,生成符合二进制算术编码顺序的视频图像帧的二进制语法元素。
在其中一个实施例中,各组语法元素组包括宏块类型语法元素组、宏块预测语法元素组、子宏块残差编码方案语法元素组和残差块数据语法元素组。
在其中一个实施例中,残差块数据语法元素组包括1个亮度YDC分量、16个亮度YAC分量、1个色度UDC分量、1个色度VDC分量、4个色度UAC分量和4个色度VAC分量;
获取分组单元210对残差块数据语法元素组进行分组,获得五组子残差语法元素组;其中,一组子残差语法元素组包括1个亮度YDC分量、1个色度UDC分量和1个色度VDC分量;其他四组子残差语法元素组分别包括四个亮度YAC分量、1个色度UAC分量和1个色度VAC分量;
二值化单元220同时对宏块类型语法元素组、宏块预测语法元素组、子宏块残差编码方案语法元素组和五组子残差语法元素组进行二值化处理。
在其中一个实施例中,四个亮度YAC分量分别为第一亮度YAC分量、第二亮度YAC分量、第三亮度YAC分量、第四亮度YAC分量;
二值化单元220依次对亮度YDC分量、色度UDC分量和色度VDC分量进行二值化处理;在前一分量对应的语法元素二值化比特流被调度后,再进行后一分量的二值化处理;针对其他四组子残差语法元素组中的任意一组,依次对第一亮度YAC分量、第二亮度YAC分量、第三亮度YAC分量、第四亮度YAC分量、色度UAC分量和色度VAC分量进行二值化处理;在前一分量对应的语法元素二值化比特流被调度后,再进行后一分量的二值化处理。
在其中一个实施例中,调度单元240在缓存的语法元素二值化比特流中的二值化比特数大于2时,对缓存的语法元素二值化比特流进行调度。
在其中一个实施例中,如图3所示,缓存单元230包括多个不同的缓存模块232,不同的缓存模,232对各语法元素二值化比特流同时进行缓存,其中,缓存模块232与语法元素二值化比特流一一对应;
调度单元240设置分组选择指针,在开始对所有缓存的语法元素二值化比特流进行调度时,将分组选择指针依次指向宏块类型语法元素组的缓存模块、宏块预测语法元素组的缓存模块、子宏块残差编码方案语法元素组的缓存模块和五组子残差语法元素组的缓存模块,对分组选择指针指向的缓存模块中的语法元素二值化比特流进行读取。
在其中一个实施例中,调度单元240判断宏块类型是否为帧内16×16像素块,若是,则将分组选择指针指向一组子残差语法元素组对应的缓存模块,对一组子残差语法元素组对应的缓存模块中的亮度YDC分量的语法元素二值化比特流进行读取,并判断其他四组子残差语法元素组中的第一亮度YAC分量是否都为全零分量;
若否,则将分组选择指针依次指向其他四组子残差语法元素组对应的缓存模块,对其他四组子残差语法元素组对应的缓存模块中的第一亮度YAC分量的语法元素二值化比特流依次进行读取,并判断其他四组子残差语法元素组中的第二亮度YAC分量是否都为全零分量;
若否,则将分组选择指针依次指向其他四组子残差语法元素组对应的缓存模块,对其他四组子残差语法元素组对应的缓存模块中的第二亮度YAC分量的语法元素二值化比特流依次进行读取,并判断其他四组子残差语法元素组中的第三亮度YAC分量是否都为全零分量;
若否,则将分组选择指针依次指向其他四组子残差语法元素组对应的缓存模块,对其他四组子残差语法元素组对应的缓存模块中的第三亮度YAC分量的语法元素二值化比特流依次进行读取,并判断其他四组子残差语法元素组中的第四亮度YAC分量是否都为全零分量;
若否,则将分组选择指针依次指向其他四组子残差语法元素组对应的缓存模块,对其他四组子残差语法元素组对应的缓存模块中的第四亮度YAC分量的语法元素二值化比特流依次进行读取,并判断一组子残差语法元素组中的色度UDC分量和色度VDC分量是否都为全零分量;
若否,则将分组选择指针指向一组子残差语法元素组对应的缓存模块,对一组子残差语法元素组对应的缓存模块中的色度UDC分量和色度VDC分量的语法元素二值化比特流进行读取,并判断其他四组子残差语法元素组中的色度UAC分量和色度VAC分量是否都为全零分量;
若否,则将分组选择指针依次指向其他四组子残差语法元素组对应的缓存模块,对其他四组子残差语法元素组对应的缓存模块中的色度UAC分量和色度VAC分量的语法元素二值化比特流进行读取。
在其中一个实施例中,调度单元240在宏块类型不是帧内16×16像素块时,执行判断其他四组子残差语法元素组中的第一亮度YAC分量是否都为全零分量的步骤;
在其他四组子残差语法元素组中的第一亮度YAC分量都为全零分量时,则执行判断其他四组子残差语法元素组中的第二亮度YAC分量是否都为全零分量的步骤;
在其他四组子残差语法元素组中的第二亮度YAC分量都为全零分量时,执行判断其他四组子残差语法元素组中的第三亮度YAC分量是否都为全零分量的步骤;
在其他四组子残差语法元素组中的第三亮度YAC分量都为全零分量时,执行判断其他四组子残差语法元素组中的第四亮度YAC分量是否都为全零分量的步骤;
在其他四组子残差语法元素组中的第四亮度YAC分量都为全零分量时,执行判断一组子残差语法元素组中的色度UDC分量和色度VDC分量是否都为全零分量的步骤。
在一组子残差语法元素组中的色度UDC分量和色度VDC分量都为全零分量时,执行判断其他四组子残差语法元素组中的色度UAC分量和色度VAC分量是否都为全零分量的步骤。
本发明的视频图像帧的二进制语法元素的生成***与本发明的视频图像帧的二进制语法元素的生成方法一一对应,在上述视频图像帧的二进制语法元素的生成方法的实施例中阐述的技术特征及其有益效果均适用于视频图像帧的二进制语法元素的生成***的实施例中。
在一个具体的实施例中,视频图像帧的二进制语法元素的生成方法的本质是并行生成二进制语法元素,主要通过把待编码的语法元素按照类别进行分组,分别对每个分组进行并行二值化。
视频图像帧的二进制语法元素的生成方法对应的***如图3所示,其中包括:并行二进制语法元素生成单元、多个缓存单元、缓存调度单元。
进一步的,上述的“按照类别”,是不限定具体的分类方法,原则上是可以把每两个相邻的语法元素分一组。但是考虑到实际硬件逻辑面积与速度的平衡性,在本发明中,会考虑语法元素相关性和独立性进行分组,如:宏块类型分组、宏块预测方式分组、子宏块残差编码方案(CBP)分组、残差块数据分组;
进一步的,上述的“二值化”,是H.264/AVC规定的一系列标准转换运算,其主要包括:一元(U)二值化、舍位一元(TU)二值化、串联一元/k阶顺序exp_golomb(UEGk)二值化、固定长度(FL)二值化;
通过缓存模块进行缓存,缓存模块主要由一定数量的寄存器组成,通过可以同时读写的方式,一方面在输入端接收并行输出的不定长二进制比特流,另一方面在输出端稳定地送出多个二进制语法元素。由于H.264标准中的句法都是经过精心设计的,构成句法的各语法元素都是相互依赖的,关联性很强。因此需要对缓存模块输出的二进制语法元素进行缓存调度,主要用于把多个缓存模块输出的并行二进制语法元素进行重新排序,组成一连串符合编码顺序的语法元素二进制比特,输出后进行后续算术编码;
进一步的,上述“重新排序”的顺序主要是指:先编码宏块类型语法元素,再编码宏块预测方式语法元素,然后编码子宏块残差编码方案(CBP)及量化参数偏移值(DQP)语法元素,最后再编码残差块数据语法元素。
本发明的视频图像帧的二进制语法元素的生成方法,充分利用了不同类型语法元素之间的独立性,对各语法元素进行分组,实现并行处理,克服了传统串行方式处理的效率低下问题;针对语法元素二值化所产生不固定长比特的问题,采用支持同时读写的缓存模块,实现了稳定的多比特语法元素的输出;最后,通过缓存调度进行重新排序操作,保证了语法元素编码顺序的正确性,从而保护了各语法元素之间的相关性。总体来说,本发明在保证语法元素编码顺序正确性的基础上,通过并行处理及缓存操作提升了语法元素二值化的处理速度,为后续高效二进制算术编码提供了稳定高效的输入。
在考虑到语法元素之间的相关性,并充分利用其独立性的基础上,图4提出了一种语法元素分组结构。
宏块类型分组所包含的语法元素有:帧内16×16块的亮度、色度CBP、预测模式,及帧间块的分割方式;
宏块预测分组所包含的语法元素有:帧内4×4块的预测方式,及帧间块的参考帧索引及运动矢量差MVD;
子宏块残差编码方案分组所包含的语法元素有:帧内4×4块的亮度、色度CBP,帧间块的亮度、色度CBP,及当前宏块量化参数残差(DQP);
残差块数据分组所包含的语法元素有:1个4×4的亮度YDC分量、16个4×4的亮度YAC分量、1个4×4的色度UDC分量、1个4×4的色度VDC分量、4个4×4的色度UAC分量和4个4×4的色度VAC分量。
一个宏块包含1个16×16像素大小的Y分量,1个8×8像素大小的U分量,1个8×8像素大小的V分量,Y分量为亮度分量,U分量和V分量均为色度分量,如图5(a)、图5(b)所示,其中Y分量、U分量和V分量均可以划分为4×4的像素块,CABAC残差编码的基本单元也是上述一个4×4像素块。为了编码压缩率增加,因此对Y分量、U分量和V分量进行DC、AC部分分离,具体如图6(a)、图6(b)、图6(c)所示,可以看到,DC部分就是把像素序号为0的部分分离出来,重新组成一个新的4x4像素块;AC部分则是去除DC像素后剩余的部分。
在H.264/AVC中,一个宏块的基本处理单元大小是16×16像素,上述前三个分组所包含的语法元素在每一个宏块只需要处理一次,而CABAC残差块语法元素基本处理单元大小为4×4像素,一个宏块的残差块组成如图7所示:1个4×4的亮度YDC分量、16个4×4的亮度YAC分量、1个4×4的色度UDC分量、1个4×4的色度VDC分量、4个4×4的色度UAC及4个4×4的色度VAC分量。因此,对于残差块数据语法元素,每一个宏块都需要最多要顺序处理27次。为了实现并行语法元素的处理,需要专门对残差块数据分组进行更进一步地分组。
图8给出了残差块数据子分组方法。
第一,把图7中YDC、UDC、VDC的4×4块语法元素组成子残差分组0;
第二,把图7中YAC0、YAC4、YAC8、YAC12、UAC0、VAC0的4×4块语法元素组成子残差分组1;
第三,把图7中YAC1、YAC5、YAC9、YAC13、UAC1、VAC1的4×4块语法元素组成子残差分组2;
第四,把图7中YAC2、YAC6、YAC10、YAC14、UAC2、VAC2的4×4块语法元素组成子残差分组3;
第五,把图7中YAC3、YAC7、YAC11、YAC15、UAC3、VAC3的4×4块语法元素组成子残差分组4;
根据图3、图4及图8,可以清晰地了解并行生成二进制语法元素的过程:在CABAC编码开始时,先读取待编码的语法元素(如宏块类型、宏块预测方式等等),然后根据上述分组方法把各个语法元素分成8个组,同时且独立地对各分组的语法元素进行二值化,然后把二值化后的比特流分别写入各自的缓存模块中。在实际使用情况中可以验证,通过这种分组并行二值化语法元素的机制,可以达到在对宏块预测分组进行二值化的过程中,同时完成图5中YDC、YAC0、YAC1、YAC2、YAC3块的二值化过程的效果。
由于采用了并行二值化的结构,多个语法元素二值化比特流会同时输出,为了保证数据不溢出,因此缓存模块非常必要。在实际工程应用中,使用FIFO(First Input FirstOutput,先入先出队列)模块作为缓存模块,整个缓存过程如下:每个FIFO模块都定义一个has_bit变量,用于表示现在FIFO模块存储二值化比特个数,当并行二值化输入一个bit的位流,就让has_bit自加1,当has_bit变量大于0就是表示FIFO里有二值化比特数,可以输出多个二值化比特进行算术编码。在本实际工程应用中,由于二进制算术编码最多支持每个周期处理3个二值化比特,所以FIFO模块也限制为一次最多输出3个二值化比特,例如:如果has_bit>=3,输出3bit;如果has_bit==2,则输出2bit;如果has_bit==1,则输出1bit;如果has_bit==0,表示FIFO中没有数据,没输出。从实际效果看,当完成子宏块残差编码方案的算术编码后,每个子残差分组对应的FIFO模块的has_bit都在30以上,可以每次稳定输出3个二值化比特。
由于CABAC采用了基于上下文的算术编码,两种不同语法元素的编码顺序的变化都会影响实际视频位流比特,即语法元素之间存在一定的相关性,因此本实施例使用了一个缓存调度单元,实现各个分组FIFO输出的切换与调度,一方面保护了语法元素编码顺序的正确性,另一方面实现了FIFO输出无缝切换,保证了稳定的输出输出。
其中,本实施例使用的调度流程如下:
在缓存调度模块设置一个分组选择指针sel,用于提示当前选择哪一个分组对应的FIFO输出;
编码一个宏块开始时,把sel指向宏块类型分组FIFO,一旦该分组FIFO中has_bit大于0,从该分组FIFO读取输出,送至算术编码;
当完成所有宏块类型语法元素二值化且该分组FIFO数据读取完后,把sel指向宏块预测方式分组FIFO,一旦该分组FIFO中has_bit大于0,从该分组FIFO读取输出,送至算术编码;
当完成所有宏块预测方式语法元素二值化且该分组FIFO数据读取完后,把sel指向子宏块残差编码方案分组FIFO,一旦该分组FIFO中has_bit大于0,从该分组FIFO读取输出,送至算术编码;
当完成所有子宏块残差编码方案语法元素二值化且该分组FIFO数据读取完后,把sel指向残差块数据分组FIFO,残差块数据子分组FIFO调度流程如图9所示:
CBP(coded block pattern)指亮度和色度分量的各小块的残差编码方案。所谓的残差方案包括:
(1)所有残差(包括DC、AC)都编码。
(2)只对DC系数编码。
(3)所有残差(包括DC、AC)都不编码。
具体来说,CBP一共有9bit,即CBP[8:0]。
CBP[0]:为1表示YAC0、YAC1、YAC2、YAC3至少有一个非零残差4x4块;为0表示YAC0、YAC1、YAC2、YAC3全部都是全零残差4x4块。
CBP[1]:为1表示YAC4、YAC5、YAC6、YAC7至少有一个非零残差4x4块;为0表示YAC4、YAC5、YAC6、YAC7全部都是全零残差4x4块。
CBP[2]:为1表示YAC8、YAC9、YAC10、YAC11至少有一个非零残差4x4块;为0表示YAC8、YAC9、YAC10、YAC11全部都是全零残差4x4块。
CBP[3]:为1表示YAC12、YAC13、YAC14、YAC15至少有一个非零残差4x4块;为0表示YAC12、YAC13、YAC14、YAC15全部都是全零残差4x4块。
CBP[5:4]:为0表示UAC0、UAC1、UAC2、UAC3、VAC0、VAC1、VAC2、VAC3、UDC、VDC全部都是全零残差4x4块;为1表示UDC、VDC至少有一个为非零残差4x4块,UAC0、UAC1、UAC2、UAC3、VAC0、VAC1、VAC2、VAC3全部都是全零残差4x4块;为2表示UAC0、UAC1、UAC2、UAC3、VAC0、VAC1、VAC2、VAC3至少有一个是非零残差4x4块,UDC、VDC至少有一个是非零残差4x4块;为3未定义。
CBP[6]:为1表示YDC为非零残差4x4块;为0表示YDC为全零残差4x4块。
CBP[7]:为1表示UDC为非零残差4x4块;为0表示UDC为全零残差4x4块。
CBP[8]:为1表示VDC为非零残差4x4块;为0表示VDC为全零残差4x4块。
首先,根据宏块类型进行分支:如果宏块类型为帧内16×16块,则sel指向YDC分组FIFO;否则需要进一步判断CBP的值,如果CBP[0]非零,则sel指向YAC0分组FIFO;否则如果CBP[1]非零,则sel指向YAC4分组FIFO;否则如果CBP[2]非零,则sel指向YAC8分组FIFO;否则如果CBP[3]非零,则sel指向YAC12分组FIFO;否则如果CBP[5:4]非零,则sel指向UDC分组FIFO;否则当前宏块残差语法元素结束。
当sel指向YDC分组FIFO时,在完成YDC语法元素二值化后且该分组FIFO数据读取完后,将sel指向YAC0分组FIFO。
当sel指向YAC0分组FIFO时,在完成YAC0语法元素二值化后且该分组FIFO数据读取完后,将sel指向YAC1分组FIFO。
当sel指向YAC1分组FIFO时,在完成YAC1语法元素二值化后且该分组FIFO数据读取完后,将sel指向YAC2分组FIFO。
当sel指向YAC2分组FIFO时,在完成YAC2语法元素二值化后且该分组FIFO数据读取完后,将sel指向YAC3分组FIFO。
当sel指向YAC3分组FIFO时,在完成YAC3语法元素二值化后且该分组FIFO数据读取完后,需要进一步判断CBP的值,如果CBP[1]非零,则sel指向YAC4分组FIFO;否则如果CBP[2]非零,则sel指向YAC8分组FIFO;否则如果CBP[3]非零,则sel指向YAC12分组FIFO;否则如果CBP[5:4]非零,则sel指向UDC分组FIFO;否则当前宏块残差语法元素结束。
当sel指向YAC4分组FIFO时,在完成YAC4语法元素二值化后且该分组FIFO数据读取完后,将sel指向YAC5分组FIFO。
当sel指向YAC5分组FIFO时,在完成YAC5语法元素二值化后且该分组FIFO数据读取完后,将sel指向YAC6分组FIFO。
当sel指向YAC6分组FIFO时,在完成YAC6语法元素二值化后且该分组FIFO数据读取完后,将sel指向YAC7分组FIFO。
当sel指向YAC7分组FIFO时,在完成YAC7语法元素二值化后且该分组FIFO数据读取完后,需要进一步判断CBP的值,如果CBP[2]非零,则sel指向YAC8分组FIFO;否则如果CBP[3]非零,则sel指向YAC12分组FIFO;否则如果CBP[5:4]非零,则sel指向UDC分组FIFO;否则当前宏块残差语法元素结束。
当sel指向YAC8分组FIFO时,在完成YAC8语法元素二值化后且该分组FIFO数据读取完后,将sel指向YAC9分组FIFO。
当sel指向YAC9分组FIFO时,在完成YAC9语法元素二值化后且该分组FIFO数据读取完后,将sel指向YAC10分组FIFO。
当sel指向YAC10分组FIFO时,在完成YAC10语法元素二值化后且该分组FIFO数据读取完后,将sel指向YAC11分组FIFO。
当sel指向YAC11分组FIFO时,在完成YAC11语法元素二值化后且该分组FIFO数据读取完后,需要进一步判断CBP的值,如果CBP[3]非零,则sel指向YAC12分组FIFO;否则如果CBP[5:4]非零,则sel指向UDC分组FIFO;否则当前宏块残差语法元素结束。
当sel指向YAC12分组FIFO时,在完成YAC12语法元素二值化后且该分组FIFO数据读取完后,将sel指向YAC13分组FIFO。
当sel指向YAC13分组FIFO时,在完成YAC13语法元素二值化后且该分组FIFO数据读取完后,将sel指向YAC14分组FIFO。
当sel指向YAC14分组FIFO时,在完成YAC14语法元素二值化后且该分组FIFO数据读取完后,将sel指向YAC15分组FIFO。
当sel指向YAC15分组FIFO时,在完成YAC11语法元素二值化后且该分组FIFO数据读取完后,需要进一步判断CBP的值,如果CBP[5:4]非零,则sel指向UDC分组FIFO;否则当前宏块残差语法元素结束。
当sel指向UDC分组FIFO时,在完成UDC语法元素二值化后且该分组FIFO数据读取完后,将sel指向VDC分组FIFO。
当sel指向VDC分组FIFO时,在完成VDC语法元素二值化后且该分组FIFO数据读取完后,将sel指向UAC0分组FIFO。
由于UAC0~UAC3与YAC0~YAC3的步骤一致,在此不重复。当完成UAC3语法元素二值化后且该分组FIFO数据读取完后,将sel指向VAC0分组FIFO。
由于VAC0~VAC3与YAC0~YAC3的步骤一致,在此不重复。当完成VAC3语法元素二值化后且该分组FIFO数据读取完后,所有残差块数据分组语法元素编码也就完成。
对上述流程需要说明的是:如图7所示,由于一个宏块27个4×4小块被分成5个子分组,可以知道多个4×4小块会共用同一个子分组,而每个子分组都是使用同一个FIFO缓存模块,因此同一个子分组中不同4×4小块不能同时二值化,否则在FIFO中的数据会出现不同4×4小块的数据交叠现象,为避免这现象,需要采用一些措施,具体以YAC0、YAC4、YAC8、YAC12、UAC0、VAC0组成的子残差分组1为例:
开始当前宏块编码时,先对YAC0进行二值化处理,并把所有位流写入对应FIFO中;
此时,后续YAC4、YAC8、YAC12、UAC0、VAC0不要启动二值化处理,先等到YAC0块FIFO的数据被读取完后,才启动YAC4二值化处理;
YAC4二值化完成后,再次等到FIFO里缓存的YAC4数据被读取完成后,再启动下一个4×4小块的二值化处理,后续4×4小块的处理同理,在此不进行重复。
进一步的,上述的处理方法仅针对同一个子残差分组中的4×4小块,对不同子残差分组之间无需处理。
进一步的,上述对于子残差分组的处理从实际应用的角度考虑并不会对本发明提出的并行处理产生负面的作用,原因在于:在读取完FIFO中的YAC0数据后,选择指针sel会指向YAC1、YAC2、YAC3对应的子分组进行处理,在这段时间内,已经有足够的时间供YAC4完成二值化处理,其余的块也是如此原理,在此不进行重复。
另外,每一个4×4小块中都包含全零标志位(coded_block_flag)、当前像素是否为零值标志位(significant_coeff_flag[i])、当前像素是否为当前4x4块最后的非零系数标志位(last_significant_coeff_flag[i])、残差绝对值减1的数值coeff_abs_level_minus_1[i]等语法元素需要编码;
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成。所述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,包括上述方法所述的步骤。所述的存储介质,包括:ROM/RAM、磁碟、光盘等。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (8)
1.一种视频图像帧的二进制语法元素的生成方法,包括以下步骤:
获取视频图像帧的待编码的语法元素,按照语法元素类别对所述待编码的语法元素进行分组,获得各组语法元素组;
同时对各所述语法元素组进行二值化处理,获得多个语法元素二值化比特流;
对各所述语法元素二值化比特流同时进行缓存,并按照二进制算术编码的比特处理速度对所有缓存的语法元素二值化比特流进行调度,生成符合二进制算术编码顺序的视频图像帧的二进制语法元素;
所述各组语法元素组包括宏块类型语法元素组、宏块预测语法元素组、子宏块残差编码方案语法元素组和残差块数据语法元素组;
所述残差块数据语法元素组包括1个亮度YDC分量、16个亮度YAC分量、1个色度UDC分量、1个色度VDC分量、4个色度UAC分量和4个色度VAC分量;
所述按照语法元素类别对所述待编码的语法元素进行分组,获得各组语法元素组的步骤包括以下步骤:
对所述残差块数据语法元素组进行分组,获得五组子残差语法元素组;其中,一组子残差语法元素组包括1个亮度YDC分量、1个色度UDC分量和1个色度VDC分量;其他四组子残差语法元素组分别包括四个亮度YAC分量、1个色度UAC分量和1个色度VAC分量;
所述同时对各所述语法元素组进行二值化处理的步骤包括以下步骤:
同时对宏块类型语法元素组、宏块预测语法元素组、子宏块残差编码方案语法元素组和五组子残差语法元素组进行二值化处理;
所述四个亮度YAC分量分别为第一亮度YAC分量、第二亮度YAC分量、第三亮度YAC分量、第四亮度YAC分量;
对所述一组子残差语法元素组进行二值化处理的步骤包括以下步骤:
依次对所述亮度YDC分量、所述色度UDC分量和所述色度VDC分量进行二值化处理;在前一分量对应的语法元素二值化比特流被调度后,再进行后一分量的二值化处理;
对所述其他四组子残差语法元素组进行二值化处理的步骤包括以下步骤:
针对所述其他四组子残差语法元素组中的任意一组,依次对所述第一亮度YAC分量、所述第二亮度YAC分量、所述第三亮度YAC分量、所述第四亮度YAC分量、所述色度UAC分量和所述色度VAC分量进行二值化处理;在前一分量对应的语法元素二值化比特流被调度后,再进行后一分量的二值化处理;
所述对各所述语法元素二值化比特流同时进行缓存的步骤包括以下步骤:
通过不同的缓存模块对各所述语法元素二值化比特流同时进行缓存,其中,所述缓存模块与所述语法元素二值化比特流一一对应;
所述按照二进制算术编码的比特处理速度对所有缓存的语法元素二值化比特流进行调度的步骤包括以下步骤:
设置分组选择指针,在开始对所有缓存的语法元素二值化比特流进行调度时,将所述分组选择指针依次指向所述宏块类型语法元素组的缓存模块、所述宏块预测语法元素组的缓存模块、所述子宏块残差编码方案语法元素组的缓存模块和五组子残差语法元素组的缓存模块,对所述分组选择指针指向的缓存模块中的语法元素二值化比特流进行读取;
将所述分组选择指针依次指向五组子残差语法元素组的缓存模块,对所述分组选择指针指向的缓存模块中的语法元素二值化比特流进行读取的步骤包括以下步骤:
判断宏块类型是否为帧内16×16像素块,若是,则将所述分组选择指针指向所述一组子残差语法元素组对应的缓存模块,对所述一组子残差语法元素组对应的缓存模块中的亮度YDC分量的语法元素二值化比特流进行读取,并判断所述其他四组子残差语法元素组中的第一亮度YAC分量是否都为全零分量;
若否,则将所述分组选择指针依次指向所述其他四组子残差语法元素组对应的缓存模块,对所述其他四组子残差语法元素组对应的缓存模块中的第一亮度YAC分量的语法元素二值化比特流依次进行读取,并判断所述其他四组子残差语法元素组中的第二亮度YAC分量是否都为全零分量;
若否,则将所述分组选择指针依次指向所述其他四组子残差语法元素组对应的缓存模块,对所述其他四组子残差语法元素组对应的缓存模块中的第二亮度YAC分量的语法元素二值化比特流依次进行读取,并判断所述其他四组子残差语法元素组中的第三亮度YAC分量是否都为全零分量;
若否,则将所述分组选择指针依次指向所述其他四组子残差语法元素组对应的缓存模块,对所述其他四组子残差语法元素组对应的缓存模块中的第三亮度YAC分量的语法元素二值化比特流依次进行读取,并判断所述其他四组子残差语法元素组中的第四亮度YAC分量是否都为全零分量;
若否,则将所述分组选择指针依次指向所述其他四组子残差语法元素组对应的缓存模块,对所述其他四组子残差语法元素组对应的缓存模块中的第四亮度YAC分量的语法元素二值化比特流依次进行读取,并判断所述一组子残差语法元素组中的色度UDC分量和色度VDC分量是否都为全零分量;
若否,则将所述分组选择指针指向所述一组子残差语法元素组对应的缓存模块,对所述一组子残差语法元素组对应的缓存模块中的色度UDC分量和色度VDC分量的语法元素二值化比特流进行读取,并判断所述其他四组子残差语法元素组中的色度UAC分量和色度VAC分量是否都为全零分量;
若否,则将所述分组选择指针依次指向所述其他四组子残差语法元素组对应的缓存模块,对所述其他四组子残差语法元素组对应的缓存模块中的色度UAC分量和色度VAC分量的语法元素二值化比特流进行读取。
2.根据权利要求1所述的视频图像帧的二进制语法元素的生成方法,其特征在于,将所述分组选择指针依次指向五组子残差语法元素组的缓存模块,对所述分组选择指针指向的缓存模块中的语法元素二值化比特流进行读取的步骤包括以下步骤:
若宏块类型不是帧内16×16像素块,则执行所述判断所述其他四组子残差语法元素组中的第一亮度YAC分量是否都为全零分量的步骤;
若所述其他四组子残差语法元素组中的第一亮度YAC分量都为全零分量,则执行所述判断所述其他四组子残差语法元素组中的第二亮度YAC分量是否都为全零分量的步骤;
若所述其他四组子残差语法元素组中的第二亮度YAC分量都为全零分量,则执行所述判断所述其他四组子残差语法元素组中的第三亮度YAC分量是否都为全零分量的步骤;
若所述其他四组子残差语法元素组中的第三亮度YAC分量都为全零分量,则执行所述判断所述其他四组子残差语法元素组中的第四亮度YAC分量是否都为全零分量的步骤;
若所述其他四组子残差语法元素组中的第四亮度YAC分量都为全零分量,则执行所述判断所述一组子残差语法元素组中的色度UDC分量和色度VDC分量是否都为全零分量的步骤;
若所述一组子残差语法元素组中的色度UDC分量和色度VDC分量都为全零分量,则执行所述判断所述其他四组子残差语法元素组中的色度UAC分量和色度VAC分量是否都为全零分量的步骤。
3.根据权利要求1所述的视频图像帧的二进制语法元素的生成方法,其特征在于,所述按照二进制算术编码的比特处理速度对所有缓存的语法元素二值化比特流进行调度的步骤包括以下步骤:
在缓存的语法元素二值化比特流中的二值化比特数大于2时,对缓存的语法元素二值化比特流进行调度。
4.根据权利要求1至3任意一项所述的视频图像帧的二进制语法元素的生成方法,其特征在于:
所述宏块类型语法元素组包括帧内16×16像素块的亮度CBP、色度CBP和预测模式以及帧间像素块的分割方式;
所述宏块预测语法元素组所包含的语法元素包括帧内4×4像素块的预测方式、帧间像素块的参考帧索引以及运动矢量差;
所述子宏块残差编码方案语法元素组所包含的语法元素包括帧内4×4像素块的亮度CBP和色度CBP、帧间像素块的亮度CBP和色度CBP以及当前宏块量化参数残差。
5.一种视频图像帧的二进制语法元素的生成***,其特征在于,包括:
获取分组单元,用于获取视频图像帧的待编码的语法元素,按照语法元素类别对所述待编码的语法元素进行分组,获得各组语法元素组;
二值化单元,用于同时对各所述语法元素组进行二值化处理,获得多个语法元素二值化比特流;
缓存单元,用于对各所述语法元素二值化比特流同时进行缓存;
调度单元,用于按照二进制算术编码的比特处理速度对所有缓存的语法元素二值化比特流进行调度,生成符合二进制算术编码顺序的视频图像帧的二进制语法元素;
所述各组语法元素组包括宏块类型语法元素组、宏块预测语法元素组、子宏块残差编码方案语法元素组和残差块数据语法元素组;
所述残差块数据语法元素组包括1个亮度YDC分量、16个亮度YAC分量、1个色度UDC分量、1个色度VDC分量、4个色度UAC分量和4个色度VAC分量;
所述获取分组单元还用于对所述残差块数据语法元素组进行分组,获得五组子残差语法元素组;其中,一组子残差语法元素组包括1个亮度YDC分量、1个色度UDC分量和1个色度VDC分量;其他四组子残差语法元素组分别包括四个亮度YAC分量、1个色度UAC分量和1个色度VAC分量;
所述二值化单元还用于同时对宏块类型语法元素组、宏块预测语法元素组、子宏块残差编码方案语法元素组和五组子残差语法元素组进行二值化处理;
所述四个亮度YAC分量分别为第一亮度YAC分量、第二亮度YAC分量、第三亮度YAC分量、第四亮度YAC分量;
所述二值化单元还用于依次对所述亮度YDC分量、所述色度UDC分量和所述色度VDC分量进行二值化处理;在前一分量对应的语法元素二值化比特流被调度后,再进行后一分量的二值化处理;针对所述其他四组子残差语法元素组中的任意一组,依次对所述第一亮度YAC分量、所述第二亮度YAC分量、所述第三亮度YAC分量、所述第四亮度YAC分量、所述色度UAC分量和所述色度VAC分量进行二值化处理;在前一分量对应的语法元素二值化比特流被调度后,再进行后一分量的二值化处理;
所述缓存单元包括多个不同的缓存模块,不同的缓存模块对各语法元素二值化比特流同时进行缓存,其中,缓存模块与语法元素二值化比特流一一对应;
所述调度单元还用于设置分组选择指针,在开始对所有缓存的语法元素二值化比特流进行调度时,将所述分组选择指针依次指向所述宏块类型语法元素组的缓存模块、所述宏块预测语法元素组的缓存模块、所述子宏块残差编码方案语法元素组的缓存模块和五组子残差语法元素组的缓存模块,对所述分组选择指针指向的缓存模块中的语法元素二值化比特流进行读取;
所述调度单元还用于判断宏块类型是否为帧内16×16像素块,若是,则将所述分组选择指针指向所述一组子残差语法元素组对应的缓存模块,对所述一组子残差语法元素组对应的缓存模块中的亮度YDC分量的语法元素二值化比特流进行读取,并判断所述其他四组子残差语法元素组中的第一亮度YAC分量是否都为全零分量;
若否,则将所述分组选择指针依次指向所述其他四组子残差语法元素组对应的缓存模块,对所述其他四组子残差语法元素组对应的缓存模块中的第一亮度YAC分量的语法元素二值化比特流依次进行读取,并判断所述其他四组子残差语法元素组中的第二亮度YAC分量是否都为全零分量;
若否,则将所述分组选择指针依次指向所述其他四组子残差语法元素组对应的缓存模块,对所述其他四组子残差语法元素组对应的缓存模块中的第二亮度YAC分量的语法元素二值化比特流依次进行读取,并判断所述其他四组子残差语法元素组中的第三亮度YAC分量是否都为全零分量;
若否,则将所述分组选择指针依次指向所述其他四组子残差语法元素组对应的缓存模块,对所述其他四组子残差语法元素组对应的缓存模块中的第三亮度YAC分量的语法元素二值化比特流依次进行读取,并判断所述其他四组子残差语法元素组中的第四亮度YAC分量是否都为全零分量;
若否,则将所述分组选择指针依次指向所述其他四组子残差语法元素组对应的缓存模块,对所述其他四组子残差语法元素组对应的缓存模块中的第四亮度YAC分量的语法元素二值化比特流依次进行读取,并判断所述一组子残差语法元素组中的色度UDC分量和色度VDC分量是否都为全零分量;
若否,则将所述分组选择指针指向所述一组子残差语法元素组对应的缓存模块,对所述一组子残差语法元素组对应的缓存模块中的色度UDC分量和色度VDC分量的语法元素二值化比特流进行读取,并判断所述其他四组子残差语法元素组中的色度UAC分量和色度VAC分量是否都为全零分量;
若否,则将所述分组选择指针依次指向所述其他四组子残差语法元素组对应的缓存模块,对所述其他四组子残差语法元素组对应的缓存模块中的色度UAC分量和色度VAC分量的语法元素二值化比特流进行读取。
6.根据权利要求5所述的视频图像帧的二进制语法元素的生成***,其特征在于,所述调度单元还用于在宏块类型不是帧内16×16像素块时,执行所述判断所述其他四组子残差语法元素组中的第一亮度YAC分量是否都为全零分量的步骤;
在所述其他四组子残差语法元素组中的第一亮度YAC分量都为全零分量时,执行所述判断所述其他四组子残差语法元素组中的第二亮度YAC分量是否都为全零分量的步骤;
在所述其他四组子残差语法元素组中的第二亮度YAC分量都为全零分量时,执行所述判断所述其他四组子残差语法元素组中的第三亮度YAC分量是否都为全零分量的步骤;
在所述其他四组子残差语法元素组中的第三亮度YAC分量都为全零分量时,执行所述判断所述其他四组子残差语法元素组中的第四亮度YAC分量是否都为全零分量的步骤;
在所述其他四组子残差语法元素组中的第四亮度YAC分量都为全零分量时,执行所述判断所述一组子残差语法元素组中的色度UDC分量和色度VDC分量是否都为全零分量的步骤;
在所述一组子残差语法元素组中的色度UDC分量和色度VDC分量都为全零分量时,执行所述判断所述其他四组子残差语法元素组中的色度UAC分量和色度VAC分量是否都为全零分量的步骤。
7.根据权利要求5所述的视频图像帧的二进制语法元素的生成***,其特征在于,所述调度单元还用于在缓存的语法元素二值化比特流中的二值化比特数大于2时,对缓存的语法元素二值化比特流进行调度。
8.根据权利要求5至7任意一项所述的视频图像帧的二进制语法元素的生成***,其特征在于:
所述宏块类型语法元素组包括帧内16×16像素块的亮度CBP、色度CBP和预测模式以及帧间像素块的分割方式;
所述宏块预测语法元素组所包含的语法元素包括帧内4×4像素块的预测方式、帧间像素块的参考帧索引以及运动矢量差;
所述子宏块残差编码方案语法元素组所包含的语法元素包括帧内4×4像素块的亮度CBP和色度CBP、帧间像素块的亮度CBP和色度CBP以及当前宏块量化参数残差。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710321874.0A CN107071494B (zh) | 2017-05-09 | 2017-05-09 | 视频图像帧的二进制语法元素的生成方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710321874.0A CN107071494B (zh) | 2017-05-09 | 2017-05-09 | 视频图像帧的二进制语法元素的生成方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107071494A CN107071494A (zh) | 2017-08-18 |
CN107071494B true CN107071494B (zh) | 2019-10-11 |
Family
ID=59596251
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710321874.0A Active CN107071494B (zh) | 2017-05-09 | 2017-05-09 | 视频图像帧的二进制语法元素的生成方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107071494B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107635141A (zh) * | 2017-10-24 | 2018-01-26 | 杭州师范大学 | 一种视频熵解码的方法与装置 |
CN110769273A (zh) * | 2018-07-27 | 2020-02-07 | 晨星半导体股份有限公司 | 高速缓存存取*** |
EP3994886A4 (en) | 2019-08-06 | 2022-12-28 | Beijing Bytedance Network Technology Co., Ltd. | VIDEO ZONE PARTITION ACCORDING TO COLOR FORMAT |
EP4008109A4 (en) * | 2019-09-02 | 2022-09-14 | Beijing Bytedance Network Technology Co., Ltd. | ENCODING MODE DETERMINATION BASED ON COLOR FORMAT |
CN118055248A (zh) | 2019-09-21 | 2024-05-17 | 北京字节跳动网络技术有限公司 | 处理视频数据的方法、装置以及计算机可读记录介质 |
EP4107957A4 (en) | 2020-03-21 | 2023-08-23 | Beijing Bytedance Network Technology Co., Ltd. | RESAMPLING REFERENCE IMAGE |
CN115699761A (zh) * | 2020-04-19 | 2023-02-03 | 抖音视界有限公司 | 变换跳过残差编解码 |
EP4154533A4 (en) | 2020-06-20 | 2023-11-01 | Beijing Bytedance Network Technology Co., Ltd. | CROSS-LAYER PREDICTION WITH DIFFERENT CODING BLOCK SIZE |
CN114531595B (zh) * | 2022-04-24 | 2022-08-09 | 浙江芯昇电子技术有限公司 | cabac二进制化和上下文模型产生的编码方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101068359A (zh) * | 2007-05-31 | 2007-11-07 | 北京中星微电子有限公司 | 算术编码中的概率模型存储方法 |
CN101076114A (zh) * | 2007-06-15 | 2007-11-21 | 上海富瀚微电子有限公司 | 一种上下文自适应二进制算术编码器及其方法 |
CN102231830A (zh) * | 2010-11-23 | 2011-11-02 | 浙江大学 | 用于上下文算术编解码的运算单元 |
CN103974090A (zh) * | 2013-01-24 | 2014-08-06 | 株式会社日立信息通信工程 | 图像编码装置 |
CN105025296A (zh) * | 2014-04-30 | 2015-11-04 | 北京大学 | 一种高级算术编码器及其实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9124872B2 (en) * | 2012-04-16 | 2015-09-01 | Qualcomm Incorporated | Coefficient groups and coefficient coding for coefficient scans |
-
2017
- 2017-05-09 CN CN201710321874.0A patent/CN107071494B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101068359A (zh) * | 2007-05-31 | 2007-11-07 | 北京中星微电子有限公司 | 算术编码中的概率模型存储方法 |
CN101076114A (zh) * | 2007-06-15 | 2007-11-21 | 上海富瀚微电子有限公司 | 一种上下文自适应二进制算术编码器及其方法 |
CN102231830A (zh) * | 2010-11-23 | 2011-11-02 | 浙江大学 | 用于上下文算术编解码的运算单元 |
CN103974090A (zh) * | 2013-01-24 | 2014-08-06 | 株式会社日立信息通信工程 | 图像编码装置 |
CN105025296A (zh) * | 2014-04-30 | 2015-11-04 | 北京大学 | 一种高级算术编码器及其实现方法 |
Non-Patent Citations (1)
Title |
---|
"一种用于并行H_264编码器的语_省略_分组并行算术编码器体系结构的评估";陈胜刚;《电子学报》;20120228;正文全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN107071494A (zh) | 2017-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107071494B (zh) | 视频图像帧的二进制语法元素的生成方法和*** | |
CN106658019B (zh) | 参考帧编解码的方法与装置 | |
CN104041031B (zh) | 视频编码和解码方法和使用该方法的装置 | |
CN104584560B (zh) | 在去块时使用色度量化参数偏移 | |
CN102238387B (zh) | 一种视频熵编码、熵解码方法、装置 | |
CN105659606B (zh) | 用于视频和图像编码和解码的方法、***和介质 | |
CN108464001A (zh) | 用于视频译码的多类型树框架 | |
CN107566848A (zh) | 编解码的方法及装置 | |
CN108605141A (zh) | 用于紧凑多遍变换的高效参数存储 | |
CN104853211A (zh) | 使用多种形式的参考像素存储空间的图像压缩方法和装置 | |
CN108924570A (zh) | 视频编解码方法、存储比特流方法、计算机可读存储介质 | |
WO2013109026A1 (ko) | 엔트로피 부호화/복호화 방법 및 그 장치 | |
JP2022537220A (ja) | 符号化・復号化の方法、装置、および記憶媒体 | |
CN103098463A (zh) | 视频压缩中的经译码块模式(cbp)的可变长度译码 | |
CN107071430A (zh) | 视频解码设备 | |
CN103190147A (zh) | 用于视频译码的语法元素的联合译码 | |
CN103959792B (zh) | 视频编码方法、视频解码方法以及实现该方法的装置 | |
CN101933331A (zh) | 视频编码装置、视频解码装置、视频编码方法、视频解码方法、视频编码或解码程序 | |
CN104160706A (zh) | 用于视频编码的方法以及用于其的装置、计算机程序产品、***和模块 | |
CN103918273A (zh) | 确定用于变换系数的二进制码字的方法 | |
CN107105288A (zh) | 基于帧间预测对视频信号进行解码的方法 | |
CN104581154B (zh) | 一种熵编码方法和熵编码器电路 | |
CN102088603A (zh) | 用于视频编码器的熵编码器及其实现方法 | |
CN105993173A (zh) | Hevc中cabac的变换跳过块的改进编码 | |
CN108449602A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder |
Address after: 519000 No. 333, Kexing Road, Xiangzhou District, Zhuhai City, Guangdong Province Patentee after: ZHUHAI JIELI TECHNOLOGY Co.,Ltd. Address before: Floor 1-107, building 904, ShiJiHua Road, Zhuhai City, Guangdong Province Patentee before: ZHUHAI JIELI TECHNOLOGY Co.,Ltd. |
|
CP02 | Change in the address of a patent holder |