CN107277553A - 一种二元算术编码器 - Google Patents
一种二元算术编码器 Download PDFInfo
- Publication number
- CN107277553A CN107277553A CN201710558803.2A CN201710558803A CN107277553A CN 107277553 A CN107277553 A CN 107277553A CN 201710558803 A CN201710558803 A CN 201710558803A CN 107277553 A CN107277553 A CN 107277553A
- Authority
- CN
- China
- Prior art keywords
- rlps
- output
- mux
- range
- interval
- 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
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/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
-
- 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/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本公开提供了一种高吞吐的二元算术编码器,Range更新单元采用3种Range更新子单元,并组织成LU‑LU‑MU级联结构、LU‑MU级联结构、LU‑FU级联结构,使得电路得到优化,可以缩短电路的路径延时,提高电路的工作频率,进而提高二元算术编码器的吞吐率,支持高清、超高清视频的实时编码。
Description
技术领域
本公开涉及数字视频编解码技术领域,具体涉及一种高吞吐的二元算术编码器,可应用于高清、超高清视频的实时编码系统。
背景技术
随着多媒体技术的快速发展,人们对视频分辨率的要求越来越高,视频分辨率朝着4K(3840×2160)和8K(7680×4320)超高清方向发展。超高清视频的高分辨率、高帧率和高像素深度导致了庞大的数据量,对视频编码技术提出了更高的要求。针对超高清视频的编码需求,新一代视频编码标准H.265/HEVC(High Efficiency Video Coding,高效视频编码)于2013年正式发布。相比前一代H.264/AVC标准,HEVC的压缩率提高1倍,而编码的复杂度也大大增加,给超高清视频的实时编码带来巨大挑战。HEVC视频编码中的熵编码采用基于上下文的自适应二元算术编码(Context-based Adaptive Binary Arithmetic Coding,CABAC)算法,算法的概率自适应和区间划分存在很强的数据依赖,严重限制了编码过程的并行度,成为整个HEVC编码的吞吐瓶颈之一。
二元算术编码的吞吐率使用单位时间能处理的bin数来衡量。二元算术编码过程较为复杂,且数据依赖性很强,提高二元算术编码的吞吐率是提高熵编码吞吐率的关键。要实现高清、超高清视频实时编码,高吞吐的二元算术编码器十分重要。
发明内容
(一)要解决的技术问题
本公开提出一种高吞吐的二元算术编码器,以支持高清、超高清视频的实时编码。
(二)技术方案
本公开提供了一种二元算术编码器,包括:采用多个级联结构的区间范围更新模块,用于接收bin输入信息,对区间范围进行更新并输出偏移值和左移位数;区间下界更新模块,用于接收所述bin输入信息、偏移值和左移位数,输出高位溢出比特和高位溢出比特数目;合并输出模块,用于接收所述高位溢出比特和高位溢出比特数目,输出溢出比特流。
在一些实施例中,所述区间范围更新模块包括:区间范围更新预处理单元和区间范围更新单元,构成三级流水线结构,所述区间范围更新单元包括多个级联结构。
在一些实施例中,所述区间范围更新单元包括三个级联结构,第一级联结构为LU-LU-MU级联结构,第二级联结构为LU-MU级联结构,第三级联结构为LU-FU级联结构;其中,LU单元为LPS符号更新单元,MU单元为MPS符号更新单元,FU单元为通用符号更新单元。
在一些实施例中,所述区间范围更新单元还包括:寄存器,其输入端连接所述FU单元的输出端,其输出端连接第一级联结构的第一个LU单元。
在一些实施例中,所述区间范围更新预处理单元包括四个输入端、三个多路选择器和寄存器;所述寄存器的输出端接第一级联结构的第一个LU单元;第一输入端接第一级联结构的第二个LU单元和第一多路选择器;第二输入端接第一多路选择器、第二级联结构的LU单元和第二多路选择器;第三输入端接第二多路选择器、第三级联结构的LU单元和第三多路选择器;第四输入端接第三多路选择器以及寄存器的输入端;所述第一多路选择器的输出端接第一级联结构的MU单元;所述第二多路选择器的输出端接第二级联结构的MU单元;所述第三多路选择器的输出端接第三级联结构的FU单元。
在一些实施例中,所述LU单元、MU单元和FU单元包括:rLPS生成级结构和区间范围更新级结构。
在一些实施例中,所述LU-MU级联结构包括:rLPS生成级结构,包括:第一rLPS表,用于根据bin的LPS概率状态获取rLPSLU候选值;重归一化单元,用于对rLPSLU候选值处理而得到重归一化后的候选值ren_rLPS;第二rLPS表,用于根据bin的LPS的概率状态获取rLPSMU候选值;第一多路选择器,用于选择rLPSMU候选值或零输出至路由器;第二多路选择器,用于选择ren_rLPS候选值的第7位和第6位或者一组数值作为路由器的选择信号;路由器,用于重新规划rLPSMU候选值的顺序;区间范围更新级结构,包括:第一查找表,用于接收区间范围值的第6位和第7位,从候选值ren_rLPS中选出第一区间范围更新值;第二查找表,用于接收区间范围值的第6位和第7位,对路由器的输出进行选择;第三多路选择器,用于选择第一区间范围更新值或区间范围值输出;加法器,用于将第一区间范围更新值与第二查找表的输出相减;第四多路选择器,用于判断是否将加法器的结果左移1位,并输出区间范围的更新值。
在一些实施例中,所述LU-MU级联结构包括:rLPS生成级结构,包括:第一rLPS表,用于根据bin的LPS概率状态获取rLPSLU候选值;重归一化单元,用于对rLPSLU候选值处理而得到重归一化后的候选值ren_rLPS;第二rLPS表,用于根据bin的LPS概率状态获取rLPSMU候选值;第一多路选择器,用于选择rLPSMU候选值或零输出至路由器;第二多路选择器,用于选择ren_rLPS候选值的第7位和第6位作为路由器的选择信号;路由器,用于重新规划rLPSMU候选值的顺序;四个加法器,分别用于将候选值ren_rLPS与路由器的输出相减;四个预先按位取反单元,分别用于对加法器的结果按位取反;四个多路选择器,分别用于选择分别单元的结果或路由器的输出;区间范围更新级结构,包括:查找表,用于接收区间范围值的第6位和第7位,对四个多路选择器的输出进行选择;第三多路选择器,用于选择9比特1或区间范围值输出;加法器,用于将第三多路选择器与查找表的输出相减;第四多路选择器,用于判断是否将加法器的结果左移1位,并输出区间范围的更新值。
在一些实施例中,所述区间下界更新模块包括区间下界更新预处理单元和区间下界更新单元,构成两级流水线结构。
本公开还提供了一种基于上下文的自适应二元算术编码器,其包括二值化模块、上下文建模模块以及二元算术编码器,其中,二元算术编码器采用上述任一项二元算术编码器。
(三)有益效果
从上述技术方案可以看出,本公开具有以下有益效果:
本公开的二元算术编码器中,Range更新单元采用3种Range更新子单元,并组织成LU-LU-MU级联结构、LU-MU级联结构、LU-FU级联结构,使得电路得到优化,可以缩短电路的路径延时,提高电路的工作频率,进而提高二元算术编码器的吞吐率,支持高清、超高清视频的实时编码。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图做简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。
图1为本公开实施例二元算术编码器的电路结构示意图;
图2为本公开实施例二元算术编码器Range更新模块的电路结构示意图;
图3为本公开实施例二元算术编码器LU单元的电路结构示意图;
图4为本公开实施例二元算术编码器MU单元的电路结构示意图;
图5为本公开实施例二元算术编码器FU单元的电路结构示意图;
图6为本公开实施例二元算术编码器LU-MU级联结构1的电路结构示意图;
图7为本公开实施例二元算术编码器4-4router的电路结构示意图;
图8为本公开实施例二元算术编码器LU-MU级联结构2的电路结构示意图;
图9为本公开实施例二元算术编码器Low更新模块的电路结构示意图;
图10为本公开实施例二元算术编码器Low更新单元的电路结构示意图;
图11为本公开实施例二元算术编码器比特合并模块的电路结构示意图。
具体实施方式
CABAC主要包括二值化、上下文建模和二元算术编码三个过程。输入熵编码器的语法元素首先由二值化过程映射为二元符号(Binary symbol,bin)。二元算术编码中包含常规(Regular)编码、旁路(Bypass)编码和终止(Terminate)编码三种编码模式。上下文建模过程根据特定的上下文为每个非旁路编码的bin估计概率模型,也就是上下文模型。二元算术编码根据bin的上下文模型将bin压缩为比特并输出。
二元算术编码过程的核心是编码区间的递归划分,编码区间根据编码模式和bin的上下文模型划分为子区间,并选取当前bin对应的子区间作为新的编码区间,如此不断递归划分。编码区间使用区间范围(或称区间宽度,Range)和区间下界(Low)来表示。在编码过程中Low值逐渐增加,Low的溢出比特构成的二元算术编码的输出结果,成为比特流。
以比较典型的常规编码模式为例,常规模式根据上下文模型将当前区间划分两个子区间,其中,LPS对应子区间的区间范围记为rLPS,MPS对应子区间的区间范围记为rMPS。整个区间划分过程可以分为Range更新和Low更新两个阶段,其中rLPS的计算需要进行乘法,HEVC标准中提供了一个查找表,使用LPS的概率状态(值为0~63)和当前Range值的第7、6位(Range为9比特,记为0~8位)查表得到rLPS。Range更新的过程较为复杂,需要进行查表、减法和选择运算。随着编码过程的进行,区间不断递归划分,Range值会逐渐缩小。为了保证编码精度,当Range小于256时,需要进行重归一化过程,将Range左移一位。HEVC标准中给出的重归一化过程包含不固定次数的循环操作,不便于流水线处理。由于Range为9比特,当最高位为1时大于等于256,可以采用一个高位0比特数据检测器来确定Range需要左移的位数。
二元算术编码采用最终编码区间的Low值为编码结果。在重归一化的过程中Low值也左移,其溢出比特形成最终的输出比特。由于Low在后续的编码过程中可能增加进而产生进位,左移溢出的比特不能直接作为编码结果输出。溢出比特中的比特0可以阻断进位,之前的比特可以输出。
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
本公开实施例的二元算术编码器,用于数字视频的编解码,尤其是用于基于上下文的自适应二元算术编码,参见图1,包括:区间范围(Range)更新模块、区间下界(Low)更新模块、比特合并模块和字节输出模块。该二元算术编码器为7级流水线结构。
其中Range更新模块包括Range更新预处理单元和Range更新单元,构成第1~3级流水线,作为Range更新阶段完成区间范围Range的更新。
Low更新模块包括Low更新预处理单元和Low更新单元,构成第4~5级流水线,作为Low更新阶段完成区间下界Low的更新。
比特合并模块和字节输出模块构成第6~7级流水线,作为比特输出阶段将Low更新过程中的高位溢出比特整合成可以输出的比特流。
二元算术编码器每个时钟周期能够处理3~4个bin,每个bin的输入信息包括bin值、编码模式mode、LPS的概率状态pstate和大概率符号MPS。
参见图2,其显示了Range更新模块的电路结构图,Range更新预处理单元包括三个多路选择器和寄存器ff。Range更新单元包括三个级联结构,共7个级联的Range更新子单元,每个Range更新子单元完成单个bin的Range更新操作。第一级联结构为LU-LU-MU级联结构,包括级联的LU1、LU2和MU1,第二级联结构为LU-MU级联结构,包括级联的LU3和MU2,第三级联结构为LU-FU级联结构,包括级联的LU4和FU。FU的输出接寄存器Range,寄存器Range的输出接第一级联结构LU1。LU为专门处理LPS符号的更新单元,MU为专门处理MPS符号的更新单元,FU为通用的更新单元,能处理包括LPS和MPS在内的各种bin符号。
寄存器ff的输出接LU1,Range更新预处理单元的第一输入端接LU2和第一多路选择器MUX1;第二输入端接第一多路选择器MUX1、LU3和第二多路选择器MUX2;第三输入端接第二多路选择器MUX2、LU4和第三多路选择器MUX3;第四输入端接第三多路选择器MUX3以及寄存器ff;第一多路选择器MUX1接MU1,第二多路选择器MUX2接MU2,第三多路选择器MUX3接FU。
Range更新预处理单元的四个输入端分别接收bin0、bin1、bin2和bin3。在二元算术编码器工作时,图2中的Range更新预处理单元利用表1所示的bin分配策略,将待处理的4个bin分配给7个Range更新子单元进行处理。
输入的bin信息包括编码模式,编码模式包括常规编码、旁路编码和终止编码。对于采用常规编码的bin,其包括MPS和LPS信息。对于采用终止编码模式的bin,bin值为0时将其作为MPS进行分配,bin值为1时将其作为LPS进行分配。对于采用旁路编码模式的bin,统一将其视作LPS进行分配。
表1
表1中待处理bin序列一栏给出了待处理的4个bin可能出现的16种情况,其中M表示MPS,L表示LPS。表1中分配策略一栏给出了对应的分配策略,表明待处理的bin交由哪些Range更新子单元处理。分配策略栏的7列数据对应图2中的7个Range更新子单元。值1表示使用该Range更新子单元处理,值0表示不使用该Range更新子单元处理。需要注意的是,当待处理的bin为{MPS,MPS,MPS,MPS}时,该Range更新预处理单元在当前时钟周期只能处理前3个bin的MPS。当待处理的bin为{MPS,MPS,MPS,LPS}时,当前时钟周期只能处理前3个bin的MPS,最后一个bin的LPS暂存到图2中的ff寄存器中,在下一时钟周期交由图2中的LU1子单元处理。LU1子单元仅在这种情况下被占用,因而表1中未给出分配策略栏中LU1列的分配情况。
为了更好地描述Range更新阶段级联结构的工作方式,首先介绍Range更新子单元的结构。
图3给出了LU的电路结构图。对于LPS符号,Range更新后的值为重归一化后的rLPS值。LU包括两级流水线结构,包括rLPS生成级结构和Range更新级结构。
rLPS生成级结构包括rLPS表和重归一化单元。rLPS生成级结构接收bin的LPS的概率状态pstate,根据概率状态pstate其从rLPS表(rLPS table)中获取4个rLPS候选值,重归一化单元用于对4个rLPS候选值处理而得到重归一化后的候选值ren_rLPS,同时得到重归一化需要左移的位数ren_shift。
Range更新级结构包括更新路径和结果输出路径。更新路径包括查找表1(LookupTable 1,LUT1),接收重归一化后的候选值ren_rLPS,根据Range值的第7位和第6位从4个ren_rLPS候选值中使用LUT1选出Range值的更新结果new_Range。
结果输出路径包括查找表2(LUT2)、查找表3(LUT3)和加法器add,LUT2和LUT3分别接收重归一化需要左移的位数ren_shift以及rLPS候选值,根据Range值的第7位和第6位从4个ren_shift候选值中选出Low值更新所需的左移位数shift,从4个rLPS候选值中使用LUT3选出rLPS,使用Range值与rLPS在加法器add中相减得到rMPS,rMPS作为Low更新所需的偏移值offset。
图4给出了MU的电路结构图。对于MPS符号,Range更新后的值为当前Range值减去rLPS后再进行重归一化的结果。MU包括两级流水线结构,包括rLPS生成级结构和Range更新级结构。
rLPS生成级结构包括rLPS表。rLPS生成级结构接收bin的LPS的概率状态pstate,根据概率状态pstate其从rLPS table中获取4个rLPS候选值。
Range更新级结构包括更新路径和结果输出路径。更新路径接收4个rLPS候选值,根据Range值的第7位和第6位从4个rLPS候选值中使用查找表LUT选出rLPS,使用Range值与rLPS在加法器add中相减得到rMPS,根据rMPS的首位(即第8位)判断是否将rMPS左移1位,多路选择器MUX1输出Range的更新值。
结果输出路径输出Low更新所需的偏移值offset为0,多路选择器MUX2根据rMPS的首位(即第8位)得到Low值更新所需的左移位数shift,当rMPS首位为0时shift为1,否则shift为0。
图5给出了FU的电路结构图,FU需要处理MPS、LPS和旁路模式的bin等多种符号,可以视作LU和MU的整合。FU也包括两级流水线结构,rLPS生成级结构和Range更新级结构。
为了缩短FU在Range更新级的组合路径延时,本实施例提出一种预先按位取反(Pre-Bitwise-NOT,PBN)技术,其具体实施方式为如下。在rLPS生成级结构设置了一个多路选择器MUX1,在Range更新级结构设置了一个多路选择器MUX2。
具体来说,rLPS生成级结构包括rLPS表、重归一化单元、PBN单元和多路选择器MUX1。Range更新级结构包括更新路径和结果输出路径,更新路径包括查找表LUT1、多路选择器MUX2、加法器add2和多路选择器MUX3;结果输出路径包括查找表LUT2、查找表LUT3、加法器add1、多路选择器MUX4和多路选择器MUX5。
当输入的bin为旁路模式bin时,MUX1选择值0输出到Range更新级结构的LUT1,MUX2选择原始Range值,这样,LUT1的输出和MUX2的输出在加法器add2中相减,并由MUX3输出的更新值为原始Range值,Range更新级结构输出的Range值不变,与旁路模式的处理方式相符。此时,MUX5输出的左移位数shift为0,当bin值为1时,MUX4输出的偏移值offset为Range值,当bin值为0时,MUX4输出的偏移值offset为0。
当输入的bin为LPS时,rLPS生成级结构接收bin的LPS的概率状态pstate,根据概率状态pstate其从rLPS table中获取4个rLPS候选值,重归一化单元用于对4个rLPS候选值处理而得到重归一化后的候选值ren_rLPS,PBN单元对重归一化后的候选值ren_rLPS预先按位取反,并经MUX1输出给Range更新级结构的LUT1。MUX2选择9比特1输出,这样,LUT1和MUX2的输出在加法器add2中相减,并由MUX3输出,其结果就是重归一化后的rLPS值,作为Range更新值new_Range,符合LPS的正确处理方式。
重归一化单元对4个rLPS候选值处理还得到重归一化需要左移的位数ren_shift。LUT2和LUT3分别接收重归一化需要左移的位数ren_shift以及rLPS候选值,根据Range值的第7位和第6位利用LUT2从4个ren_shift中选出左移位数LPS_shift,利用LUT3从4个rLPS候选值中选出rLPS,使用Range值与rLPS在加法器add1中相减得到偏移值LPS_offset。此时,MUX4输出的偏移值offset为LPS_offset值,MUX5输出的左移位数shift为LPS_shift值。
当待处理的bin为MPS时,MUX1输出原始的未经重归一化的rLPS给Range更新级结构的LUT1,即从rLPS table中获取4个rLPS候选值,MUX2选择原始的Range值,LUT1的输出和MUX2的输出在加法器add2中相减,并由MUX3输出重归一化得到的更新后的Range值new_Range,与MU的处理方式类似。此时,MUX4输出的偏移值offset为0,当加法器add2的计算结果首位(即第8位)为1时,MUX5输出的左移位数shift为0,首位为0时,MUX5输出的左移位数shift为1。
本实施例使用了三种上述更新子单元的级联结构,分别为LU-LU-MU级联结构、LU-MU级联结构和LU-FU级联结构,如图2所示。下面,本实施例以其中比较典型的LU-MU级联结构为例介绍级联结构,本领域技术人员应当很容易从中理解其他的两种级联结构。
本实施例提供了LU-MU级联结构的两种实现方式。图6给出了LU-MU级联结构的一个示例,包括LU和MU两部分,其根据LU和MU简单级联结构的基础上修改得到。为了便于描述其中的主要结构,图6略去了部分次要的电路路径,仅给出更新路径的电路单元,LU和MU的结果输出路径分别与图3的LU电路中的结果输出路径和图4的MU电路中的结果输出路径相似,需要注意的是:当LU或MU不被使用时,对应的输出偏移值offset和左移位数shift均为0。当LU用来处理旁路模式bin时,输出的shift为0,此时若bin值为1,输出的偏移值offset为Range值,若bin值为0,输出的offset为0。这里不再赘述。
LU-MU级联结构1为两级流水线结构,包括rLPS生成级结构和Range更新级结构。
rLPS生成级结构包括rLPS表1、重归一化单元、rLPS表2、多路选择器MUX1、多路选择器MUX2和路由器。Range更新级结构的更新路径包括查找表1、查找表2、多路选择器MUX3、加法器add和多路选择器MUX4。为了使查找表LUT1和LUT2并行处理以缩短Range更新路径,本实施例使用4输入4输出的路由器4-4router为LUT2重新规划4个候选值的顺序,使LUT2能够通过原始的Range值查表。
当LU处理LPS符号时,rLPS生成级结构接收bin的LPS的概率状态pstateLU,根据概率状态pstateLU其从rLPS table1中获取4个rLPSLU候选值,重归一化单元用于对4个rLPSLU候选值处理而得到重归一化后的候选值ren_rLPS。同时,当MU处理MPS符号时,rLPS生成级结构接收bin的LPS的概率状态pstateMU,根据概率状态pstateMU其从rLPS table2中获取4个rLPSMU候选值,MUX1选择rLPSMU候选值输出至路由器router,当MU不处理MPS符号时,rLPS生成级结构不接收bin的LPS的概率状态pstateMU,MUX1选择0输出至router。多路选择器MUX2选择图6中4个ren_rLPS候选值的第7位和第6位作为4-4router的选择信号。LUT2接收Range值第6位和第7位,对4-4router的输出值进行选择,LUT1接收Range值第6位和第7位,从重归一化后的候选值ren_rLPS中选出Range_LU值,MUX3选择LU更新过的(即LUT1输出的)Range_LU值输出,Range_LU值与LUT2的输出在加法器add中相减,并判断是否将add的结果左移1位,多路选择器MUX4输出Range的更新值new_Range。
当LU不处理LPS符号或者处理的bin为旁路模式bin时,LU-MU级联结构处理过程与上述过程相似,不同的是,多路选择器MUX2选择值{0,1,2,3}作为4-4router的选择信号,多路选择器MUX3选择原始的Range值输出。
图7给出了图6中4-4router的电路结构图,其内部结构包括4个LUT单元,每个LUT的输入都是MUX1输出的4个rLPSMU的候选值,4个LUT使用4个2比特的选择信号sel0-sel3得到重新规划顺序的rLPS候选值,并输出给LUT2。
图8给出了LU-MU级联结构的另一个示例,其采用前述提到的预先按位取反技术,进一步缩短了Range更新的路径延时。LU-MU级联结构2也采用了4-4router来重新组织MU中4个候选值的排列顺序。与图6类似,仅给出更新路径的电路单元,LU和MU的结果输出路径分别与图3的LU电路中的结果输出路径和图4的MU电路中的结果输出路径相似,需要注意的是:当LU或MU不被使用时,对应的输出偏移值offset和左移位数shift均为0。当LU用来处理旁路模式bin时,输出的shift为0,此时若bin值为1,输出的偏移值offset为Range值,若bin值为0,输出的offset为0。这里不再赘述。
rLPS生成级结构包括rLPS表1、重归一化单元、rLPS表2、多路选择器MUX1、MUX2、MUX3、MUX4、MUX5、MUX6、四个加法器add1、add2、add3和add4、四个PBN单元PBN1、PBN2、PBN3、PBN4以及路由器。Range更新级结构的更新路径包括查找表LUT、多路选择器MUX7、MUX8和加法器add。
当LU处理LPS符号时,rLPS生成级结构接收bin的LPS的概率状态pstateLU,根据概率状态pstateLU其从rLPS table1中获取4个rLPSLU候选值,重归一化单元用于对4个rLPSLU候选值处理而得到重归一化后的候选值ren_rLPS。同时,当MU处理MPS符号时,rLPS生成级结构接收bin的LPS的概率状态pstateMU,根据概率状态pstateMU其从rLPS table2中获取4个rLPSMU候选值,MUX5选择rLPSMU候选值输出至路由器router,当MU不处理MPS符号时,rLPS生成级结构不接收bin的LPS的概率状态pstateMU,MUX5选择0输出至router。多路选择器MUX6选择图8中4个ren_rLPS候选值的第7位和第6位作为4-4router的选择信号。LU重归一化后的4个候选值ren_rLPS与4-4router输出的4个候选值rou_rLPS分别在四个加法器中相减,相减结果经PBN单元按位取反。MUX1-MUX4将PBN单元的结果输出给LUT。LUT接收Range值第6位和第7位,对MUX1-MUX4的输出值进行选择,MUX7选择9比特1输出,LUT的输出和MUX7的输出在加法器add中相减,并判断是否将相减结果左移1位,MUX8输出Range的更新值new_Range。
当LU不处理LPS符号或者处理旁路模式bin时,LU-MU级联结构处理过程与上述过程相似,不同的是,MUX6选择值{0,1,2,3}作为4-4router的选择信号,MUX1~MUX4选择MU中4-4router排列后的4个候选值rou_rLPS输出至LUT,MUX7选择原始的Range值输出。
图8中的LU-MU级联结构2与图7中的LU-MU级联结构1功能完全相同。两者相比,LU-MU级联结构2拥有更短的Range更新路径延时,LU-MU级联结构1使用更少的电路资源。
图9给出了Low更新模块的整体结构图,其分为两级流水线结构,分别对应图1中的第4级和第5级流水线。其中第4级流水线进行Low更新预处理,根据Range更新预处理中的分配策略,利用多路选择器将有效工作的Range更新子单元的输出选择出来。第5级流水线从寄存器Low中读取出Low值,并经过5个级联的Low更新单元完成Low值的更新并写回寄存器。
Low更新预处理单元包括多路选择器MUX1、MUX2、MUX3和MUX4;Low更新单元包括5个级联的Low更新单元以及寄存器Low,上一级Low更新单元的输出接下一级Low更新单元的输入。Low更新单元完成单个bin的Low更新处理。Range更新子单元的LU1接Low更新单元1;LU2和MU1接MUX1,MUX1接Low更新单元2;MU1、LU3和MU2接MUX2,MUX2接Low更新单元3;MU2、LU4和FU接MUX3,MUX3接Low更新单元4;FU接MUX4,MUX4接Low更新单元5。Low更新单元5的输出接寄存器Low,寄存器Low输出接Low更新单元1。
图10给出了Low更新单元的电路结构图。图11中,Low更新单元包括移位器1(shift1)、多路选择器MUX、加法器1(add1)、加法器2(add2)和移位器2(shift2)。Low更新单元接收Range更新子单元的输入,各个Range更新子单元的输入包括旁路模式标志位bps_flag、偏移值offset和左移位数shift。10比特的Low值分别直接和通过移位器接MUX,bps_flag作为MUX的选择信号,MUX的输出接加法器1,加法器1的输出接移位器2。
10比特的Low值首先根据当前待处理的bin的旁路模式标志位bps_flag决定是否左移1位,当bin的旁路模式标志位为1时,移位器1将Low值左移1位,MUX输出左移1位的Low值;当bin的旁路模式标志位为0时,MUX直接输出Low值。MUX输出的Low值与偏移值offset在加法器1相加,移位器2将相加结果左移shift位,得到18位的Low值输出(low_shift),Low值输出的高8位作为bits输出,即bits为Low值经过上述操作后的高位溢出比特low_shift[17∶10],低10位作为Low的更新值(new_Low)输出。旁路模式标志位bps_flag与左移位数shift在加法器2中相加,结果作为n值输出,n为高位溢出比特的数目(不包括进位),当待处理的bin为旁路模式时,shift增加1得到n,其他情况下,shift的值即为n的值。
图11给出了图1中比特合并模块的电路结构图,Low更新模块中的5个Low更新单元都会产生溢出比特。由于溢出比特中可能包含进位,为了保证进位不丢失,比特输出阶段需要加法运算进行溢出的比特合并。比特合并模块的第一合并单元将Low更新单元5和Low更新单元4输出的bits输出和n值输出进行合并;第二合并单元将Low更新单元3和Low更新单元2输出的bits输出和n值输出进行合并;第三合并单元将第一合并单元和第二合并单元输出的bits输出和n值输出进行合并;第四合并单元将第三合并单元和将Low更新单元1输出的bits输出和n值输出进行合并,得到溢出比特流。其中,每一合并单元包括一个移位器和两个加法器,移位器用于将第一bits输出进行移位,移位的位数为第一n值输出,移位器的输出与第二bits输出在第一加法器中相加,相加结果作为该合并单元的bits输出,第一n值与第二n值在第二加法器中相加,相加结果作为该合并单元的n值输出。例如,第一合并单元的移位器将Low更新单元4的bits输出移位,移位的位数为Low更新单元5的n值输出,移位器的输出在第一加法器中与Low更新单元5的bits输出相加,Low更新单元4和Low更新单元5的n值在第二加法器中相加,分别得到第一合并单元的bits输出和n值输出,其他合并单元的结构与此类似,不再赘述。经过比特合并,5个Low更新单元产生的溢出比特完成了内部进位运算,形成一个统一的溢出比特流。字节输出模块将比特合并模块的溢出比特流打包成字节并输出。
本公开另一实施例还提供了一种基于上下文的自适应二元算术编码器,其包括二值化模块、上下文建模模块以及二元算术编码器,其中,二元算术编码器采用上述实施例所述的二元算术编码器。
至此,已经结合附图对本实施例进行了详细描述。依据以上描述,本领域技术人员应当对本公开有了清楚的认识。
需要说明的是,在附图或说明书正文中,未绘示或描述的实现方式,均为所属技术领域中普通技术人员所知的形式,并未进行详细说明。此外,上述对各元件的定义并不仅限于实施例中提到的各种具体结构、形状或方式,本领域普通技术人员可对其进行简单地更改或替换,例如:
(1)实施例中提到的方向用语,例如“上”、“下”、“前”、“后”、“左”、“右”等,仅是参考附图的方向,并非用来限制本公开的保护范围;
(2)上述实施例可基于设计及可靠度的考虑,彼此混合搭配使用或与其他实施例混合搭配使用,即不同实施例中的技术特征可以自由组合形成更多的实施例。
以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (10)
1.一种二元算术编码器,包括:
采用多个级联结构的区间范围更新模块,用于接收bin输入信息,对区间范围进行更新并输出偏移值和左移位数;
区间下界更新模块,用于接收所述bin输入信息、偏移值和左移位数,输出高位溢出比特和高位溢出比特数目;
合并输出模块,用于接收所述高位溢出比特和高位溢出比特数目,输出溢出比特流。
2.如权利要求1所述的二元算术编码器,所述区间范围更新模块包括:区间范围更新预处理单元和区间范围更新单元,构成三级流水线结构,所述区间范围更新单元包括多个级联结构。
3.如权利要求1所述的二元算术编码器,所述区间范围更新单元包括三个级联结构,第一级联结构为LU-LU-MU级联结构,第二级联结构为LU-MU级联结构,第三级联结构为LU-FU级联结构;其中,LU单元为LPS符号更新单元,MU单元为MPS符号更新单元,FU单元为通用符号更新单元。
4.如权利要求3所述的二元算术编码器,所述区间范围更新单元还包括:
寄存器,其输入端连接所述FU单元的输出端,其输出端连接第一级联结构的第一个LU单元。
5.如权利要求3所述的二元算术编码器,所述区间范围更新预处理单元包括四个输入端、三个多路选择器和寄存器;
所述寄存器的输出端接第一级联结构的第一个LU单元;
第一输入端接第一级联结构的第二个LU单元和第一多路选择器;
第二输入端接第一多路选择器、第二级联结构的LU单元和第二多路选择器;
第三输入端接第二多路选择器、第三级联结构的LU单元和第三多路选择器;
第四输入端接第三多路选择器以及寄存器的输入端;
所述第一多路选择器的输出端接第一级联结构的MU单元;
所述第二多路选择器的输出端接第二级联结构的MU单元;
所述第三多路选择器的输出端接第三级联结构的FU单元。
6.如权利要求3所述的二元算术编码器,所述LU单元、MU单元和FU单元包括:rLPS生成级结构和区间范围更新级结构。
7.如权利要求3所述的二元算术编码器,所述LU-MU级联结构包括:
rLPS生成级结构,包括:
第一rLPS表,用于根据bin的LPS概率状态获取rLPSLU候选值;
重归一化单元,用于对rLPSLU候选值处理而得到重归一化后的候选值ren_rLPS;
第二rLPS表,用于根据bin的LPS的概率状态获取rLPSMU候选值;
第一多路选择器,用于选择rLPSMU候选值或零输出至路由器;
第二多路选择器,用于选择ren_rLPS候选值的第7位和第6位或者一组数值作为路由器的选择信号;
路由器,用于重新规划rLPSMU候选值的顺序;
区间范围更新级结构,包括:
第一查找表,用于接收区间范围值的第6位和第7位,从候选值ren_rLPS中选出第一区间范围更新值;
第二查找表,用于接收区间范围值的第6位和第7位,对路由器的输出进行选择;
第三多路选择器,用于选择第一区间范围更新值或区间范围值输出;
加法器,用于将第一区间范围更新值与第二查找表的输出相减;
第四多路选择器,用于判断是否将加法器的结果左移1位,并输出区间范围的更新值。
8.如权利要求3所述的二元算术编码器,所述LU-MU级联结构包括:
rLPS生成级结构,包括:
第一rLPS表,用于根据bin的LPS概率状态获取rLPSLU候选值;
重归一化单元,用于对rLPSLU候选值处理而得到重归一化后的候选值ren_rLPS;
第二rLPS表,用于根据bin的LPS概率状态获取rLPSMU候选值;
第一多路选择器,用于选择rLPSMU候选值或零输出至路由器;
第二多路选择器,用于选择ren_rLPS候选值的第7位和第6位作为路由器的选择信号;
路由器,用于重新规划rLPSMU候选值的顺序;
四个加法器,分别用于将候选值ren_rLPS与路由器的输出相减;
四个预先按位取反单元,分别用于对加法器的结果按位取反;
四个多路选择器,分别用于选择分别单元的结果或路由器的输出;
区间范围更新级结构,包括:
查找表,用于接收区间范围值的第6位和第7位,对四个多路选择器的输出进行选择;
第三多路选择器,用于选择9比特1或区间范围值输出;
加法器,用于将第三多路选择器与查找表的输出相减;
第四多路选择器,用于判断是否将加法器的结果左移1位,并输出区间范围的更新值。
9.如权利要求1所述的二元算术编码器,所述区间下界更新模块包括区间下界更新预处理单元和区间下界更新单元,构成两级流水线结构。
10.一种基于上下文的自适应二元算术编码器,其包括二值化模块、上下文建模模块以及二元算术编码器,其中,二元算术编码器采用权利要求1至9任一项所述的二元算术编码器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710558803.2A CN107277553B (zh) | 2017-07-10 | 2017-07-10 | 一种二元算术编码器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710558803.2A CN107277553B (zh) | 2017-07-10 | 2017-07-10 | 一种二元算术编码器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107277553A true CN107277553A (zh) | 2017-10-20 |
CN107277553B CN107277553B (zh) | 2020-10-27 |
Family
ID=60073479
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710558803.2A Active CN107277553B (zh) | 2017-07-10 | 2017-07-10 | 一种二元算术编码器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107277553B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108391129A (zh) * | 2018-04-25 | 2018-08-10 | 西安万像电子科技有限公司 | 数据编码方法及装置 |
CN113141508A (zh) * | 2020-01-17 | 2021-07-20 | 阿里巴巴集团控股有限公司 | 算术编码器及实现算术编码的方法和图像编码方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060023795A1 (en) * | 2004-08-02 | 2006-02-02 | Ji-Hak Kim | Binary arithmetic decoding apparatus and methods using a pipelined structure |
CN1949873A (zh) * | 2005-10-12 | 2007-04-18 | 华为技术有限公司 | Cabac解码系统及方法 |
CN1983334A (zh) * | 2005-12-05 | 2007-06-20 | 华为技术有限公司 | 一种实现算术编解码的方法及装置 |
CN101076114A (zh) * | 2007-06-15 | 2007-11-21 | 上海富瀚微电子有限公司 | 一种上下文自适应二进制算术编码器及其方法 |
CN102176750A (zh) * | 2011-03-10 | 2011-09-07 | 西安电子科技大学 | 高性能自适应二进制算术编码器 |
CN103248367A (zh) * | 2012-02-03 | 2013-08-14 | 展讯通信(上海)有限公司 | 码流数据的编码、解码方法和装置 |
CN104394418A (zh) * | 2014-09-23 | 2015-03-04 | 清华大学 | 一种视频数据编码、解码的方法及装置 |
-
2017
- 2017-07-10 CN CN201710558803.2A patent/CN107277553B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060023795A1 (en) * | 2004-08-02 | 2006-02-02 | Ji-Hak Kim | Binary arithmetic decoding apparatus and methods using a pipelined structure |
CN1949873A (zh) * | 2005-10-12 | 2007-04-18 | 华为技术有限公司 | Cabac解码系统及方法 |
CN1983334A (zh) * | 2005-12-05 | 2007-06-20 | 华为技术有限公司 | 一种实现算术编解码的方法及装置 |
CN101076114A (zh) * | 2007-06-15 | 2007-11-21 | 上海富瀚微电子有限公司 | 一种上下文自适应二进制算术编码器及其方法 |
CN102176750A (zh) * | 2011-03-10 | 2011-09-07 | 西安电子科技大学 | 高性能自适应二进制算术编码器 |
CN103248367A (zh) * | 2012-02-03 | 2013-08-14 | 展讯通信(上海)有限公司 | 码流数据的编码、解码方法和装置 |
CN104394418A (zh) * | 2014-09-23 | 2015-03-04 | 清华大学 | 一种视频数据编码、解码的方法及装置 |
Non-Patent Citations (1)
Title |
---|
CHENG CHEN等: ""High-throughput Binary Arithmetic Encoder architecture for CABAC in H.265/HEVC"", 《2016 13TH IEEE INTERNATIONAL CONFERENCE ON SOLID-STATE AND INTEGRATED CIRCUIT TECHNOLOGY (ICSICT)》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108391129A (zh) * | 2018-04-25 | 2018-08-10 | 西安万像电子科技有限公司 | 数据编码方法及装置 |
CN108391129B (zh) * | 2018-04-25 | 2019-09-27 | 西安万像电子科技有限公司 | 数据编码方法及装置 |
CN113141508A (zh) * | 2020-01-17 | 2021-07-20 | 阿里巴巴集团控股有限公司 | 算术编码器及实现算术编码的方法和图像编码方法 |
CN113141508B (zh) * | 2020-01-17 | 2024-03-26 | 阿里巴巴集团控股有限公司 | 算术编码器及实现算术编码的方法和图像编码方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107277553B (zh) | 2020-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100466739C (zh) | Cabac解码系统及方法 | |
CN105791828B (zh) | 二进制算术编码器及其编码方法 | |
JPH02202267A (ja) | 符号化装置及び符号化方法 | |
CN107277553A (zh) | 一种二元算术编码器 | |
CN105262462B (zh) | 一种用于集成电路的数字延时实现方法及电路 | |
US7522076B1 (en) | Parallel context adaptive binary arithmetic coding | |
CN104579352B (zh) | 基于fpga的温度计码到二进制码的编码转换装置和方法 | |
CN111047034A (zh) | 一种基于乘加器单元的现场可编程神经网络阵列 | |
CN117155405B (zh) | 一种基于梯度下降的tANS编码、解码转换表快速建立方法 | |
CN107343201B (zh) | Cabac编码方法和系统 | |
CN103955585B (zh) | 一种适用于低功耗容错电路的fir滤波器结构 | |
CN110365346B (zh) | 一种算术熵编码方法及系统 | |
CN104918049A (zh) | 适用于hevc标准的二进制算术编码模块 | |
Shi et al. | Enhanced successive cancellation list decoding of polar codes | |
CN115526131A (zh) | 多级编码近似计算Tanh函数的方法及装置 | |
Bonny et al. | Efficient code compression for embedded processors | |
CN104683806A (zh) | 基于深度流水的mq算术编码器高速fpga实现方法 | |
CN1770635B (zh) | 预置值流水线结构相位累加器 | |
CN101741399B (zh) | 卷积码Viterbi译码器中的级联加比选单元及其数据处理方法 | |
CN103297359B (zh) | 同相正交数字基带信号处理方法及装置 | |
CN106254060B (zh) | 一种fpga混沌信号发生器 | |
Howard et al. | Parallel lossless image compression using Huffman and arithmetic coding | |
CN104199352A (zh) | 基于fpga的区间编码硬件实现系统 | |
CN113517976B (zh) | 一种基于fpga的比特流快速采样装置及方法 | |
Song et al. | An 8B/10B parallel encoder design for the polarity pre-processing |
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 |