CN102801974B - 基于cabac的图像压缩熵编码器 - Google Patents
基于cabac的图像压缩熵编码器 Download PDFInfo
- Publication number
- CN102801974B CN102801974B CN201210251107.4A CN201210251107A CN102801974B CN 102801974 B CN102801974 B CN 102801974B CN 201210251107 A CN201210251107 A CN 201210251107A CN 102801974 B CN102801974 B CN 102801974B
- Authority
- CN
- China
- Prior art keywords
- context
- mux
- coefficient
- code stream
- 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.)
- Expired - Fee Related
Links
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种基于CABAC的图像压缩熵编码器,主要解决现有技术编码效率不高、码流快速打包时发生数据溢出的问题。其包括图像控制单元(1)、符号产生模块(2)、符号FIFO(3)、二进制算术编码模块(4)、上下文存储器(5)、码流FIFO(6)和码流打包字节模块(7);图像控制单元控制各模块复位和使能信号的产生;符号产生模块从外部读取数据并完成二值化和上下文建模;符号FIFO存储二值化符号及上下文模型;上下文存储器存储上下文信息;二进制算术编码模块根据二值化符号得到中间码流;码流FIFO存储中间码流数据;码流打包字节模块根据中间码流产生最终码流。本发明具有吞吐率高、电路规模小、关键路径短、防止流水线停滞和避免数据溢出的优点,用于实现高吞吐的算术熵编码。
Description
技术领域
本发明属于超大规模集成电路技术领域,涉及基于上下文的自适应二进制算术编码CABAC实现电路,可应用于实现图像压缩编码。
背景技术
随着信息技术的飞速发展,数字视频技术的应用变得越来越广泛。但是,由于数字视频的数据量非常大,使得数据的传输和存储变得十分困难。因此,若要使其得到有效的应用,首先必须解决视频压缩编码的问题。
熵编码是混合视频编码中最重要的一种编码方式,主要应用于对量化变换系数、自适应块变换、运动向量和其他编码信息的压缩,以减少数据间的冗余信息。基于上下文的自适应二进制算术编码CABAC通过构造上下文模型、进行自适应概率建模并采用二进制算术编码,极大的提高了压缩性能。然而,由于CABAC编码算法中的上下文管理和算术编码模块需要进行大量的存储器访问和ALU操作,复杂度较高难以高效实现。因此,有必要从VLSI设计角度出发,发明一种高效CABAC全硬件实现方法。
清华大学提出的专利申请“基于CABAC的并行归一化编码实现电路及编码方法”(专利申请号201010103440.9,公开号CN101771879A)公开了一种基于CABAC的并行归一化编码实现电路及编码方法。该电路包括两级流水线:第一级流水线用于完成归一化操作,第二级流水线用于产生输出码流,二者间以先入先出队列FIFO连接,FIFO的深度为5段。该方法使用两级流水完成归一化和编码操作,只实现了部分CABAC结构,仅能完成归一化和其中没有上下文建模和二值化操作,不能独立完成CABAC编码操作。
成都市世嘉电子实业有限公司提出的专利申请“高性能CABAC编码器设计方法”(专利申请号201010106086.8,公开号CN102148997A)公开了一种高性能CABAC编码器设计方法。该方法的实施步骤是:1.完成算术编码实现部分;2.完成重整化实现部分;3.完成比特生成实现部分。但该设计方法仅为一个总体思路,没有具体电路,且实现效率不高,难以实现高吞吐操作。
清华大学提出的专利申请“基于H.264/AVC中CABAC的并行编码实现电路及编码方法”(专利申请号201010291264.9,公开号CN101951516)公开了一种基于H.264/AVC中CABAC的并行编码实现电路及编码方法,包括用于并行算法归一化运算的二元化引擎、用于执行每周期两比特的上下文读取及更新操作的上下文模型引擎、用于执行每周期两比特的归一化操作的并行归一化引擎、用于产生RBSP输出码流的RBSP码流生成引擎、二元化引擎和上下文模型引擎,且使用3写2读先出队列连接并行归一化引擎与RBSP码流生成引擎,完成两个引擎间的速度匹配。但是,由于其设计限制,无法解决码流的大规模突发输出时,数据快速打包的溢出问题。
发明内容
本发明的目的在于针对上述背景技术中存在的缺陷和不足,提出了一种基于CABAC的图像压缩熵编码器,以提高编码效率,增加电路吞吐率,避免在码流快速打包时的数据溢出。
为实现上述目的,本发明的基于CABAC的图像压缩熵编码器,包括:图像控制单元、符号产生模块、符号FIFO、二进制算术编码模块、上下文存储器和码流打包字节模块;图像控制单元与各模块的复位和使能端相连,通过控制各模块的复位信号、使能信号的产生,实现各模块间的协调统一工作;符号FIFO分别与符号产生模块和二进制算术编码模块相连,用于存储符号产生模块产生的二值化符号和对应的上下文模型;上下文存储器与二进制算术编码模块相连,用于存储512个上下文模型的上下文信息,以实现二进制编码时的上下文模型读取和更新操作,其特征在于:
二进制算术编码模块与码流打包字节模块之间连接***流FIFO,该码流FIFO用以存储二进制算术编码模块输出的中间码流;
所述符号产生模块,由第一存储器、第二存储器、第三存储器、第一多路选择器、状态机控制单元、头信息状态机、系数信息状态机、第二多路选择器、二值化子模块和上下文建模子模块构成,其中第一存储器、第二存储器、第三存储器的输入端均与外部输入相连,输出端均与第一多路选择器相连,实现从外部输入中读取语法元素并根据其预测模式分别存入相应的存储器中的操作;状态机控制单元分别与头信息状态机和系数信息状态机相连,完成控制两个状态机正常跳转的工作;二值化子模块的输入端分别与头信息状态机和系数信息状态机相连,输出端与第二多路选择器相连,用以完成二值化操作,并将二值化后的符号通过第二多路选择器写入符号FIFO;上下文建模子模块的输入端分别与头信息状态机和系数信息状态机相连,输出端与第二多路选择器相连,用以完成上下文建模操作,并将上下文信息通过第二多路选择器写入符号FIFO;
所述二进制算术编码模块,由依次相接的四级流水线组成,第一级流水线由上下文读取子模块构成,用以完成从符号FIFO读取待编码字符和上下文模型的工作;第二级流水线由字符概率状态更新子模块、概率状态计算子模块和编码方式判断子模块构成,分别用以完成字符概率状态更新、大概率字符MPS或小概率字符LPS的中间变量计算、判断编码方式,并将算出的概率状态和中间变量传送到下级;第三级流水线由上下文更新子模块、编码区间归一化子模块和计算输出位数子模块构成,分别用以完成上下文状态更新、编码区间Range的归一化和选择移位次数并送入下一级;第四级流水线由区间下限归一化子模块和部分码流产生子模块构成,分别完成对区间下限Low进行归一化重整计算得到新的区间下限Low值和产生部分码流并写入码流FIFO的操作;
所述码流打包字节模块,由桶形移位器、状态机控制器、等待字符寄存器、编码缓冲寄存器和码流输出子模块构成;该状态机控制器分别与桶形移位器、等待字符寄存器、编码缓冲寄存器和码流输出子模块相连,通过控制状态的跳转控制码流正确打包输出;该编码缓冲寄存器与码流FIFO相连,读取码流FIFO中的中间码流数据;该等待字符寄存器的输出端与桶形移位器相连,用于存储桶形移位器的移位次数;该桶形移位器的数据输入端与编码缓冲寄存器的输出端相连,输出端与码流输出子模块的输入端相连,对编码缓冲寄存器的数据进行移位输出至码流输出子模块,并使用码流输出子模块对桶形移位器输出的数据进行处理,得到最终码流。
作为优选,上述基于CABAC的图像压缩熵编码器,其特征在于符号产生模块中的二值化子模块由二进制值序列ROM、前缀ROM和后缀ROM构成,分别存储系数二值化后对应的二进制序列、前缀和后缀,这三个存储器的地址端均与第一多路选择器的输出端相连,以第一多路选择器输出的系数为地址查找这三个ROM,得到该系数二值化后的二进制序列、前缀和后缀,完成二值化操作并将得到结果通过第二多路选择器写入符号FIFO中。
作为优选,上述基于CABAC的图像压缩熵编码器,其特征在于符号产生模块中的上下文建模子模块由头信息建模子模块、系数信息建模子模块和第三多路选择器构成,其中,头信息建模子模块的输入端分别与头信息状态机和第一多路选择器相连,输出端与第三多路选择器相连,用以完成头信息的上下文建模工作;系数信息建模子模块的输入端分别与系数信息状态机和第一多路选择器相连,输出端与第三多路选择器相连,用以完成系数信息的上下文建模工作。
作为优选,上述基于CABAC的图像压缩熵编码器,其特征在于头信息建模子模块由逻辑电路组成,用于根据头信息状态机26的当前状态直接得到当前状态的上下文模型,并输出至第三多路选择器。
作为优选,上述基于CABAC的图像压缩熵编码器,其特征在于系数信息建模子模块包括:
第一非零系数上下文ROM,用以存储帧内4×4预测模式不同位置对应上下文模型,其数据输出端与第四多路选择器相连;
第二非零系数上下文ROM,用以存储帧内8×8预测模式不同位置对应上下文模型,其数据输出端与第四多路选择器相连;
第三非零系数上下文ROM,用以存储帧内16×16预测模式不同位置对应上下文模型,其数据输出端与第四多路选择器相连;
第一最后非零系数上下文ROM,用以存储帧内4×4预测模式最后非零系数不同位置对应上下文模型,其数据输出端与第五多路选择器相连;
第二最后非零系数上下文ROM,用以存储帧内8×8预测模式最后非零系数不同位置对应上下文模型,其数据输出端与第五多路选择器相连;
第三最后非零系数上下文ROM,用以存储帧内16×16预测模式最后非零系数不同位置对应上下文模型,其数据输出端与第五多路选择器相连;
地址计数器,与上述六个非零系数上下文ROM存储器的地址端分别相连,当对系数信息进行上下文建模工作启动时,地址计数器完成复位操作,每输入一个系数计数器加一,作为该系数对应的地址对6个上下文ROM进行查找,读取出该系数位置对应的六种上下文序号;
第四多路选择器,用于接收第一非零系数上下文ROM、第二非零系数上下文ROM和第三非零系数上下文ROM输出的数据,并根据预测类型对这些数据进行选择输出;
第五多路选择器,用于接收第一最后非零系数上下文ROM、第二最后非零系数上下文ROM和第三最后非零系数上下文ROM输出的数据,并根据预测类型对这些数据进行选择输出;
零系数判断器,用于判断当前系数是否为非零系数,其与第六多路选择器的数据选择端相连;
最后系数判断器,用于判断当前系数是否为最后一个非零系数,其与第六多路选择器的数据选择端相连;
第六多路选择器,其数据输入端分别与第四多路选择器和第五多路选择器相连,用于根据非零系数判断器和最后系数判断器的判断结果,对0、16、64、254、第四多路选择器的输出和第五多路选择器的输出进行选择,输出至下一级。
作为优选,上述基于CABAC的图像压缩熵编码器,其特征在于:上下文存储器用于存储512个上下文模型的上下文信息,完成二进制编码时的上下文模型读取和更新操作;每个上下文信息用7位表示,即最高位存储上下文序号对应的大概率字符,后六位存储上下文序号对应的状态。
本发明与现有技术相比具有以下优点:
第一,本发明总体采用全流水线设计,加入控制模块防止流水线停滞,并将多种编码模式进行高效电路复用,增加了电路吞吐率,减小了电路规模和复杂度,缩短了关键路径,加快了电路处理速度;
第二,本发明中的二进制算术编码模块采用四级流水线结构,流水分配合理,可使每级流水功能在一个时钟周期内完成,提高了编码效率,并配合数据重定向电路解决了单周期流水线中的数据冲突问题;
第三,本发明在二进制算术编码模块与码流打包字节模块中加入了码流FIFO,解决了归一化重整操作产生部分码流速度不稳定的问题,防止流水线停滞或发生数据溢出;
第四,本发明采用桶形移位器和状态机控制器相结合的结构,同时设计了16次输出的码流打包环节,能应对码流的大规模突发输出127位的情况,有效地解决了特殊情况下码流打包溢出的问题。
附图说明
图1为本发明的结构框图;
图2为本发明中的符号产生模块结构框图;
图3为本发明中的二进制算术编码模块结构框图;
图4为本发明中的二值化子模块结构框图;
图5为本发明中头信息状态机的状态转移图;
图6为本发明中的系数信息处理顺序示意图;
图7为本发明中的系数信息建模子模块结构框图;
图8为本发明中的上下文内容更新结构示意图;
图9为本发明中的概率状态更新阶段数据传递示意图;
图10为本发明中的码流打包字节模块结构框图;
图11为本发明中的字节打包模块状态转移图。
具体实施方式
下面结合附图和实施例对本发明进行详细说明。
参照图1,本发明基于CABAC的图像压缩熵编码器,包括图像控制单元1、符号产生模块2、符号FIFO3、二进制算术编码模块4、上下文存储器5、码流FIFO6和码流打包字节模块7;该图像控制单元1分别与符号产生模块2、符号FIFO3、二进制算术编码模块4、上下文存储器5、码流FIFO6和码流打包字节模块7的复位端和使能端相连,通过控制它们复位信号和使能信号的产生,实现电路的协调统一工作;该符号产生模块2的输入端与外部输入端相连,用于完成从外部读取数据,并对该数据进行二值化和上下文建模;该符号FIFO3的输入端与符号产生模块2相连,输出端与符号FIFO3相连,用于存储符号产生模块2产生的二值化符号和上下文模型,并等待二进制算术编码模块4读取,以解决编码速率不匹配问题,防止发生流水线停滞或数据溢出;该上下文存储器5与二进制算术编码模块4相连,用于存储512个上下文模型的上下文信息,并与二进制算术编码模块4共同完成二进制编码时的上下文模型更新操作;该二进制算术编码模块4根据上下文存储器5中存储的上下文信息,对读取到的二值化符号进行算术编码得到中间码流;该码流FIFO6的输入端与二进制算术编码模块4相连,输出端与码流打包字节模块7相连,用于存储二进制算术编码模块4产生的中间码流,并等待码流打包字节模块7读取,以解决编码速率不匹配问题,防止发生流水线停滞或数据溢出;该码流打包字节模块7,实现从码流FIFO6中读取中间码流数据,将中间码流中的溢出位移除,产生最终编码码流并打包输出,完成编码操作。
所述上下文存储器5,用于存储512个上下文模型的上下文信息,完成二进制编码时的上下文模型读取和更新操作。每个上下文用7bit表示:高一位存储上下文序号对应的大概率字符,低六位存储上下文序号对应的状态。当压缩请求启动时,图像层控制单元对上下文状态存储器进行初始化,初始化时钟时间为512个时钟周期。上下文像素状态存储器初始化完成后,图像控制单元1控制二进制算术编码模块4启动算术编码工作。
所述符号产生模块2、二进制算术编码模块4和码流打包字节模块7分别如图2、图3和图10所示,其结构与功能分别描述如下:
参照图2,符号产生模块2,输入端与外部输入相连,输出端与符号FIFO3相连,完成从外部输入中读取语法元素并对其进行二值化和上下文建模的操作。由第一存储器21、第二存储器22、第三存储器23、第一多路选择器24、状态机控制单元25、头信息状态机26、系数信息状态机27、第二多路选择器28、二值化子模块29和上下文建模子模块210构成,其中:
第一存储器21、第二存储器22、第三存储器23的输入端均与外部输入相连,输出端均与第一多路选择器24相连,实现从外部输入中读取语法元素并根据其预测模式分别存入相应的存储器中的操作,第一存储器21的位宽为9bit,深度为319,用以存储帧内4×4预测模式的数据,第二存储器22的位宽为9bit,深度为269,用以存储帧内8×8预测模式的数据,第三存储器23的位宽为9bit,深度为259,用以存储帧内16×16预测模式的数据;
第一多路选择器24,根据预测类型对三个存储器中的数据进行选择读取,分别送入二值化子模块29和上下文建模子模块210,以完成二值化及上下文建模;
状态机控制单元25,分别与头信息状态机26和系数信息状态机27相连,通过控制两个状态机正常跳转,交替完成头信息和系数信息的二值化和上下文建模操作;
头信息状态机26,分别与二值化子模块29和上下文建模子模块210相连,用以控制这两个模块分别完成头信息的二值化和上下文建模工作,其状态转移情况,如图5所示,头信息处理操作由宏块复位信号和全局信号启动,首先进入无效状态INVALID,在使能信号为高电平时跳转至结束前状态TERMINAL。TERMINAL状态处理需要一个时钟周期,在该状态下,若处理的不是当前片层第一个宏块,则通过第二多路选择器28向符号FIFO3写入结束符0;否则,不通过第二多路选择器28向符号FIFO3写入结束符0。TERMINAL状态处理完成后,根据预测类型跳转到下一个状态:当预测类型为帧内16×16预测模式时,则跳转到16×16模式状态单独处理,完成该状态需要一个时钟周期,并在该状态下完成通过第二多路选择器28向符号FIFO3写入宏块信息、预测模式和一个CBP信息的操作。随后进入结束状态FINISH并在该状态下无限循环,直到下一个宏块的压缩请求到来,由复位信号将状态转入INVALID状态开启新一轮头信息的处理;当预测类型为帧内4×4预测模式或者帧内8×8预测模式时,状态跳转至TSF状态,完成将8×8模式标志位通过第二多路选择器28写入符号FIFO3的操作,需要一个时钟周期。随后进入模式编码状态MODE,当预测模式为帧内4×4时,该状态需要16个时钟周期,当预测模式为帧内8×8时,该状态需要4个时钟周期,在该状态内完成将预测模式标志位通过第二多路选择器28写入符号FIFO3的操作。状态完成之后进入CBP状态,该状态需要4个时钟周期,完成将8×8块变换系数全为零标志位通过第二多路选择器28写入符号FIFO3的操作。随后跳转至FINISHI状态并在该状态下无限循环,直到下一个宏块压缩请求到来,由复位信号将状态转入INVALID状态开启新一轮头信息的处理。
系数信息状态机27,分别与二值化子模块29和上下文建模子模块210相连,用以控制这两个模块完成系数信息的二值化和上下文建模工作,如图6所示,本发明处理系数信息时,根据预测类型执行不同的编码次数和编码顺序:预测类型为16×16时,只需要完成一次变换系数处理,此时一次处理256个变换系数。依次完成非零系数标志位、最后非零系数标志位、系数减1值的编码操作;预测类型为8×8时,需要进行4次变换系数的处理,每次处理64个系数。在执行每次编码操作时,首先编码一次8×8预测模式标志位=1,然后执行4次8×8亮度块预测模式标志位、8×8亮度块预测模式,接着编码4次含有非零系数标志位,随后完成4次的非零系数标志位、最后非零系数标志位、系数减1值的编码操作;预测类型为4×4时,需要进行16次变换系数的处理,每次处理16个系数。每次编码时首先编码一次8×8预测模式标志位=0,然后执行16次4×4亮度块预测模式标志位、4×4亮度块预测模式,接着执行4次四个4×4亮度块含有非零系数标志位,随后依次完成16次含有非零系数标志位、非零系数标志位、最后非零系数标志位、系数减1值的编码操作。
二值化子模块29,由二进制值序列ROM291、前缀ROM292和后缀ROM293构成,如图4所示,分别存储系数二值化后对应的二进制序列、前缀和后缀,这三个存储器的地址端均与第一多路选择器24的输出端相连,以第一多路选择器24输出的系数为地址查找这三个ROM,得到该系数二值化后的二进制序列、前缀和后缀,完成二值化操作并将得到结果通过第二多路选择器28写入符号FIFO3中。
上下文建模子模块210,由头信息建模子模块、系数信息建模子模块和第三多路选择器构成,其中,头信息建模子模块的输入端分别与头信息状态机26和第一多路选择器24相连,输出端与第三多路选择器相连,用以完成头信息的上下文建模工作;系数信息建模子模块的输入端分别与系数信息状态机27和第一多路选择器24相连,输出端与第三多路选择器相连,用以完成系数信息的上下文建模工作。该头信息建模子模块由逻辑电路组成,用于根据头信息状态机26的当前状态直接得到当前状态的上下文模型,并输出至第三多路选择器;如图7所示,该系数信息建模子模块包括:第一非零系数上下文ROM21022,用以存储帧内4×4预测模式不同位置对应上下文模型,其数据输出端与第四多路选择器21028相连;第二非零系数上下文ROM21023,用以存储帧内8×8预测模式不同位置对应上下文模型,其数据输出端与第四多路选择器21028相连;第三非零系数上下文ROM21024,用以存储帧内16×16预测模式不同位置对应上下文模型,其数据输出端与第四多路选择器21028相连;第一最后非零系数上下文ROM21025,用以存储帧内4×4预测模式最后非零系数不同位置对应上下文模型,其数据输出端与第五多路选择器21029相连;第二最后非零系数上下文ROM21026,用以存储帧内8×8预测模式最后非零系数不同位置对应上下文模型,其数据输出端与第五多路选择器21029相连;第三最后非零系数上下文ROM21027,用以存储帧内16×16预测模式最后非零系数不同位置对应上下文模型,其数据输出端与第五多路选择器21029相连;地址计数器21021,与上述六个非零系数上下文ROM存储器的地址端分别相连,当对系数信息进行上下文建模工作启动时,地址计数器21021完成复位操作,每输入一个系数计数器加一,作为该系数对应的地址对6个上下文ROM进行查找,读取出该系数位置对应的六种上下文序号;第四多路选择器21028,用于接收第一非零系数上下文ROM21022、第二非零系数上下文ROM21023和第三非零系数上下文ROM21024输出的数据,并根据预测类型对这些数据进行选择输出;第五多路选择器21029,用于接收第一最后非零系数上下文ROM21025、第二最后非零系数上下文ROM21026和第三最后非零系数上下文ROM21027输出的数据,并根据预测类型对这些数据进行选择输出;零系数判断器210211,用于判断当前系数是否为非零系数,其与第六多路选择器210210的数据选择端相连;最后系数判断器210212,用于判断当前系数是否为最后一个非零系数,其与第六多路选择器210210的数据选择端相连;第六多路选择器210210,其数据输入端分别与第四多路选择器21028和第五多路选择器21029相连,用于根据非零系数判断器210211和最后系数判断器210212的判断结果,对0、16、64、254、第四多路选择器21028的输出和第五多路选择器21029的输出进行选择,输出至下一级。
参照图3,二进制算术编码模块4,由依次相接的四级流水线组成,
第一级流水线由上下文读取子模块41构成,用以完成从符号FIFO3中读取待编码字符和上下文模型的工作,同时通过读取上下文存储器5获得该上下文模型对应的大概率字符和概率状态;
第二级流水线由字符概率状态更新子模块42、概率状态计算子模块43和编码方式判断子模块44构成,分别用以完成字符概率状态更新、大概率字符和小概率字符的中间变量计算、编码方式判断的操作,并将计算得到的概率状态和中间变量传送到下级;
第三级流水线由上下文更新子模块45、编码区间归一化子模块47和计算输出位数子模块46构成,分别用以完成上下文状态更新、编码区间Range归一化和移位次数选择的操作,并将移位次数送入下一级;其中,编码区间Range的归一化操作,是当编码区间Range的范围不在(28,29]内时,编码器将对编码区间Range的值在一个时钟周期内左移count_shift位,其中移位的次数count_shift为该Range二进制值中第一个非零值前零的个数。在上下文状态读取和更新逻辑中,采用重定向技术来化解数据冲突。如图8所示,在第一级流水线启动时,读取寄存器得到上下文序号。在第一级流水线中读取上下文状态存储器获得该上下文序号对应的大概率字符和概率状态。第二级流水线完成大概率字符和概率状态的计算并写入流水线寄存器。第三级流水线完成将第二级流水线寄存器内容写入上下文状态存储器。如图9所示,相邻待处理字符和相应的上下文序号会不断送入二进制算术编码模块4,并通过多路选择器选择出上下文状态,以免发生数据冲突。为了防止流水线停滞,设计了数据冲突控制单元将流水线寄存器中未写入上下文存储器5的数据通过多路选择器重定向到下一时钟周期的上下文存储器5的输入寄存器。
第四级流水线由区间下限归一化子模块48和部分码流产生子模块49构成,分别完成对区间下限Low进行归一化重整计算得到新的区间下限Low值和产生部分码流并写入码流FIFO6的操作;其中,Low值的归一化处理,即在一个周期内将原Low值左移count_shift位,并根据其前(count_shift+1)位的值对新Low的第一位进行赋值,其赋值方式为:只有当原Low值的前(count_shift+1)位都为1,count_shift次移位后新Low的第一位才为1;否则,第一位为0。送入码流FIFO6中的数据位宽18bit:最高位为结束编码标志位,若为1则表明此时的码流需要进行结束前判定编码。随后三位是码流比特数,用以表征当前码流低14位的有效位数。其低14位为Low归一化时产生的中间码流,在码流打包环节根据这14bit数据中的每两位数据得到一位最终码流。
参照图10,所述码流打包字节模块7,由桶形移位器71、状态机控制器72、等待字符寄存器73、编码缓冲寄存器74和码流输出子模块75构成,通过控制状态机控制器72中状态的跳转实现从码流FIFO6中读取中间码流数据,并将中间码流中的溢出位移除后存入编码缓冲寄存器74,随后根据等待字符寄存器73中的数据控制桶形移位器71对编码缓冲寄存器74中的数据进行移位,产生数据缓冲位,送入码流输出子模块75完成打包输出。
状态机控制器72分别与桶形移位器71、等待字符寄存器73、编码缓冲寄存器74和码流输出子模块75相连,通过控制状态的跳转控制码流正确打包输出;编码缓冲寄存器74分别与码流FIFO6相连的输出端和桶形移位器71的数据输入端相连,读取外部中间码流数据对其进行处理后送入桶形移位器71进行移位输出;等待字符寄存器73的输出端与桶形移位器71的控制端相连,控制桶形移位器71的移位次数;桶形移位器71的数据输出端与码流输出子模块75的输入端相连,对编码缓冲寄存器74的数据进行移位输出至码流输出子模块75,并使用码流输出子模块75对桶形移位器71输出的数据进行处理,得到最终码流。
状态机控制器72的状态跳转情况,如图11所示,当压缩请求到来时,对码流打包字节模块7进行复位操作。当码流FIFO6不为空时,跳转至FIFO读取状态,读取一次FIFO数据,随后转入数据等待状态,等待FIFO数据有效。之后转入数据分配状态,在该状态内从读取到的18位数据分别得到结束前判定编码标志位、码流有效位数、中间码流三组数据。随后进入字节打包状态,并在该状态下完成翻译工作,每次将中间码流的两位数据转化为一位数据并存入编码缓冲寄存器74,其执行次数由码流有效位数控制,每次执行之后码流有效位数自减一。该阶段由将编码缓冲寄存器74、等待字符寄存器73和桶形移位器71共同完成,根据当前处理中间码流两位数据的不同情况,分三种情况处理:如果该两位数据为00,则向编码缓冲寄存器74中加入一位0,并使用桶形移位器对编码缓冲寄存器74中的数据进行移位,低位补1,其移位次数由等待字符寄存器73控制,完成后将等待字符寄存器73置零;如果两位数据为01,则将等待字符寄存器73系数加一;如果两位数据为10或11,则向编码缓冲寄存器74中加入一位1,并使用桶形移位器对编码缓冲寄存器74中的数据进行移位,低位补0,其移位次数由等待字符寄存器73控制,完成后将等待字符寄存器73置零。
当编码缓冲寄存器74中数据缓冲位大于8时,将编码缓冲寄存器74移位送入码流输出子模块75,其移位位数为最接近缓冲位数的8的整数倍。若结束前判定编码标志位为1,则进入清空状态,执行清空状态单独处理,以实现当结束编码出现结束“1”时,进行额外的清空缓存操作。随后进入结束状态,完成编码。当码流有效位数为1时,状态机进入无效状态,进行下一次循环。
码流输出子模块75每次收到缓冲位,码流输出环节进行16次输出,分别将缓冲位按字节输出,即完成字节打包操作。
Claims (6)
1.一种基于CABAC的图像压缩熵编码器,包括图像控制单元(1)、符号产生模块(2)、符号FIFO(3)、二进制算术编码模块(4)、上下文存储器(5)和码流打包字节模块(7);图像控制单元(1)与各模块的复位和使能端相连,通过控制各模块的复位信号、使能信号的产生,实现各模块间的协调统一工作;符号FIFO(3)分别与符号产生模块(2)和二进制算术编码模块(4)相连,用于存储符号产生模块(2)产生的二值化符号和对应的上下文模型;上下文存储器(5)与二进制算术编码模块(4)相连,用于存储512个上下文模型的上下文信息,以实现二进制编码时的上下文模型读取和更新操作,其特征在于:
二进制算术编码模块(4)与码流打包字节模块(7)之间连接***流FIFO(6),该码流FIFO(6)用以存储二进制算术编码模块(4)输出的中间码流;
所述符号产生模块(2),由第一存储器(21)、第二存储器(22)、第三存储器(23)、第一多路选择器(24)、状态机控制单元(25)、头信息状态机(26)、系数信息状态机(27)、第二多路选择器(28)、二值化子模块(29)和上下文建模子模块(210)构成,其中第一存储器(21)、第二存储器(22)、第三存储器(23)的输入端均与外部输入相连,输出端均与第一多路选择器(24)相连,实现从外部输入中读取语法元素并根据其预测模式分别存入相应的存储器中的操作;状态机控制单元(25)分别与头信息状态机(26)和系数信息状态机(27)相连,完成控制两个状态机正常跳转的工作;二值化子模块(29)的输入端分别与头信息状态机(26)和系数信息状态机(27)相连,输出端与第二多路选择器(28)相连,用以完成二值化操作,并将二值化后的符号通过第二多路选择器(28)写入符号FIFO(3);上下文建模子模块(210)的输入端分别与头信息状态机(26)和系数信息状态机(27)相连,输出端与第二多路选择器(28)相连,用以完成上下文建模操作,并将上下文信息通过第二多路选择器(28)写入符号FIFO(3);
所述二进制算术编码模块(4),由依次相接的四级流水线组成,第一级流水线由上下文读取子模块(41)构成,用以完成从符号FIFO(3)读取待编码字符和上下文模型的工作;第二级流水线由字符概率状态更新子模块(42)、概率状态计算子模块(43)和编码方式判断子模块(44)构成,分别用以完成字符概率状态更新、大概率字符MPS或小概率字符LPS的中间变量计算、判断编码方式,并将算出的概率状态和中间变量传送到下级;第三级流水线由上下文更新子模块(45)、编码区间归一化子模块(47)和计算输出位数子模块(46)构成,分别用以完成上下文状态更新、编码区间Range的归一化和选择移位次数并送入下一级;第四级流水线由区间下限归一化子模块(48)和部分码流产生子模块(49)构成,分别完成对区间下限Low进行归一化重整计算得到新的区间下限Low值和产生部分码流并写入码流FIFO(6)的操作;
所述码流打包字节模块(7),由桶形移位器(71)、状态机控制器(72)、等待字符寄存器(73)、编码缓冲寄存器(74)和码流输出子模块(75)构成;该状态机控制器(72)分别与桶形移位器(71)、等待字符寄存器(73)、编码缓冲寄存器(74)和码流输出子模块(75)相连,通过控制状态的跳转控制码流正确打包输出;该编码缓冲寄存器(74)与码流FIFO(6)相连,读取码流FIFO(6)中的中间码流数据;该等待字符寄存器(73)的输出端与桶形移位器(71)相连,用于存储桶形移位器(71)的移位次数;该桶形移位器(71)的数据输入端与编码缓冲寄存器(74)的输出端相连,输出端与码流输出子模块(75)的输入端相连,对编码缓冲寄存器(74)的数据进行移位输出至码流输出子模块(75),并使用码流输出子模块(75)对桶形移位器(71)输出的数据进行处理,得到最终码流。
2.根据权利要求1所述的基于CABAC的图像压缩熵编码器,其特征在于符号产生模块(2)中的二值化子模块(29)由二进制值序列ROM(291)、前缀ROM(292)和后缀ROM(293)构成,分别存储系数二值化后对应的二进制序列、前缀和后缀,这三个存储器的地址端均与第一多路选择器(24)的输出端相连,以第一多路选择器(24)输出的系数为地址查找这三个ROM,得到该系数二值化后的二进制序列、前缀和后缀,完成二值化操作并将得到结果通过第二多路选择器(28)写入符号FIFO(3)中。
3.根据权利要求1所述的基于CABAC的图像压缩熵编码器,其特征在于符号产生模块(2)中的上下文建模子模块(210)由头信息建模子模块、系数信息建模子模块和第三多路选择器构成,其中,头信息建模子模块的输入端分别与头信息状态机(26)和第一多路选择器(24)相连,输出端与第三多路选择器相连,用以完成头信息的上下文建模工作;系数信息建模子模块的输入端分别与系数信息状态机(27)和第一多路选择器(24)相连,输出端与第三多路选择器相连,用以完成系数信息的上下文建模工作。
4.根据权利要求3所述的基于CABAC的图像压缩熵编码器,其特征在于头信息建模子模块由逻辑电路组成,用于根据头信息状态机(26)的当前状态直接得到当前状态的上下文模型,并输出至第三多路选择器。
5.根据权利要求3所述的基于CABAC的图像压缩熵编码器,其特征在于系数信息建模子模块包括:
第一非零系数上下文ROM(21022),用以存储帧内4×4预测模式不同位置对应上下文模型,其数据输出端与第四多路选择器(21028)相连;
第二非零系数上下文ROM(21023),用以存储帧内8×8预测模式不同位置对应上下文模型,其数据输出端与第四多路选择器(21028)相连;
第三非零系数上下文ROM(21024),用以存储帧内16×16预测模式不同位置对应上下文模型,其数据输出端与第四多路选择器(21028)相连;
第一最后非零系数上下文ROM(21025),用以存储帧内4×4预测模式最后非零系数不同位置对应上下文模型,其数据输出端与第五多路选择器(21029)相连;
第二最后非零系数上下文ROM(21026),用以存储帧内8×8预测模式最后非零系数不同位置对应上下文模型,其数据输出端与第五多路选择器(21029)相连;
第三最后非零系数上下文ROM(21027),用以存储帧内16×16预测模式最后非零系数不同位置对应上下文模型,其数据输出端与第五多路选择器(21029)相连;
地址计数器(21021),与上述六个非零系数上下文ROM存储器的地址端分别相连,当对系数信息进行上下文建模工作启动时,地址计数器(21021)完成复位操作,每输入一个系数计数器加一,作为该系数对应的地址对6个上下文ROM进行查找,读取出该系数位置对应的六种上下文序号;
第四多路选择器(21028),用于接收第一非零系数上下文ROM(21022)、第二非零系数上下文ROM(21023)和第三非零系数上下文ROM(21024)输出的数据,并根据预测类型对这些数据进行选择输出;
第五多路选择器(21029),用于接收第一最后非零系数上下文ROM(21025)、第二最后非零系数上下文ROM(21026)和第三最后非零系数上下文ROM(21027)输出的数据,并根据预测类型对这些数据进行选择输出;
零系数判断器(210211),用于判断当前系数是否为非零系数,其与第六多路选择器(210210)的数据选择端相连;
最后系数判断器(210212),用于判断当前系数是否为最后一个非零系数,其与第六多路选择器(210210)的数据选择端相连;
第六多路选择器(210210),其数据输入端分别与第四多路选择器(21028)和第五多路选择器(21029)相连,用于根据非零系数判断器(210211)和最后系数判断器(210212)的判断结果,对0、16、64、254、第四多路选择器(21028)的输出和第五多路选择器(21029)的输出进行选择,输出至下一级。
6.根据权利要求1所述的基于CABAC的图像压缩熵编码器,其特征在于:上下文存储器(5)用于存储512个上下文模型的上下文信息,完成二进制编码时的上下文模型读取和更新操作;每个上下文信息用7位表示,即最高位存储上下文序号对应的大概率字符,后六位存储上下文序号对应的状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210251107.4A CN102801974B (zh) | 2012-07-19 | 2012-07-19 | 基于cabac的图像压缩熵编码器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210251107.4A CN102801974B (zh) | 2012-07-19 | 2012-07-19 | 基于cabac的图像压缩熵编码器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102801974A CN102801974A (zh) | 2012-11-28 |
CN102801974B true CN102801974B (zh) | 2014-08-20 |
Family
ID=47200929
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210251107.4A Expired - Fee Related CN102801974B (zh) | 2012-07-19 | 2012-07-19 | 基于cabac的图像压缩熵编码器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102801974B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2513111A (en) * | 2013-04-08 | 2014-10-22 | Sony Corp | Data encoding and decoding |
WO2017041271A1 (en) * | 2015-09-10 | 2017-03-16 | Mediatek Singapore Pte. Ltd. | Efficient context modeling for coding a block of data |
TW201824861A (zh) * | 2016-12-23 | 2018-07-01 | 晨星半導體股份有限公司 | 二元編碼運算裝置以及方法 |
CN109922341A (zh) * | 2017-12-13 | 2019-06-21 | 博雅视云(北京)科技有限公司 | Avs2高级熵编码器实现方法及装置 |
CN109889834B (zh) * | 2019-01-11 | 2021-07-13 | 珠海亿智电子科技有限公司 | 一种cabac算术解码方法及装置 |
CN113382265B (zh) * | 2021-05-19 | 2023-03-24 | 北京大学深圳研究生院 | 视频数据熵编码硬件实现方法、设备、介质及程序产品 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1624579A2 (en) * | 2004-08-02 | 2006-02-08 | Samsung Electronics Co., Ltd. | Apparatus and methods for binary arithmetic decoding using a pipelined structure |
CN101771879A (zh) * | 2010-01-28 | 2010-07-07 | 清华大学 | 基于cabac的并行归一化编码实现电路及编码方法 |
CN101951516A (zh) * | 2010-09-25 | 2011-01-19 | 清华大学 | 基于h.264/avc中cabac的并行编码实现电路及编码方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003319391A (ja) * | 2002-04-26 | 2003-11-07 | Sony Corp | 符号化装置および方法、復号装置および方法、記録媒体、並びにプログラム |
-
2012
- 2012-07-19 CN CN201210251107.4A patent/CN102801974B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1624579A2 (en) * | 2004-08-02 | 2006-02-08 | Samsung Electronics Co., Ltd. | Apparatus and methods for binary arithmetic decoding using a pipelined structure |
CN101771879A (zh) * | 2010-01-28 | 2010-07-07 | 清华大学 | 基于cabac的并行归一化编码实现电路及编码方法 |
CN101951516A (zh) * | 2010-09-25 | 2011-01-19 | 清华大学 | 基于h.264/avc中cabac的并行编码实现电路及编码方法 |
Non-Patent Citations (4)
Title |
---|
System-on-Chip Design Methodology for a;Thinh M. Le ea tl;《IEEE International Workshop on Rapid System Prototyping》;20060616;第82-90页 * |
Thinh M. Le ea tl.System-on-Chip Design Methodology for a.《IEEE International Workshop on Rapid System Prototyping》.2006, |
孙书为 等.高效的CABAC熵编码器体系结构.《计算机工程与科学》.2009,第31卷(第3期), |
高效的CABAC熵编码器体系结构;孙书为 等;《计算机工程与科学》;20090331;第31卷(第3期);第61-65页 * |
Also Published As
Publication number | Publication date |
---|---|
CN102801974A (zh) | 2012-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102801974B (zh) | 基于cabac的图像压缩熵编码器 | |
CN100531386C (zh) | 一种上下文自适应二进制算术编码器及其方法 | |
CN101212676B (zh) | 高效并行cabac解码方法及其装置 | |
CN101771879B (zh) | 基于cabac的并行归一化编码实现电路及编码方法 | |
CN102088603B (zh) | 用于视频编码器的熵编码器及其实现方法 | |
US5675331A (en) | Decoding device for decoding a variety of code signals | |
CN101480054A (zh) | 利用并行二进制算术解码的基于硬件的cabac解码器 | |
CN101753148A (zh) | 算术解码设备 | |
CN101848311B (zh) | 基于Avalon总线JPEG2000的EBCOT编码器 | |
CN102176750B (zh) | 高性能自适应二进制算术编码器 | |
CN101951516A (zh) | 基于h.264/avc中cabac的并行编码实现电路及编码方法 | |
KR20060043180A (ko) | 메모리 인터페이스 및 데이터 처리 시스템 | |
WO2012048053A2 (en) | System and method for optimizing context-adaptive binary arithmetic coding | |
US7714753B2 (en) | Scalable context adaptive binary arithmetic coding | |
Fei et al. | A 1 gbin/s cabac encoder for h. 264/avc | |
CN103227924A (zh) | 一种算术编码器及编码方法 | |
CN101489128A (zh) | 一种jpeg2000流水线算术编码方法和电路 | |
JP6159240B2 (ja) | 二値算術符号化装置、二値算術符号化方法及び二値算術符号化プログラム | |
Li et al. | A CABAC encoding core with dynamic pipeline for H. 264/AVC main profile | |
CN105025296A (zh) | 一种高级算术编码器及其实现方法 | |
CN101277444A (zh) | 一种对哥伦布码进行解码的装置及方法 | |
Pastuszak | A novel architecture of arithmetic coder in JPEG2000 based on parallel symbol encoding | |
Wang et al. | A high performance fully pipelined architecture for lossless compression of satellite image | |
CN100469146C (zh) | 视频图像运动补偿装置 | |
CN109922341A (zh) | Avs2高级熵编码器实现方法及装置 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140820 Termination date: 20190719 |