CN104918048B - 适用于hevc标准的熵编码上下文概率模型建模模块设计方法 - Google Patents
适用于hevc标准的熵编码上下文概率模型建模模块设计方法 Download PDFInfo
- Publication number
- CN104918048B CN104918048B CN201510298837.3A CN201510298837A CN104918048B CN 104918048 B CN104918048 B CN 104918048B CN 201510298837 A CN201510298837 A CN 201510298837A CN 104918048 B CN104918048 B CN 104918048B
- Authority
- CN
- China
- Prior art keywords
- sram
- data
- modelings
- context probability
- context
- 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
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明属于数字高清视频压缩编解码技术领域,具体为一种适用于HEVC标准的熵编码上下文概率模型建模模块的设计方法。HEVC使用的基于上下文的二进制算术编码,并独特的设计了399个上下文概率模型。在实际编码中,不同的语法元素,相同的语法元素的二进制序列的不同位都可能使用不同的上下文概率模型。本发明使用HEVC标准的熵编码建立的399个上下文概率模型中的280个上下文概率模型,能够正确解码;这些上下文概率模型支持I帧与P帧;采用5块SRAM和2个寄存器存储相关上下文概率模型,并为SRAM设计仲裁结构,能够准确判断概率模型的地址和待写入的数据,并顺利读取数据。
Description
技术领域
本发明属于数字高清视频压缩编解码技术领域,针对HEVC视频编解码标准,具体涉及一种适用于HEVC标准的熵编码上下文概率模型建模模块的设计方法。
背景技术
作为下一代视频编解码标准,HEVC(High Efficiency Video Coding)是于2013年由国际电信组织(ITU)和运动图像专家组(MPEG)联合成立的组织JCTVC所提出。其目标是,与上一代标准H.264/AVC相比,在相同的视觉效果的前提下,比特率减少50%。
上一代视频编解码标准H.264/AVC采用了两种编码方式:基于上下文的可变长编码CAVLC和基于上下文的二进制算术编码CABAC。而在HEVC标准的软件模型HM前期版本中也是采用了这两种编码方式,只是在编码过程,编码语法元素上做了修改。但是大量测试发现,在相同的编码内容上,CABAC比CAVLC节省了8%~14%码流,因此在HM6.0以后HEVC只保留了CABAC一种编码方式而不再支持CAVLC编码。
在HEVC中采用的二进制算术编码模块是基于传统的算术编码改进而来。该编码方式有以下特点:
(1)无损编码方式,适用于图像压缩处理;
(2)被编码信息数据的符号序列表示成实数0和1之间的一个小数,无论信息有多长,其输出仅仅是一个数,而且是一个介于0和1之间的二进制小数;
(3)在编码过程中需要不断计算被编码字符的概率。
算术编码过程可总结如下:
(1)编码器在开始时将“当前间隔”[L,H]设置为[0,1];
(2)对每一个编码字符,编码器在当前间隔进行如下递归处理:
(a)将“当前间隔”按照各个编码字符的概率进行分割;
(b)选中当前待编码字符编码器的分割区间为“当前间隔”,并回到(a)继续编码;
(3)最后输出的“当前间隔”的下边界就是给定编码序列的算术编码。
在硬件当中,整数计算比浮点数计算简单方便,而且在计算编码字符的概率时,除法也需要消耗较大的资源,因此HEVC中采用的二进制算术编码对传统的算术编码进行了以下改进:
(1)编码器在开始时将“当前间隔”[0,1]改为[0,510];
(2)对当前的待编码字符概率计算由传统的除法运算改为查表计算,并设置了有64个状态的状态表,通过当前待编码字符在状态表中的索引查表计算概率;
(3)HEVC建立399个上下文概率模型,不同的语法元素,同一个语法元素二进制序列的不同位对应不同的上下文概率模型,通过概率模型查表可得到相应的状态表索引。
发明内容
本发明的目的在于提出一种工作频率高、吞吐率高的适用于HEVC标准的熵编码上下文概率模型建模模块的设计方法。
本发明提出熵编码上下文概率模型建模模块的设计方法,具体步骤为:
(1)HEVC标准的熵编码建立了399个上下文概率模型,本发明使用了其中的280个上下文概率模型,使用这些上下文概率模型进行编码能够正确解码。在HEVC中有三种类型帧:I帧,P帧,B帧,这三种帧一共使用399个上下文概率模型,而本发明支持的I帧与P帧,使用了其中的280个上下文概率模型。
(2)使用5块双端口SRAM 以及2个寄存器存储280个上下文概率模型,每块SRAM的深度都为32,宽度为7。280个上下文概率模型在SRAM中的分布见表1所示,其中,横向表头代表5块SRAM,竖向表头代表各SRAM的地址,表中斜杠“/”前面的数字表示I帧中存储的索引,斜杠“/”后面的数字表示P帧中存储的索引。本发明支持的I帧与P帧是独立的,不支持I帧中帧间预测,也不支持P帧中帧内预测,因此对于单独的I帧或P帧160个上下文概率模型已经足够,并不需要建立280个上下文概率模型。另外160个上下文概率模型在SRAM中的存放经过独特的设计以保证每个时钟周期都能对四组输入进行上下文建模。
(3)为避免SRAM读写冲突,为每块SRAM的读写地址设置了仲裁器,仲裁器对每个输入中的地址信息进行仲裁,判断不同的输入之间是否发生地址冲突(同一时钟周期出现一片 SRAM 有两个不同读地址信号)。 如果没有冲突现象,将直接根据当前地址去存储器中读取数据。
(4)以流水线方式连续的从SRAM或者寄存器中读写正确的数据。以流水线进行上下文概率模型建模时有这样一种情况:相邻的两个周期内需要从同一块SRAM的同一个地址读取数据,这样第二个周期从SRAM中读取数据就是错误的,应该读取的是第一个周期读取的数据更新后的值。为避免这种情况发生,本发明对连续两个周期内的输入也进行了仲裁,即从第一个周期中读取的数据更新后的值与第二个周期读取的数据进行选择。
(5)每个时钟周期支持对4组输入进行上下文概率模型建模。这4组输入中可能存在这样一种情况:2或更多的输入需要从同一块SRAM的同一个地址读取数据,这样将导致这些输入读取数据都是相同的而发生错误。实际上第二个输入读取的数据应该是第一个读取的数据更新后的值,第三个输入取的数据应该是第二个读取的数据更新后的值,第四个输入取的数据应该是第三个读取的数据更新后的值。为保证读取数据的正确,本发明对同一周期从同一块SRAM的同一个地址读取数据的多个输入进行仲裁。
附图说明
图1:上下文建模过程仲裁存储结构。
具体实施方式
下面结合附图和附表,对本发明做进一步的描述。
附表1中横向表头代表5块SRAM,竖向表头代表各SRAM的地址,表中斜杠“/”前面的数字表示I帧中存储的索引,斜杠“/”后面的数字表示P帧中存储的索引。SRAM0~SRAM4中分别存储了32个上下文模型。对于语法元素sig_coff_flag的第33位和第34位存储在两个单独的寄存器中,其上下文模型索引为152/107与136/121,斜杠“/”前后数字分别表示I帧与P帧中存储的索引。
附图1是上下文建模过程仲裁存储结构。每个时钟有四组输入,其地址分别为Add0,Add1,Add2和Add3。首先是一个多路选择器,对地址进行仲裁,将从同一块SRAM读取数据的输入分到同一组。然后每组输入从相应的SRAM中读取数据,然后此数据与前一个周期从此SRAM中读取到的数据更新后的值进行仲裁,避免相邻的两个周期内从同一块SRAM的同一个地址读取数据情况下读取到错误的数据的现象发生。之后根据第一个输入读取到数据进行查表,对第一个读取到数据进行更新。然后对第二个输入进行仲裁,如果第一个输入和第二个输入从同一块SRAM的同一个地址读取数据,那么第二个输入则选择第一个输入读取到的数据更新后的值进行查表对数据进行更新,否则则选择从SRAM中读取到数据进行查表对数据更新。同理,对第三个输入进行仲裁,如果第三个输入和第二个输入从同一块SRAM的同一个地址读取数据,那么第三个输入则选择第二个输入读取到的数据更新后的值进行查表对数据进行更新,如果第三个输入和第一个输入从同一块SRAM的同一个地址读取数据,那么第三个输入则选择第一个输入读取到的数据更新后的值进行查表对数据进行更新,否则则选择从SRAM中读取到数据进行查表对数据更新。最后对第四个输入进行仲裁,如果第四个输入和第三个输入从同一块SRAM的同一个地址读取数据,那么第四个输入则选择第三个输入读取到的数据更新后的值进行查表对数据进行更新,如果第四个输入和第二个输入从同一块SRAM的同一个地址读取数据,那么第四个输入则选择第二个输入读取到的数据更新后的值进行查表对数据进行更新,如果第四个输入和第一个输入从同一块SRAM的同一个地址读取数据,那么第四个输入则选择第一个输入读取到的数据更新后的值进行查表对数据进行更新,否则则选择从SRAM中读取到数据进行查表对数据更新。
表1:280个上下文概率模型在SRAM中的分布
。
Claims (1)
1.一种适用于HEVC标准的熵编码上下文概率模型建模模块的设计方法,其特征在于具体步骤为:
(1)使用HEVC标准的熵编码建立的399个上下文概率模型中的280个上下文概率模型,能够正确解码;这些上下文概率模型支持I帧与P帧;
(2)使用5块双端口SRAM 以及2个寄存器存储280个上下文概率模型,每块SRAM的深度都为32,宽度为7;280个上下文概率模型在SRAM中的分布见表1所示,其中,横向表头代表5块SRAM,竖向表头代表各SRAM的地址,表中斜杠“/”前面的数字表示I帧中存储的索引,斜杠“/”后面的数字表示P帧中存储的索引;对于单独的I帧或P帧,160个上下文概率模型已经足够,另外,该160个上下文概率模型在SRAM中的存放经过独特的设计以保证每个时钟周期都能对四组输入进行上下文建模;
(3)为每块SRAM的读写地址设置仲裁器,以避免SRAM读写冲突,仲裁器对每个输入中的地址信息进行仲裁,判断不同的输入之间是否发生地址冲突,如果没有冲突现象,将直接根据当前地址去存储器中读取数据;
(4)以流水线方式连续的从SRAM或者寄存器中读写正确的数据,其中,对连续两个周期内的输入也设计仲裁器,进行仲裁,即从第一个周期中读取的数据更新后的值与第二个周期读取的数据进行选择;
(5)每个时钟周期支持对4组输入进行上下文概率模型建模;这4组输入中存在如下情况:2或更多的输入需要从同一块SRAM的同一个地址读取数据,这样将导致这些输入读取数据都是相同的而发生错误;实际上第二个输入读取的数据是第一个读取的数据更新后的值,第三个输入取的数据是第二个读取的数据更新后的值,第四个输入取的数据是第三个读取的数据更新后的值;因此,对同一周期从同一块SRAM的同一个地址读取数据的多个输入进行仲裁,以保证读取数据的正确;
表1:280个上下文概率模型在SRAM中的分布
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510298837.3A CN104918048B (zh) | 2015-06-03 | 2015-06-03 | 适用于hevc标准的熵编码上下文概率模型建模模块设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510298837.3A CN104918048B (zh) | 2015-06-03 | 2015-06-03 | 适用于hevc标准的熵编码上下文概率模型建模模块设计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104918048A CN104918048A (zh) | 2015-09-16 |
CN104918048B true CN104918048B (zh) | 2018-04-03 |
Family
ID=54086697
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510298837.3A Active CN104918048B (zh) | 2015-06-03 | 2015-06-03 | 适用于hevc标准的熵编码上下文概率模型建模模块设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104918048B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110096693B (zh) * | 2018-01-29 | 2024-05-28 | 北京搜狗科技发展有限公司 | 一种数据处理方法、装置和用于数据处理的装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102231830A (zh) * | 2010-11-23 | 2011-11-02 | 浙江大学 | 用于上下文算术编解码的运算单元 |
CN102447908A (zh) * | 2012-01-31 | 2012-05-09 | 北京工业大学 | 一种面向hevc参数编码的上下文简化方法 |
CN103826120A (zh) * | 2014-03-18 | 2014-05-28 | 山东大学 | 一种适用于hevc的码流解析器 |
CN103929642A (zh) * | 2014-04-24 | 2014-07-16 | 北京航空航天大学 | 一种hevc变换系数的熵编码上下文模型偏移值快速计算方法 |
-
2015
- 2015-06-03 CN CN201510298837.3A patent/CN104918048B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102231830A (zh) * | 2010-11-23 | 2011-11-02 | 浙江大学 | 用于上下文算术编解码的运算单元 |
CN102447908A (zh) * | 2012-01-31 | 2012-05-09 | 北京工业大学 | 一种面向hevc参数编码的上下文简化方法 |
CN103826120A (zh) * | 2014-03-18 | 2014-05-28 | 山东大学 | 一种适用于hevc的码流解析器 |
CN103929642A (zh) * | 2014-04-24 | 2014-07-16 | 北京航空航天大学 | 一种hevc变换系数的熵编码上下文模型偏移值快速计算方法 |
Non-Patent Citations (1)
Title |
---|
基于HEVC标准的全高清CABAC编码器设计;郭勇等;《电视技术》;20141231;第38卷(第9期);71-74 * |
Also Published As
Publication number | Publication date |
---|---|
CN104918048A (zh) | 2015-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7443318B2 (en) | High speed context memory implementation for H.264 | |
US8482440B2 (en) | Method for high throughput parallel AVC/H.264 context-based adaptive binary arithmetic coding decoder | |
CN102098519B (zh) | 视频编码方法、解码方法、编码及解码装置 | |
CN102176750B (zh) | 高性能自适应二进制算术编码器 | |
CN101164340A (zh) | Cabac解码系统及方法 | |
CN103858433A (zh) | 分层熵编码及解码 | |
CN101800559B (zh) | 一种基于tdmp的高速可配置qc-ldpc码解码器 | |
CN105187845B (zh) | 视频数据解码装置及解码方法 | |
WO2012048053A2 (en) | System and method for optimizing context-adaptive binary arithmetic coding | |
US7515761B2 (en) | Encoding device and method | |
CN108696282A (zh) | 一种高效低复杂度的qc-ldpc码全并行分层结构译码器 | |
US20150208075A1 (en) | Memory management of motion vectors in high efficiency video coding motion vector prediction | |
CN105874774B (zh) | 用于在帧的处理过程中保持计数表的计数表保持装置以及相关的保持方法 | |
KR20180077060A (ko) | 화소들의 리스트들을 인코딩 및 디코딩하는 방법 및 장치 | |
CN102340668B (zh) | 一种基于可重构技术的mpeg2亮度插值的实现方法 | |
CN100508604C (zh) | 算术编码电路和算术编码控制方法 | |
CN102547294A (zh) | 适用于h.264和hevc视频标准的cabac硬件解码器架构 | |
CN102932643B (zh) | 一种适用于hevc标准的扩展可变块运动估计电路 | |
CN104918048B (zh) | 适用于hevc标准的熵编码上下文概率模型建模模块设计方法 | |
CN103200407B (zh) | 一种自适应熵编码器 | |
CN102386935A (zh) | 维特比译码方法及维特比译码器 | |
JP2009081726A (ja) | エントロピー符号化装置、エントロピー符号化方法およびコンピュータプログラム | |
US10559093B2 (en) | Selecting encoding options | |
CN103428502B (zh) | 一种解码方法及解码系统 | |
Sheng et al. | An efficient VLSI architecture of VLD for AVS HDTV decoder |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |