CN103227924A - 一种算术编码器及编码方法 - Google Patents
一种算术编码器及编码方法 Download PDFInfo
- Publication number
- CN103227924A CN103227924A CN201310163055XA CN201310163055A CN103227924A CN 103227924 A CN103227924 A CN 103227924A CN 201310163055X A CN201310163055X A CN 201310163055XA CN 201310163055 A CN201310163055 A CN 201310163055A CN 103227924 A CN103227924 A CN 103227924A
- Authority
- CN
- China
- Prior art keywords
- binary
- context
- coding
- bin
- module
- 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.)
- Granted
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种算术编码器设计方法及实现装置,包括以下四种技术:front-buffer设计,算法结构联合优化、muti-bin处理技术以及混合上下文存储机制,其中front-buffer设计是为了解决一个宏块经过二进制转换后产生的二进制序列(bin)数会在很大的一个范围内波动,而二进制算术编码模块(BAC)在单位时间内处理的二进制序列(bin)数有限的问题;算法结构联合优化主要是采用time borrowing技术将low的处理安插在range的处理之后;muti-bin处理技术是利用MPS的计算较LPS简单得多,所以我们可以在一个时钟周期处理多个MPS;混合上下文存储机制是针对本发明2bins/cycle吞吐率的特定应用而发明的存储方法,该方法能在存储大量的上下文模型的同时,对这些模型进行快速的访存。本发明适用于多级流水线结构的编码,尤其适用于高清分辨率实时编码。
Description
技术领域
本发明涉及数字视频编解码技术领域,尤其涉及一种AVS高级熵编码器及编码方法。
背景技术
视频编码技术与视频编码标准是包括数字电视、网络视频、手机电视、MP3等音视频产业的技术基础。目前音视频产业可以选择的信源编码标准有四个:MPEG-2、MPEG-4、MPEG-4AVC(简称AVC,也称JVT、H.264)、AVS,其中AVS(Audio Video coding Standard,音视频编码标准)是《信息技术先进音视频编码》系列标准的简称,是我国具备自主知识产权的第二代信源编码标准,也是数字音视频产业的共性基础标准。这些信源编码标准普遍采用一种混合编码方法以去除庞大的信源数据间的冗余信息,如:空间冗余,时间冗余,信息熵冗余。
熵编码是视频编码***必不可少的一个关键环节,它负责利用信息熵原理去除信息熵冗余,已达到数据压缩的目的。其中,MPEG-2采用霍夫曼编码(Huffman Code),H.264和AVS采用基于上下文自适应变长编码(CAVLC)和基于上下文自适应二进制算术编码(CABAC)。CABAC是一种新型的高效熵编码方法,它的设计基于二进制化、上下文建模、二进制算术编码等3个步骤。CABAC以片为编码周期,将一整片的语法元素二进制化得到的bin进行区间迭代划分,从而得到一个子区间,然后在这个子区间中任取一个值代表该片语法元素,所以,从平均意义上讲,单独一个bin值编码后得到的bit数可能为分数,克服了CAVLC编码必须为单个符号分配整数码长的码字的缺点,更容易逼近极限熵,获得更高的编码效率,因此,AVS标准将采用CABAC进行编码的编码器称为高级熵编码器。但是,CABAC的计算复杂性明显高于CAVLC。
为了能实时的编码高清视频,我们需要增加编码器的吞吐率,同时必须兼顾***延迟,目前的算术编码器,大多关注于吞吐率,对***延迟关注得较少。
发明内容
为了解决以上问题,本发明的目的在于提供一种包括:front-buffer设计,算法结构联合优化、muti-bin处理技术以及混合上下文存储机制的编码器及编码方法。
在算术编码器的设计当中,由于二进制转换模块(binarizer)可以通过同时处理多个语法元素产生大量的二进制序列(bin),因而,二进制算术编码模块(BAC)的吞吐率成为了设计的瓶颈。为增加吞吐率,减小延迟,我们采用宏块级流水的方案,但是,由于一个宏块经过二进制转换后产生的二进制序列(bin)数会在很大的一个范围内波动,而二进制算术编码模块(BAC)在单位时间内处理的二进制序列(bin)数有限,于是我们在二进制转换模块(binarizer)和二进制算术编码模块(BAC)之间加入了一个buffer进行缓冲。当然,buffer越大,二进制算术编码模块(BAC)的输入越平滑,设计起来更容易,不过这样带来的负面影响是***的延迟越大,同时芯片面积也变大了。于是,我们需要做一个折中,不难证明,在图3中,如果对于任意的起始时间t,在一个固定的时间段T0内,存在一个输入buffer的最大总量Q0,那么我们只需将buffer的大小设置为Q0,并且将buffer的输出设为即可保证buffer永远不会上溢。
本发明构造的二进制算术编码模块(BAC)的采用固定2bins/cycle吞吐率的基本结构。二进制算术编码模块(BAC)的关键路径是迭代过程中LPS中low的计算,因而该设计的难点在于连续出现两个LPS如何在一个时钟周期内处理完成。通过观察我们发现,range的迭代计算只与自身有关,并且对它的操作时间远远小于对low的操作时间,所以,如图5所示,我们可以在第一次迭代计算完range后,提前完成low的一些计算步骤,这就可以减少第二次迭代计算时low的操作时间。此外,在对数域,range由整数部分和小数部分来表示,当LPS出现时,我们对range的整数部分进行重整化操作,这可以简化第二次迭代计算中low的计算。通过对这两个特征的有效利用,我们得到了一个固定2bins/cycle吞吐率,***延迟较1bin/cycle的编码器少33%的基本框架。
如图6所示,我们采用muti-bin处理技术进一步提高吞吐率。该项技术主要用于对产生bin数最多的残差系数优化。以AVS为例,我们将残差系数编码为Level(absLevel和sign)和Run数对,对其采用一元编码(unary)方案。bin indexes大于1的absLevel或者binindexes大于0的Run使用相同的上下文,我们称这样的bins为SCbins。由于SC bins由几个连续的0和一个1组成,所以大部分情况下,SC bins上下文的MPS是0,而MPS的计算较LPS简单得多,所以我们可以在一个时钟周期处理多个0。
本发明采用由context RAM和local context buffer组成的两级存储结构,并且由于本发明采用的二进制算术编码模块(BAC)的吞吐率为2bins/cycle,连续的两个bin可能属于不同的语法元素(SE),这样对context RAM的映射造成了一定困难,为此,我们设计了dual-port RAM和对应的local buffer。进一步观察,我们发现,属于不同的语法元素(SE)的两个bin的第二个bin的bin index往往是0(也就是说往往属于一个语法元素的第一个bin),于是本发明提出了如图7所示的混合存储机制:所有属于不同的语法元素(SE)的两个bin的第一个bin的上下文模型存储在寄存器组(register group)里,其他的上下文模型存储在一个dual-port RAM里,这样我们就能实现上下文模型的快速存储。
附图说明
图1是本发明在整个编码器中所处的位置;
图2是本发明采用的基于上下文的二进制算术编码器的主要功能模块框图;
图3是本发明提出的二进制算术编码模块(BAC)之前的buffer模型;
图4是本发明提出的算术编码器整体设计框架;
图5上半部分是本发明提出的对连续两个LPS的最坏情况的优化方法,下半部分是muti-bin示意时序图;
图6是本发明对残差系数采取的muti-bin具体实施方式;
图7是本发明提出的混合存储方法;
图8是本发明实施例中front buffer大小的选择依据。
具体实施方式
本实施例在整个视频编码***中的位置如图1所示,采用宏块级流水的方案,其具体模块架构如图4所示,其中A表示二进制转换模块(binarizer),B表示上下文管理模块(CM),C表示二进制算术编码模块(BAC)。下面分别就本发明在这3个模块中提出的技术方案作实例阐述。
由于一个宏块经过二进制转换后产生的二进制序列(bin)数会在很大的一个范围内波动,而二进制算术编码模块(BAC)在单位时间内处理的二进制序列(bin)数有限,于是我们在二进制转换模块(binarizer)和二进制算术编码模块(BAC)之间加入了一个buffer进行缓冲。当然,buffer越大,二进制算术编码模块(BAC)的输入越平滑,设计起来更容易,不过这样带来的负面影响是***的延迟越大,同时芯片面积也变大了。于是,我们需要做一个折中,不难证明,在图3中,如果对于任意的起始时间t,在一个固定的时间段T0内,存在一个输入buffer的最大总量Q0,那么我们只需将buffer的大小设置为Q0,并且将buffer的输出设为即可保证buffer永远不会上溢。于是,具体实施时我们就必须找到Q0和T0,为此我们测试了一系列的视频序列,具体结果如图8所示,从图中可以看出,本发明设计的T0采用编码一个宏块行(对于分辨率为1080P的视频序列来说为120个宏块)所需的时间,buffer大小Q0能存储100657个bin就可以了,为保险起见,本发明采纳的buffer能存储110000个bin。
本发明构造的二进制算术编码模块(BAC)的采用固定2bins/cycle吞吐率的基本结构。二进制算术编码模块(BAC)的关键路径是迭代过程中LPS中low的计算,因而该设计的难点在于连续出现两个LPS如何在一个时钟周期内处理完成。通过观察我们发现,range的迭代计算只与自身有关,并且对它的操作时间远远小于对low的操作时间,所以,如图5所示,我们可以在第一次迭代计算完range后,提前完成low的一些计算步骤,这就可以减少第二次迭代计算时low的操作时间。此外,在对数域,range由整数部分和小数部分来表示,当LPS出现时,我们对range的整数部分进行重整化操作,这可以简化第二次迭代计算中low的计算。通过对这两个特征的有效利用,我们得到了一个固定2bins/cycle吞吐率,***延迟较1bin/cycle的编码器少33%的基本框架。
如图6所示,我们采用muti-bin处理技术进一步提高吞吐率。该项技术主要用于对产生bin数最多的残差系数优化。以AVS为例,我们将残差系数编码为Level(absLevel和sign)和Run数对,对其采用一元编码(unary)方案。bin indexes大于1的absLevel或者bin indexes大于0的Run使用相同的上下文,我们称这样的bins为SC bins。由于SC bins由几个连续的0和一个1组成,所以大部分情况下,SC bins上下文的MPS是0,而MPS的计算较LPS简单得多,所以我们可以在一个时钟周期处理多个0。在本实施例中,考虑到与连续编码两个LPS的最坏情况的电路延迟相匹配,我们采用4-bin的MPS处理方案,可以在一个时钟周期内处理3-4个连续的MPS。本实施例采纳的muti-bin处理方案平均可以提高15%的吞吐率,由于量化系数(QP)变小时,残差系数变多,产生的bin数随之增多,所以,在量化系数(QP)变小时,该方案能提高的吞吐率越加明显。
本发明采用由context RAM和local context buffer组成的两级存储结构,并且由于本发明采用的二进制算术编码模块(BAC)的吞吐率为2bins/cycle,连续的两个bin可能属于不同的语法元素(SE),这样对context RAM的映射造成了一定困难,为此,我们设计了dual-port RAM和对应的local buffer。进一步观察,我们发现,属于不同的语法元素(SE)的两个bin的第二个bin的bin index往往是0(也就是说往往属于一个语法元素的第一个bin),于是本发明提出了如图7所示的混合存储方法:所有属于不同的语法元素(SE)的两个bin的第一个bin的上下文模型存储在寄存器组(register group)里,其他的上下文模型存储在一个dual-port RAM里,这样我们就能实现上下文模型的快速存储。具体到本发明采用的AVS标准,为了快速存储在一个时钟周期内连续编码的属于不同的语法元素(SE)的两个bin,我们分配了5个dual-port RAM和对应的local buffer。同时考虑到AVS标准中采用的上下文加权技术编码一个bin可能用到两个上下文模型,而在我们2bins/cycle的编码方法中不可能连续编码两个这样的bin,所以我们采用single-port RAM和对应的local buffer来存储这样的bin对应的上下文模型,总共我们使用了324个上下文模型。
最后应说明的是:显然,上述实施例仅仅是为清楚地说明本发明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引申出的显而易见的变化或变动仍处于本发明的保护范围之中。
Claims (7)
1.一种算术编码器,主要包括二进制转换模块、二进制算术编码模块和上下文建模模块,三者之间数据流相互独立,不存在反馈,采用三级流水线的方式实现,其特征在于:所述二进制转换模块的作用是将非二进制的语法元素唯一的映射为一个二进制序列,其中所述的非二进制的语法元素包括运动矢量、宏块类型、子宏块类型、参考帧号以及变换量化后的残差数据;所述上下文建模模块的作用是将已编码语法元素建立概率模型,用于当前语法元素的编码,在完成编码后,概率模型进行更新;所述二进制算术编码模块的作用是将二进制序列和为当前语法元素选择的上下文模型进行算术编码,所述二进制转换模块产生的二进制值和上下文建模模块提供的概率模型一起送入二进制算术编码模块,并根据二进制转换模块产生的二进制值更新上下文建模模块的上下文模型。
2.根据权利要求1所述的算术编码器,其特征在于:所述二进制转换模块能够同时处理多个语法元素,在其与二进制算术编码模块之间设有一个缓冲器即二进制值缓冲器,用于处理每个宏块产生的不稳定的二进制序列个数。
3.根据权利要求1所述的一种算术编码器,其特征在于:所述上下文建模模块采用一个缓冲器即SE line buffer,存储相邻语法元素值,用于上下文选择。
4.根据权利要求1所述的一种算术编码器,其特征在于:所述上下文建模模块采用两级存储,包括上下文RAM和本地缓存器,其中本地缓存器用于存储最近的会用到的上下文,上下文RAM用于存放所有的上下文信息。
5.根据权利要求1所述的一种算术编码器,其特征在于:所述二进制算术编码模块采用多比特的处理,充分的利用MPS即最大可能符号的计算复杂度远低于LPS即最小可能符号的计算复杂度这一特点。
6.根据权利要求5所述的一种算术编码器,其特征在于:所述多比特处理是对于连续两个LPS的处理方法利用range即范围的计算只依赖自身,并且range的计算处理时间远远低于low即下限的特点,在处理完range后,预处理low的部分操作。
7.一种算数编码方法,其特征在于:包括如下步骤
第一步:判断输入的语法元素是不是非二进制的语法元素,如果是二进制的语法元素,则跳过二进制转换模块,而非二进制的语法元素则需通过二进制转换模块进行二进制化;
第二步,第一步得到的二进制字符串,根据语法元素的类型选择上下文,然后二进制值和选择的上下文模型一起进入二进制算术编码模块;
第三步,根据语法元素的类型,决定是进行快速编码,还是直接进入旁路编码器,以固定的概率模型进行编码,然后输出编码码流,并且根据编码符号更新上下文模型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310163055.XA CN103227924B (zh) | 2013-05-07 | 2013-05-07 | 一种算术编码器及编码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310163055.XA CN103227924B (zh) | 2013-05-07 | 2013-05-07 | 一种算术编码器及编码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103227924A true CN103227924A (zh) | 2013-07-31 |
CN103227924B CN103227924B (zh) | 2016-08-03 |
Family
ID=48838161
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310163055.XA Active CN103227924B (zh) | 2013-05-07 | 2013-05-07 | 一种算术编码器及编码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103227924B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103873870A (zh) * | 2014-02-28 | 2014-06-18 | 芯原微电子(上海)有限公司 | 一种优化的aec解码器 |
CN104918049A (zh) * | 2015-06-03 | 2015-09-16 | 复旦大学 | 适用于hevc标准的二进制算术编码模块 |
CN105025296A (zh) * | 2014-04-30 | 2015-11-04 | 北京大学 | 一种高级算术编码器及其实现方法 |
CN107347159A (zh) * | 2016-05-05 | 2017-11-14 | 谷歌公司 | 使用动态参考运动矢量进行的运动矢量编码 |
WO2018127167A1 (en) * | 2017-01-06 | 2018-07-12 | Mediatek Inc. | Method and apparatus for range derivation in context adaptive binary arithmetic coding |
CN110419216A (zh) * | 2017-03-22 | 2019-11-05 | 高通股份有限公司 | 通过参数化概率估计有限状态机进行二进制算术译码 |
US11006117B2 (en) | 2017-07-14 | 2021-05-11 | Mediatek Inc. | Method and apparatus for range derivation in context adaptive binary arithmetic coding |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1306822C (zh) * | 2004-07-30 | 2007-03-21 | 联合信源数字音视频技术(北京)有限公司 | 一种基于软硬件协同控制的视频解码器 |
JP4962476B2 (ja) * | 2008-11-28 | 2012-06-27 | ソニー株式会社 | 算術復号装置 |
CN102186075B (zh) * | 2011-04-28 | 2012-10-10 | 北京大学 | 一种熵编码器及其实现方法 |
-
2013
- 2013-05-07 CN CN201310163055.XA patent/CN103227924B/zh active Active
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103873870B (zh) * | 2014-02-28 | 2017-03-29 | 芯原微电子(上海)有限公司 | 一种优化的aec解码器 |
CN103873870A (zh) * | 2014-02-28 | 2014-06-18 | 芯原微电子(上海)有限公司 | 一种优化的aec解码器 |
CN105025296A (zh) * | 2014-04-30 | 2015-11-04 | 北京大学 | 一种高级算术编码器及其实现方法 |
CN105025296B (zh) * | 2014-04-30 | 2018-02-23 | 北京大学 | 一种高级算术编码器及其实现方法 |
CN104918049A (zh) * | 2015-06-03 | 2015-09-16 | 复旦大学 | 适用于hevc标准的二进制算术编码模块 |
CN107347159B (zh) * | 2016-05-05 | 2020-05-19 | 谷歌有限责任公司 | 一种对视频位流进行编解码的方法、设备 |
CN107347159A (zh) * | 2016-05-05 | 2017-11-14 | 谷歌公司 | 使用动态参考运动矢量进行的运动矢量编码 |
WO2018127167A1 (en) * | 2017-01-06 | 2018-07-12 | Mediatek Inc. | Method and apparatus for range derivation in context adaptive binary arithmetic coding |
US11265561B2 (en) | 2017-01-06 | 2022-03-01 | Mediatek Inc. | Method and apparatus for range derivation in context adaptive binary arithmetic coding |
CN110419216A (zh) * | 2017-03-22 | 2019-11-05 | 高通股份有限公司 | 通过参数化概率估计有限状态机进行二进制算术译码 |
CN110419216B (zh) * | 2017-03-22 | 2021-12-17 | 高通股份有限公司 | 通过参数化概率估计有限状态机进行二进制算术译码 |
US11006117B2 (en) | 2017-07-14 | 2021-05-11 | Mediatek Inc. | Method and apparatus for range derivation in context adaptive binary arithmetic coding |
US11425386B2 (en) | 2017-07-14 | 2022-08-23 | Hfi Innovation Inc. | Method and apparatus for range derivation in context adaptive binary arithmetic coding |
Also Published As
Publication number | Publication date |
---|---|
CN103227924B (zh) | 2016-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103227924A (zh) | 一种算术编码器及编码方法 | |
CN103563381B (zh) | 对视频数据进行上下文自适应译码 | |
CN103650510B (zh) | 用于变换系数级编码的上下文建模技术 | |
CN100547615C (zh) | 表示时变图形模型的数据流的编码方案 | |
CN102238387B (zh) | 一种视频熵编码、熵解码方法、装置 | |
CN102098519B (zh) | 视频编码方法、解码方法、编码及解码装置 | |
CN107743239B (zh) | 一种视频数据编码、解码的方法及装置 | |
US10127913B1 (en) | Method of encoding of data stream, method of decoding of data stream, and devices for implementation of said methods | |
CN101427583B (zh) | 算术解码方法和设备 | |
CN103782597A (zh) | 伴随有算术编码的对视频编码的方法和设备以及对视频解码的方法和设备 | |
CN102088603B (zh) | 用于视频编码器的熵编码器及其实现方法 | |
CN102868882A (zh) | 在cabac中使用分离的绝对值和符号(savs)对dpq进行二元化 | |
CN105103548A (zh) | 根据输入数据的位深选择变换数据的最大动态范围和变换矩阵的数据精度 | |
CN103703776A (zh) | 在视频译码中的系数扫描 | |
CN105049869A (zh) | 对视频进行解码的方法和设备 | |
CN105027560A (zh) | 确定用于变换系数的二进制码字的方法 | |
WO2012048053A2 (en) | System and method for optimizing context-adaptive binary arithmetic coding | |
CN103974066A (zh) | 视频编码方法和设备 | |
CN105025296B (zh) | 一种高级算术编码器及其实现方法 | |
WO2012097250A1 (en) | Method and apparatus for arithmetic coding and termination | |
CN110191339A (zh) | 码率估计核心单元、码率估计装置及码率估计方法 | |
CN100551064C (zh) | 变长编码方法及装置 | |
Vizzotto et al. | Area efficient and high throughput CABAC encoder architecture for HEVC | |
CN103051895B (zh) | 一种上下文模型选择的方法和装置 | |
KR101108674B1 (ko) | 엔트로피 코딩의 성능 향상 방법 및 상기 방법을 이용한 비디오 코딩 방법 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |