平行处理至少两个二进制值的方法与相应算术编码系统的制作方法

文档序号:7513528阅读:149来源:国知局

专利名称::平行处理至少两个二进制值的方法与相应算术编码系统的制作方法
技术领域
:本发明是有关于一种统计数据压缩,更具体地,是有关于一种二进制算术编码。
背景技术
:在一个系统中,要被传输的数据根据一个特定格式(format)进行数据压缩(datacompression)以减少需要被传输的数据数量。在后续操作中,一个译码器应用同样的格式对编码的数据进行译码以将数据转换回初始状态(originalstate)。现存在许多数据压缩的实例,虽然现在仍不断对现有技术进行发展和改进。算术编码是一种数据压缩形式,其利用并处理多个符号(symbol),然后把得到的码写入一个文件。算术编码通过为每一符号指定(assign)一个范围间隔(intervalofarange),利用概率估计(probabilityestimation)来编码符号,其中的范围间隔是从0至1。在概率估计中,一个具有较大出现概率(probabilityofappearing)的符号被指定范围的较大部分,而一个具有较小出现概率的符号被指定范围的较小部分。此种概率估计会详细在下文中描述。举例来说,当编码二进制串(binstring)"010"时,符号"l"的概率是0.4,而符号"O"的概率是0.6。因此,在此实例中,"O,,是最有可能符号(MostProbableSymbol,MPS),而"l"是最不可能符号(LeastProbableSymbol,LPS)。开始,范围是200,且范围的下界(lowvalue)是0。当第一个符号"0"被编码时,因为"0"的才既率是0.6,范围即为200的0.6,即120。因为MPS占据了范围的较低部分(lowerpart),下界仍保持为0。对于下一个符号,"1"的概率是0.4,所以其范围为120的0.4,即48。因为LPS占据了范围的较高部分,新的下界值是72。最后,对于符号"0",新的范围变成48的0.6,即28.8,而下界保持不变。二进制算术编码是一种算术编码形式,其在处理之前将所有符号都转换成二进制形式的算术编码。二进制算术编码处理有四个阶段(stage)。第一个阶段是二进制化(binarization)阶段,其中每一符号都被转换为二进制值(binaryvalue,下文简称为二进制值),从而形成二进制串。第二阶段依据先前编码的二进制值选择上下文模型(contextmodel),即概率模型(probabilitymodel)。第三个阶段,每一二进制值依据目前上下文模型被编码。第四个阶段,上述上下文模型根据上述已编码的二进制值更新。在二进制算术编码中,范围值是一个9比特长的值,其中,第9比特是最高有效位(MostSignificantBit,MSB),并显示上述范围是否落在256以下。上下文适应性二进制算术编码(ContextAdaptiveBinaryArithmeticCoding,CABAC)是一种常用算术编码形式,其在每一二进制值编码后就根据先前编码的二进制〗直更新和1率。CABAC应用LPS查询表(LookUpTables,LUT),LPS查询表包含有多个可能的范围值(possiblerangevalues)。目前上下文模型(currentcontextmodel)以及目前范围的比特7及比特8被输入到LPS的LUT中,然后根据上述信息输出预估范围Mispredictedrangevalue)。请参考图1,图1是二进制值编码引擎100的方框图。二进制值编码引擎100包含LPS编码表(codingtable)120,减法器130,加法器140。开始,先前范围与上下文模型祐j叙入至LPS编码表120,LPS编码表120根据上述信息输出第一LPS范围。二进制值编码引擎IOO利用减法器130从先前范围中减去第一LPS范围来确定第一MPS范围。另外,先前范围的先前下界被输入至二进制值编码引擎100。若目前二进制值是MPS,下界值会保持不变(请参考前述段落的示例),因此上述值可被直接输出。但是,如目前二进制值是LPS,上述下界值必须要加到从减法器130输出的第一MPS范围上。上述操作由加法器140执行。从上述可以看出,每一二进制值的操作都很复杂。在现有技术中,因为每一二进制值要顺序(sequentially)编码,因此产出量(throughput)是有限的。
发明内容为了解决顺序编码速度较慢,产出受限的技术问题,本发明提供一种系统及方法,用于提高算术编码引擎的产出量。本发明之一目的系提供一种平行处理至少两个二进制值之方法,其用于算术编码二进制值串中,上述方法包含利用目前范围来计算二进制值串中第一二进制值的范围;当第一二进制值是最有可能符号时,利用目前范围同时前向预估二进制值串中第二二进制值的多个可能的范围与下界值;当第一二进制值的范围已计算出,利用计算出的范围从上述多个可能范围与下界值中选择第二二进制值的结果范围。本发明的另一目的是提供一种算术编码系统,用于二进制值串中平行编码至少两个二进制值,上述算术编码系统包含第一二进制值编码引擎,用于接收目前范围以及利用目前范围来计算为二进制值串中第一二进制值的范围;以及第二二进制值编码引擎,平行耦接于第一二进制值编码引擎,用于当第一二进制值为最有可能符号时,利用目前范围同时前向预估上述二进制值串的第二二进制值的多个可能的范围,以及利用第一二进制值的计算出的范围来选择第二二进制值的结果范围与下界值。本发明通过平行编码至少两个二进制值,可增加同时处理的二进制值的数量,从而提高系统产出。图l是根据现有技术的二进制值编码引擎的示意图。图2是^f艮据本发明的一种实施方式的平行编码系统的示意图。具体实施例方式在说明书及权利要求书当中使用了某些词汇来称呼特定的元件。本领域的技术人员应可理解,硬件制造商可能会用不同的名词来称呼同一个元件。本说明书及权利要求书并不以名称的差异来做为区分元件的方式,而是以元件在功能上的差异来做为区分的准则。在通篇说明书及权利要求书当中所提及的"包含"是开放式的用语,故应解释成"包含但不限定于"。此外,"耦^接"一词在此是包含任何直接及间接的电气连接手段。因此,若文中描述第一装置耦接于第二装置,则代表第一装置可直接电气连接于第二装置,或通过其它装置或连摔手段间接地电气连接到第二装置。如前所述,本发明的目的在于通过平行处理各个二进制值以提高二进制值编码引擎的产出量。本发明利用前向预估(forwardprediction)来达成该目的,其中当第一二进制值为MPS时,前向预估以确定第二二进制值的多个可能范围值与下界值。接着利用已确定的第一二进制值的范围值来为第二二进制值选择结果范围值(resultantrangevalue)及下界值。当第一二进制值为LPS时,平行确定(paralleldetermination)可直接执行。请再参考图1。从示意图中可看出,目前范围与上下文模型(概率)被输入至LPS编码表120以产生第一二进制值的两个可能范围,LPS范围与MPS范围。如第一二进制值是LPS,则第一个范围会被选择,而若第一二进制值是MPS,则第二个范围会被选择。因此,第二个二进制值的编码引擎具有两个可能的输入范围。而且,每一二进制值具有与其对应的上下文模型(概率),因为上下文模型是根据第一二进制值是MPS还是LPS来更新的。若第一二进制值是LPS,则范围与下界值可被直接计算,这是因为仅有一个可能值存在。但是,如果第一二进制值是MPS,则二进制值编码引擎会需要利用前向预估来确定第二二进制值编码引擎可能的范围与下界值。示例1:第一二进制值为MPS如上所述,范围的比特7与比特8是用来作为关键值(key)以存取LPS编码表120来为二进制值串中下一个二进制值输出LPS范围。当第一二进制值是MPS时,由于第一二进制值编码引擎100的范围输出还未知晓,比特7与比特8有四个可能值{0,0},{0,1},{1,0}或{1,1}。每一上述多个字节合会根据是否范围需要重整化(renormalization)而产生两个可能范围,若需要重整化,第二二进制值的范围会相应更新。因此,第二二进制值的范围可能有8个可能结果。同样的,对应第二二进制值的8个可能的范围会有8个可能的第二二进制值的下界值。一旦第一二进制值的范围已被确定,第二二进制值的范围的一个与下界值的一个可被选择来为二进制值串中下一个二进制值做准备。通过平行产生所有第二二进制值的结果以及第一二进制值编码引擎ioo产生的范围,产出量可大幅增加。请参考图2,图2是根据本发明一个实施方式的平行二进制值编码系统的示意图。上述平行二进制值编码系统包含多个平行二进制值编码引擎200,300与400。为了简化i兌明,仅显示了平行二进制值编码引擎200的细节。平行二进制值编码引擎200包含第一二进制值编码引擎IOO,以及至少一个第二二进制值编码引擎220。第二二进制值编码引擎220包含LPS编码表250,以及两个8至1多任务器(mux)270,用于当第一二进制值为MPS时从8个可能的结果中选择第二二进制值的最终下界值与最终范围。请注意,虽然平行二进制值编码引擎200仅仅显示包含第一二进制值编码引擎100与第二二进制值编码引擎220,此非本发明的限制,而且本领域中4支术人员可明白在不超出本发明精神下,平行二进制值编码引擎200能包含三个或更多的二进制值编码引擎。还请注意,第一二进制值编码引擎100中具有与图1中同样数字的组件也具有与l图中组件同样的功能,因此不再赘述。当目前范围(Range—0)与下界值(Low—O)被第一二进制值编码引擎IOO接收时,它们同时也被第二二进制值编码引擎220接收。在本实施方式中,由于第一二进制值是MPS,则必须要为第二二进制值计算8个可能的范围与下界值。上述8个可能值取决于第一二进制值的结果范围的比特7与比特8,也取决于上述第一二进制值是否被重整化。第一二进制值编码引擎100的2至1多任务器150与160选择中间范围(LPSrange_0,MPSrange—O)与中间下界值(LPSlow—0,MPSlow—0),然后重整化模块170有选择地对上述中间范围与中间下界值执行重整化操作以产生下一个二进制值的范围与下界值。若上述范围的最高比特(MSB)为0时,重整化模块170扩大(expand)上述范围来充分利用比特长度(bitlength)。当第一二进制值是MPS时,一个扩大范围的实施方法是将范围值左移一比特。当第二二进制值编码引擎220接收到第一二进制值的范围(RangeJ)与下界值(Low—l)时,Range—1与Low—1被移比特6比特以分别获取比特7与比特8。可以知道,不管Range—1与Low—1是否被重整化,第二二进制值的范围与下界值(Range_2与Low—2)能^皮正确地从8个产生值中选择出。上述操作是由两个8至1多任务器270执行,其中第一8至1多任务器以及第二8至1多任务器分别从8个产生值中选择结果范围与结果下界值。若9比特范围的MSB不是,T,,-说明范围落入256以下,因此在继续编码前需要被重整化。对于MPS来i兌,其可通过向左移位一位来达成,对于LPS来说,其最多要向左移位7位来达成。此操作可在两个8至1多任务器270之前进行,即,所有8个可能范围值会被重整化,或者,此操作可在接收到第一二进制值编码引擎的结果后进行。所有操作都在本发明范围之内。示例2:第一二进制值是LPS请一并参考图1与图2。比较两图可以看出,图2中第一二进制值编码引擎100也包含LPS移位表(shifttable)180,两个2至1多任务器150与160,以及重整化电路170。LPS移位表180是当第一二进制值是LPS时,用来确定在重整化时范围要移位多少位。2至1多任务器150、160,根据第一二进制值是LPS还是MPS分别输出第一二进制值的范围与下界值。因为在计算第二二进制值的范围与下界值时上述结果还未知晓,上述确定的移位位数(LPS—shift—bitj))被输入至第二二进制值编码引擎220,同样输入的还有上下文模型Probability—0,范围Range—0与下界值Low—0。当第一二进制值是LPS时,第二二进制值编码引擎220通过移位的比特的输入数量来精准地确定第二二进制值的下界值与范围。对于第一二进制值编码引擎100,产生两个可能范围与两个可能下界值。接着依据第二二进制值是LPS还是MPS选择结果下界值与范围。一并考虑两个示例,第二二进制值编码引擎220在第一二进制值为MPS时会前向预估8个可能值,在第一二进制值是LPS时会计算两个下界值与两个范围(上述两个下界值与两个范围是对应第二二进制值是LPS还是MPS)。一旦第一二进制值的确定已经知晓,第二二进制值编码引擎220可从所有预估值中选择来输出第二二进制值的下界值与范围。接着,上述多个值同时被输入至第三二进制值编码引擎以及第四二进制值编码引擎,操作将如上执行。本领域中技术人员应了解,利用应用前向预估第三二进制值的可能范围与下界值的二进制值编码引擎,平行编码超过两个二进制值是可行的。然后利用计算出的先前二进制值的范围来选择结果范围与下界值。这也同样在本发明范围之内。当第一二进制值是MPS时,在二进制值串中计算第一二进制值范围的同时前向预估第二二进制值的可能范围,这样能够增加算术编码系统的产出量。当第一二进制值是LPS时,第二二进制值的下界值与范围可直接计算。在二进制值串中通过同时前向预估许多位的可能范围,编码系统的产出量可大幅增加。在一个周期(cycle)中许多二进制值能被编码。因此,本发明的平行二进制值编码系统的效率比现有技术的效率要高。本领域的技术人员应当可以了解,本发明的方法可实作应用在如H.264等视频,音频或其他数字编码系统中,例如以软件、固件、硬件电路或各种组合实现,也可以整合到各种执行算术编码的电子装置。本发明的方法,或者其中某一部分可以用实际的媒介(tangiblemedia)储存的程序代码(例如,指令)形式实施,其中实际媒介可如软盘,CD-ROM,硬盘,或其它机器可读的储存媒介。其中,一旦程序代码装载于机器中,并由机器来执行,例如计算机,DVD录像机或类似装置,机器就成为实施本发明的装置。本发明所揭示的方法也可以用程序代码的形式通过传输媒介进行传输,如电线、电缆、光纤或其它传输媒体,一旦机器接收、装载并执行上述程序代码,例如计算机,上述机器就成为实施本发明的装置。当用一个通用处理器装载利用本发明的程序代码,程序代码与处理器结合来提供类似逻辑电路操作的特定装置。以上各种形式都在本发明的范围之内。本发明虽用较佳实施方式说明如上,然而其并非用来限定本发明的范围,任何本领域中技术人员,在不脱离本发明的精神和范围内,做的任何更动与改变,都在本发明的保护范围内,具体以权利要求界定的范围为准。权利要求1.一种平行处理至少两个二进制值的方法,其用在一个电子装置中,对二进制值串执行算术编码,上述方法包含利用目前范围来计算上述二进制值串中第一二进制值的范围;当上述第一二进制值是最有可能符号时,利用上述目前范围同时前向预估上述二进制值串中第二二进制值的多个可能的范围与下界值;以及当上述第一二进制值的范围已计算出,利用上述计算出的范围从上述多个可能的范围与下界值中选择上述第二二进制值的结果范围。2.如权利要求1所述的平行处理至少两个二进制值的方法,其特征在于,上述利用上述计算出的第一二进制值的范围从上述多个可能的范围中选择上述第二二进制值的上述结果范围的步骤更包含利用上述结果范围的最高有效位的值来选择性地重整化上述第二二进制值的上述结果范围。3.如权利要求1所述的平行处理至少两个二进制值的方法,其特征在于,上述利用上述目前范围同时前向预估多个上述二进制值串中上述第二二进制值的上述多个可能的范围与下界值的步骤更包含利用每一上述多个可能的范围的最高有效位的值来选择性地重整化每一可能的范围。4.如权利要求1所述的平行处理至少两个二进制值的方法,其特征在于,上述算术编码是应用在一个H.264系统中。5.如权利要求1所述的平行处理至少两个二进制值的方法,其特征在于,上述利用上述目前范围来计算上述二进制值串中上述第一二进制值的上述范围的步骤更包含利用目前下界值与上述目前范围来计算上述第一二进制值的下界值;以及上述利用上述目前范围同时前向预估上述二进制值串中的第二二进制值的上述多个可能的范围与下界值的步骤更包含同时利用上述目前下界值与上述目前范围来前向预估上述第二二进制值的上述多个可能的下界值。6.如权利要求1所述的平行处理至少两个二进制值的方法,其特征在于,当上述范围的最高有效位为0时,上述第一二进制值的上述范围是被重整化的。7.如权利要求1所述的平行处理至少两个二进制值的方法,其特征在于,当上述第一二进制值是最不可能符号时,上述第二二进制值的范围与下界值可被直接计算出。8.如权利要求1所述的平行处理至少两个二进制值的方法,其特征在于,当上述第一二进制值是最不可能符号时,上述方法更包含确定重整化上述第一二进制值的范围所需要的移位位数;以及利用上述确定的移位位数来确定上述第二二进制值的上述范围与上述下界值。9.一种算术编码系统,用在一个二进制值串中平行编码至少两个二进制值,上述算术编码系统包含第一二进制值编码引擎,用于接收目前范围并利用上述目前范围来计算上述二进制值串中第一二进制值的范围;以及第二二进制值编码引擎,平行耦接于上述第一二进制值编码引擎,用于当上述第一二进制值是最有可能符号时,利用上述目前范围同时来前向预估上述二进制值串的第二二进制值的多个可能的范围,以及利用上述第一二进制值引擎计算出的第一二进值的范围,来选择上述第二二进制值的结果范围与下界值。10.如权利要求9所述的算术编码系统,其特征在于,上述第二二进制值编码引擎包含编码表,用于接收上述目前范围以及利用上述目前范围来前向预估上述二进制值串中的上述第二二进制值的每一上述多个可能的范围;以及上述算术编码系统更包含第一8至1多任务器,耦接至上述第一二进制值编码引擎以及上述第二二进制值编码引擎,用来从上述第二二进制值编码引擎接收上述多个可能的范围与从上述第一二进制值编码引擎接收上述第一二进制值的上述计算出的范围,以及利用上述第一二进制值的上述计算出的范围来选择上述第二二进制值的上述结果范围。11.如权利要求10所述的算术编码系统,其特征在于,上述多个可能的范围在被输入至上述第一8至1多任务器之前被选择性地重整化。12.如权利要求10所述的算术编码系统,其特征在于,上述第一二进制值编码引擎接收目前下界值以及利用上述目前范围与上述目前下界值来计算上述第一二进制值的下界值;以及当上述第一二进制值是最有可能符号时,上述第二二进制值编码引擎利用上述目前范围与上述目前下界值同时前向预估上述第二二进制值的上述多个可能的下界值,以及利用上述第一二进制值的上述计算出的范围值来选择上述第二二进制值的结果下界值。13.如权利要求12所述的算术编码系统,其特征在于,上述第二二进制值更包含第二8至1多任务器,耦接至上述第一二进制值编码引擎与上述第二二进制值编码引擎,用来从上述第二二进制值编码引擎接收上述多个下界值以及从上述第一二进制值编码引擎接收上述第一二进制值的上述计算出的下界值,以及利用上述第一二进制值的计算出的范围来选择第二二进制值的上述结果下界值。14.如权利要求9所述的算术编码系统,其特征在于,上述编码系统是应用在一个H.264系统内。15.如权利要求9所述的算术编码系统,其特征在于,上述第一二进制值编码引擎更包含重整化模块,用以根据上述范围的最高有效位来选择性地重整化上述第一二进制值的范围。16.如权利要求9所述的算术编码系统,其特征在于,当上述第一二进制值是最不可能符号时,上述第二二进制值编码引擎直接为上述第二二进制值计算范围与下界值。17.如权利要求9所述的算术编码系统,其特征在于,上述第一二进制值编码引擎更包含最不可能符号移位表,用以确定上述第一二进制值重整化所需要移位的位数,以及将上述确定的移位位数输入至上述第二二进制值编码引擎。全文摘要一种平行处理至少两个二进制值(bin)的方法,其用在一个算术编码二进制值串中,上述方法包含利用目前范围来计算二进制值串中第一二进制值的范围;当第一二进制值是MPS时,利用目前范围同时前向预估二进制值串中第二二进制值的多个可能的范围与下界值;当第一二进制值的范围已计算出,利用计算出的范围从上述多个可能的范围与下界值中选择第二二进制值的结果范围。本发明通过平行编码至少两个二进制值,可增加同时处理的二进制值的数量,从而提高系统产出。文档编号H03M7/40GK101414830SQ20081009391公开日2009年4月22日申请日期2008年4月22日优先权日2007年10月16日发明者徐沛玮,郭志辉申请人:联发科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1