经优化的CABAC解码器.pdf

上传人:00062****4422 文档编号:1344106 上传时间:2018-04-16 格式:PDF 页数:35 大小:1.23MB
返回 下载 相关 举报
摘要
申请专利号:

CN200880109052.5

申请日:

2008.09.25

公开号:

CN101809871A

公开日:

2010.08.18

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):H03M 7/40申请日:20080925|||公开

IPC分类号:

H03M7/40

主分类号:

H03M7/40

申请人:

高通股份有限公司

发明人:

刘镇; 王凯; 鲍易亮

地址:

美国加利福尼亚州

优先权:

2007.09.27 US 11/862,942

专利代理机构:

北京律盟知识产权代理有限责任公司 11287

代理人:

刘国伟

PDF下载: PDF下载
内容摘要

本发明提供一种使用用以优化用于H.264视频解码的基于上下文的适应性二进制算术译码(CABAC)的技术的装置。所述装置包括处理电路,其操作以实施用以同时解码多个二进制元素及在解码所述多个二进制元素之后重新正规化偏移寄存器及范围寄存器的指令集。所述范围寄存器及偏移寄存器可为32位或64位。使用较大范围寄存器允许在所述范围寄存器中仍存在足够位时跳过重新正规化。

权利要求书

1: 一种装置,其包含: 处理电路,其操作以执行指令集来同时解码多个二进制元素及在解码所述多个二进制元素之后重新正规化偏移寄存器和范围寄存器;及 存储器,其耦合到所述处理电路。
2: 根据权利要求1所述的装置,其中所述用以重新正规化的指令集包括用以计算使所述范围寄存器与所述偏移寄存器多位对准所需的左移量的计数前导零指令。
3: 根据权利要求2所述的装置,其中所述范围寄存器包含多个位,所述多个位被划分成前导零区段、9位区段及尾随零区段。
4: 根据权利要求1所述的装置,其中所述多个二进制元素是以指数葛洛姆二进制化(EG)码来表示的。
5: 根据权利要求1所述的装置,其中所述用以解码多个二进制元素的指令集包括用以同时解码多达16个连续二进制元素的指令。
6: 根据权利要求1所述的装置,其中所述用以解码多个二进制元素的指令集经配置以解码上下文适应性二进制算术译码(CABAC)。
7: 根据权利要求6所述的装置,其中所述处理电路进一步包含用以同时解码两个连续正规模式符号的指令。
8: 根据权利要求1所述的装置,其中所述装置包含蜂窝式电话、无线装置、无线通信装置、视频游戏控制台、配备无线功能的个人数字助理(PDA)、膝上型计算机或具有视频功能的装置。
9: 一种装置,其包含: 解码装置,其用于同时解码多个二进制元素;及 重新正规化装置,其用于在解码所述多个二进制元素之后使偏移寄存器与范围寄存器多位对准。
10: 根据权利要求9所述的装置,其中所述重新正规化装置包括用于计算使所述范围寄存器与所述偏移寄存器多位对准所需的左移量的计算装置。
11: 根据权利要求9所述的装置,其中所述解码装置包括用于解码指数葛洛姆二进制化(EG)码的装置。
12: 根据权利要求9所述的装置,其中解码装置包含用于解码上下文适应性二进制算术译码(CABAC)的装置。
13: 根据权利要求12所述的装置,其中所述解码装置包括用于同时解码两个连续正规模式符号的装置。
14: 一种设备,其包含: 解码器,其具有偏移寄存器及范围寄存器,且所述解码器同时解码多个二进制元素及在解码所述多个二进制元素之后重新正规化偏移寄存器及范围寄存器;及 存储器,其耦合到所述解码器。
15: 根据权利要求14所述的设备,其中所述解码器计算使所述范围寄存器与所述偏移寄存器多位对准所需的左移量。
16: 根据权利要求14所述的设备,其中所述范围寄存器包含多个位,所述多个位被划分成前导零区段、9位区段及尾随零区段。
17: 根据权利要求14所述的设备,其中所述解码器解码指数葛洛姆二进制化(EG)码。
18: 一种包括计算机可读媒体的计算机程序产品,所述计算机可读媒体具有用于致使计算机执行以下操作的指令: 同时解码多个二进制元素;及 在解码所述多个二进制元素之后重新正规化以使偏移寄存器与范围寄存器多位对准。
19: 根据权利要求18所述的计算机程序产品,其中所述用以重新正规化的指令包括用以计算使所述范围寄存器与所述偏移寄存器多位对准所需的左移量的指令。
20: 根据权利要求18所述的计算机程序产品,其中所述用以解码的指令包括用以解码指数葛洛姆二进制化(EG)码的指令。
21: 根据权利要求18所述的计算机程序产品,其中所述用以解码的指令包括用以解码上下文适应性二进制算术译码(CABAC)的指令。
22: 一种方法,其包含: 同时解码多个二进制元素;及 在所述解码之后重新正规化以使偏移寄存器与范围寄存器多位对准。
23: 根据权利要求22所述的方法,其中所述重新正规化包括计算使所述范围寄存器与所述偏移寄存器多位对准所需的左移量。
24: 根据权利要求23所述的方法,其中所述解码包括解码指数葛洛姆二进制化(EG)码。
25: 根据权利要求23所述的方法,其中所述解码包括解码上下文适应性二进制算术译码(CABAC)。

说明书


经优化的CABAC解码器

    【技术领域】

    本发明大体上涉及视频解码的领域,且更具体地说,涉及用于优化用于H.264视频解码的基于上下文的适应性二进制算术译码(CABAC)的技术。

    背景技术

    为了支持H.264主规范,基于上下文的适应性二进制算术译码(CABAC)是一项技术挑战。二进制算术译码处理的基本理念为递归区间划分。算术解码引擎核心保持两个寄存器。第一寄存器为具有9个位的范围寄存器。第二寄存器为在常规模式下为9个位且在旁路模式下为10个位的偏移寄存器。所述范围寄存器跟踪当前区间的宽度。偏移是来自位流且指向所述范围内的当前位置。当解码二进制元素(bin)时,依据解码所述特定二进制元素的上下文而定,将范围划分成两个子区间。在判定所述二进制元素之后,更新范围及偏移。在解码一个二进制元素之后,将重新正规化范围及偏移以保持解码下一个二进制元素的精确度。其确保所述9位寄存器范围的最高有效位总是为1。因此,存在CABAC核心中的大量逐位运算、频繁的重新正规化及从位流的逐位读取,其均为计算繁琐的。

    因此,继续需要用于优化用于H.264视频解码的基于上下文的适应性二进制算术译码(CABAC)的技术。

    【发明内容】

    本发明揭示用于优化用于H.264视频解码的基于上下文的适应性二进制算术译码(CABAC)的技术。在一种配置中,提供一种装置,其包含处理电路,所述处理电路操作以实施用以同时解码多个二进制元素及在解码所述多个二进制元素之后重新正规化偏移寄存器及范围寄存器的指令集。所述装置还包括耦合到所述处理电路的存储器。

    在另一方面中,提供一种集成电路,其包含处理电路,所述处理电路操作以实施用以同时解码多个二进制元素及在解码所述多个二进制元素之后重新正规化偏移寄存器及范围寄存器的指令集。所述集成电路还包括耦合到所述处理电路的存储器。

    在又一方面中,提供一种计算机程序产品,其包括计算机可读媒体,所述计算机可读媒体具有用于致使计算机进行以下操作的指令:同时解码多个二进制元素。所述计算机程序产品还包括用以在解码所述多个二进制元素之后重新正规化以使偏移寄存器与范围寄存器多位对准的指令。

    将从具体实施方式更容易明白额外方面,尤其是在结合附图来阅读时。

    【附图说明】

    在结合附图阅读时将从下文陈述的具体实施方式中更容易明白本发明的方面及配置,在附图中相同参考字符始终识别相应元件。

    图1展示无线装置的一般框图。

    图2A展示示范性H.264标准范围寄存器。

    图2B展示示范性H.264标准偏移寄存器。

    图2C展示示范性H.264标准MPS情况。

    图2D展示示范性H.264标准LPS情况。

    图3展示用于一个二进制元素的H.264标准算术解码处理的样本(伪码)指令集。

    图4展示H.264标准重新正规化处理的流程图。

    图5展示H.264标准正规解码模式处理的流程图。

    图6展示H.264标准旁路解码模式处理的流程图。

    图7展示H.264标准终止解码处理的流程图。

    图8A及图8B展示经修改的范围寄存器及偏移寄存器。

    图8C展示使用图8A及图8B的经修改的范围寄存器及偏移寄存器的视频处理器的框图。

    图9展示正规解码模式处理的流程图。

    图10A展示第一重新正规化处理的流程图。

    图10B展示第二重新正规化处理的流程图。

    图10C展示第三重新正规化处理的流程图。

    图11展示旁路解码模式处理的流程图。

    图12展示终止解码处理的流程图。

    图13A展示用于前缀EG码解码处理的样本(伪码)指令集。

    图13B展示图13A的前缀EG码解码处理的范围与偏移关系图。

    图14A展示用于后缀EG码解码处理的样本(伪码)指令集。

    图14B展示图14A的后缀EG码解码处理的范围与偏移关系图。

    图15A展示前缀EGK码解码处理的流程图。

    图15B展示后缀EGK码解码处理的流程图。

    图16A、16B及16C展示CABAC残余块语法布置。

    各图中的图像出于说明性目的而被简化,且并未按比例描绘。为了有助于理解,已在可能之处使用相同的参考标号来指示各图共同的相同元件,除了在适当时可能添加后缀以区分所述元件之外。

    附图说明本发明的示范性配置,且因而,不应被视为限制本发明地范围,本发明可容许其它同等有效的配置。预期一个配置的特征或步骤可有利地并入于其它配置中而无需作进一步叙述。

    【具体实施方式】

    词“示范性”在本文中用于意指“充当实例、例子或说明”。本文中描述为“示范性”的任何配置或设计不必被解释为比其它配置或设计优选或有利。

    本文所描述的技术可用于无线通信、计算、个人电子装置等等。下文描述所述技术用于无线通信的示范性使用。

    图1展示无线通信系统中的无线装置10的配置的框图。无线装置10可为蜂窝式或相机电话、终端、手持机、个人数字助理(PDA)或某种其它装置。所述无线通信系统可为码分多址(CDMA)系统、全球移动通信系统(GSM)系统或某种其它系统。手持机可为蜂窝式电话、无线装置、无线通信装置、视频游戏控制台、配备无线功能的个人数字助理(PDA)、膝上型计算机或具有视频功能的装置。

    无线装置10能够经由接收路径及发射路径来提供双向通信。在接收路径上,基站所发射的信号由天线12接收且提供到接收器(RCVR)14。接收器14调节并数字化所接收到的信号且将样本提供到数字区段20以供进一步处理。在发射路径上,发射器(TMTR)16从数字区段20接收将发射的数据,处理并调节所述数据,且产生经调制的信号,所述信号经由天线12发射到基站。

    数字区段20包括各种处理单元、接口单元及存储器单元,例如调制解调器处理器22、视频处理器24、控制器/处理器26、显示处理器28、ARM/DSP 32、图形处理单元(GPU)34、内部存储器36及外部总线接口(EBI)38。调制解调器处理器22执行用于数据发射及接收的处理(例如,编码、调制、解调及解码)。视频处理器24对视频应用(例如,可携式摄像机、视频重放及视频会议)的视频内容(例如,静止图像、移动视频及移动文本)执行处理。控制器/处理器26可指导数字区段20内的各种处理单元及接口单元的操作。显示处理器28执行有助于在显示单元30上显示视频、图形及文本的处理。ARM/DSP 32可为无线装置10执行各种类型的处理。图形处理单元34执行图形处理。

    本文所描述的技术可用于数字区段20中的任何处理器,例如,视频处理器24。内部存储器36存储用于数字区段20内的各种单元的数据及/或指令。EBI 38有助于数据沿着总线或数据线DL在数字区段20(例如,内部存储器36)与主存储器40之间传送。

    数字区段20可以一个或一个以上DSP、微处理器、RISC等等来实施。数字区段20也可制造于一个或一个以上专用集成电路(ASIC)或某种其它类型的集成电路(IC)上。

    本文所描述的技术可实施于各种硬件单元中。举例来说,所述技术可实施于ASIC、DSP、RISC、ARM、数字信号处理装置(DSPD)、可编程逻辑装置(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器及其它电子单元中。

    图2A展示示范性H.264标准范围寄存器50,且图2B展示示范性H.264标准偏移寄存器60。二进制算术译码处理的基本理念为递归区间划分。算术解码引擎核心保持两个寄存器。第一寄存器为具有9个位的范围寄存器50。第二寄存器为在常规模式下为9个位且在旁路模式下为10个位的偏移寄存器60。

    图2C展示大体上由参考标号50A表示的示范性H.264标准最大概率符号(MPS)情况,且图2D展示大体上由参考标号50B表示的示范性H.264标准最小概率符号(LPS)情况。所述范围寄存器跟踪当前区间的宽度。偏移是来自位流且是指向所述范围内的当前位置的点。应注意,下文所陈述的许多等式及表达式使用类似于C或C++计算机编程语言的语法。所述表达式是用于说明性目的,且可用具有不同语法的其它计算机编程语言来表达。

    当解码二进制元素时,依据解码特定二进制元素的上下文而定,将范围划分成两个子区间rLPS 52及rMPS 54。在等式(1)及(2)中定义子区间rLPS 52及rMPS 54

    rLPS=range*pLPS,及                            (1)

    rMPS=range*pMPS=range*(1-pLPS)=range-rLPS,  (2)

    其中pLPS为最小概率符号的概率;且pMPS为最大概率符号的概率。偏移所落入的子区间rLPS 52及rMPS 54判定二进制元素是MPS还是LPS二进制元素。如果偏移>=rMPS,则二进制元素为LPS二进制元素。否则,二进制元素为MPS二进制元素。在判定所述二进制元素之后,更新范围及偏移。项pMPS为概率。概率应在0到1内。项rMPS为range*pMPS。MPS与LPS的概率总和应等于1。

    在以下各种配置中,以所描绘的次序来执行流程图框,或可同时地、并行地或以不同次序来执行这些框或其部分。

    图3为用于一个二进制元素的H.264标准算术解码处理100的样本(伪码)指令集。所述指令集指示范围寄存器50及偏移寄存器60两者均为9个位。还指示范围寄存器50配置。所述指令集指示范围是在28<=range<29内。所述算术解码处理100为简短的且开始于确定范围是否>offset>=0的指令处。如果所述确定为“否”,则处理100结束。然而,如果所述确定为“是”,则下一指令集为if-else组。if语句检查以查看偏移是否>=rMPS。如果确定为“是”,则二进制元素为LPS情况。接着将范围更新为设定为等于子区间rLPS(图2D)的新范围(range_new),且将新偏移(offset_new)设定为等于offset-rMPS。

    如果if条件为“否”,则二进制元素为MPS情况。接着将范围更新为设定为等于子区间rMPS的新范围(range_new),且将新偏移(offset_new)设定为等于offset。

    图4展示H.264标准重新正规化处理150的流程图。在解码一个二进制元素之后,将重新正规化范围及偏移以保持解码下一个二进制元素的精确度。标准重新正规化处理150确保9位范围寄存器50的最高有效位总是为1,如图2A中所表示。标准重新正规化处理150开始于框152,在框152处判定范围是否<0x100。在框152处,将范围的值与256(或0x100)进行比较。如果所述确定为“否”,则处理150结束。然而,如果框152处的确定为“是”,则框152之后为框154。在框154处,将范围左移一个位,由range=range<<1表示。同样,将偏移左移一个位,由offset=offset<<1表示。还将偏移设定为offset(逐位OR)read_bits(1)。表达式offset(逐位OR)read_bits(1)表示范围/偏移寄存器的左移一个位的值。在所述移位之后,最低有效(最右边)位为0。表达式read_bits(1)从位流读取一个位,且将此一个位添加到偏移寄存器60的最低有效(最右边)位。

    框154循环回到上述的框152。框152及154的循环重复,直到框152处的确定为“否”为止,这完成重新正规化处理150。

    图5展示H.264标准正规解码模式处理200的流程图。在标准解码处理200中,为了避免乘法,使用64x4查询表(LUT)来近似上述等式(1)中陈述的rLPS。范围是通过将9位范围寄存器50等分成四个单元来近似。pLPS是由通过6位上下文状态索引的64个量化值来近似。因此,在框202处,根据等式(3)来计算rLPS

    rLPS=lutLPS[ctxIdx->state][(range>>6)&3]  (3)

    其中ctxIdx为对处理200的输入,表示上下文状态的索引且提供状态信息;range>>6表示右移6个位或除以26;且(range>>6)&3的结果提取在范围寄存器50中用于寻址LUT的位7-6(MSB之后的两个位)。表达式ctxIdx->state可采用0到63的值,其在64x4LUT中使用以获得rLPS。举例来说,如果范围为0b1xx yy yyyy,则所述范围将在0x100到0x1FE内,且使用(range>>6)&3来获得所述范围的“xx”。表达&为逐位AND函数。

    在框202处,还根据等式(4)来计算rMPS

    rMPS=range-rLPS    (4)

    其中rLPS是在等式(3)中计算出。

    框202之后为框204,在框204处确定偏移是否>=rMPS。如果确定为“是”,则框204之后为框206,在框206处根据等式(5)、(6)及(7)来计算二进制元素、范围及偏移

    bin=!ctxIdx->valMPS     (5)

    range=rLPS,及            (6)

    offset=offset-rMPS        (7)

    其中!ctxIdx->valMPS表示其中ctxIdx->valMPS可采用0或1的值的表达式,且“!”意指位翻转。项ctxIdx为所述函数的输入参数,且其提供状态及valMPS信息。项valMPS表示在MPS情况下的二进制元素输出。

    框206之后为框208,在框208处确定ctxIdx->state是否等于0。如果框208处的确定为“是”,则框208之后为框210,在框210处将ctxIdx->valMPS指派为等于!ctxIdx->valMPS。框210之后为框212。另外,如果框208处的确定为“否”,则框208之后也为框212。在框212处,将ctxIdx->state指派为等于TransIndexLPS(ctxIDx->state)。在解码每一二进制元素之后,需要更新与每一ctxIdx相关联的状态/valMPS。项TransIndexLPS/TransIndexMPS恰好为在H.264标准中定义的用以计算状态转变的两个LUT。

    再次返回到框204,如果框204处的确定为“否”,则框204之后为框214,在框214处根据等式(8)及(9)来计算二进制元素及范围

    bin=ctxIdx->valMPS;及         (8)

    range=rMPS。                    (9)

    框214之后为框216,在框216处将ctxIdx->state指派为等于TransIndexLPS(ctxIDx->state)。框212及216两者均前进到框218,在框218处发生重新正规化处理150。框218结束处理200。

    图6展示H.264标准旁路解码模式处理250的一般流程图。对于旁路解码模式处理250。在H.264标准旁路解码模式处理250中,将偏移左移1个位,且从位流读取1个位。将新偏移与范围进行比较以确定二进制元素是为1还是为0。

    标准旁路解码模式处理250开始于框252,在框252处将偏移设定为等于offset<<1,其中<<1表示乘以2或左移1位。此外,将偏移设定为等于offset(逐位OR)read_bits(1)。框252之后为框254,在框254处确定偏移是否>=范围。如果确定为“是”,则框254之后为框256,在框256处根据等式(10)及(11)来计算二进制元素及偏移

    bin=1;及            (10)

    offset=offset-range。(11)

    如果所述确定为“否”,则框254之后为框258,在框258处将二进制元素设定为等于零(0)。框256及258结束处理250。应注意,术语二进制元素也与位相同。

    图7展示H.264标准终止解码处理300的流程图。在解码指示end_of_slice_flag及I-脉冲码调制(I_PCM)模式的二进制元素时,调用所述标准终止解码处理300的专用解码例程。标准终止解码处理300开始于框302,在框302处使范围减少2(range=range-2)。框302之后为框304,在框304处确定偏移是否>=范围。如果框304处的确定为“是”,则在框306处将二进制元素设定为等于一(1)。然而,如果框304处的确定为“否”,则框304之后为框308,在框308处将二进制元素设定为等于零(0)。框308之后为框310,在框310处执行重新正规化处理150(图4)。框306及310两者结束H.264标准终止解码处理300。

    在CABAC初始阶段期间,将范围寄存器50(图2A)设定为0x1FE,从位流读取9个位以设定初始偏移寄存器60。

    如可从上文容易看出,使用9个位来表示范围及偏移。因此,在CABAC核心处理中存在大量逐位运算。

    在H.264标准正规解码模式处理200(图5)中,只要为LPS情况,由于LPS概率是<0.5,所以新范围将为<0x100。因此,需要进行重新正规化以使范围>=0x100。在新的示范性配置中,使用count_leading_zero(CLZ)指令以代替使用循环来计算所需的左移量。只要为MPS情况,由于MPS概率>=0.5,所述新范围将为0x080到0x1FE。因此,重新正规化需要至多一个左移以使最高有效位(MSB)为1。同时,将偏移左移相同量,且从位流读取新的位以将其填满。

    此外,在H.264标准旁路解码模式处理250中,总是将偏移左移1位,且从位流读取1个位。这需要非常频繁地进行重新正规化及从位流读取位,其均为计算非常繁琐的。

    图8A及图8B展示示范性配置的经修改的范围寄存器400及偏移寄存器410。范围寄存器400及偏移寄存器410可为32位或64位。出于说明性目的,本发明描述32位范围寄存器400及偏移寄存器410的实施方案。

    在CABAC核心初始阶段期间,应将范围寄存器400设定为0xFF000000=0x1FE<<23,应将偏移寄存器410设定为从位流读取的开头4个字节,因为CABAC部分位流的开始位位置为字节对准的。

    如图8A所示,范围寄存器400包含多个部分。在所述示范性配置中,将所述32个位划分成前导零部分402、有效9个位部分404及尾随零部分406。位位置(bitpos)是由前导零部分402中前导零位的数目指示,且使用Count_leading_zeros指令来计算。所述32位实施方案中的位位置为11个位。在尾随零部分406中尾随零的数目为(32-9-bitpos)=(23-bitpos)。范围寄存器400的至少一个部分中位的数目可改变。

    从范围寄存器400提取从最高有效位(MSB)开始的第一位1之后的两个位,且使用所述两个位来查询rLPS。使所查询到的值左移(23-bitpos)以与范围寄存器400中的有效9个位部分404对准。剩余的算法几乎相同,除了使用更有效的重新正规化以外。只要范围小于0x100,便将范围及偏移两者左移24个位(3个字节),从位流读取3个额外字节且将其附加到偏移寄存器410。因此,所有位流存取均是基于字节的。此示范性配置为用于说明性目的的实例。此外,可使用更多或更少的位来代替32个位。另外,虽然本文中的描述描述为8个位的字节,但在无迭代循环的重新正规化处理中可使用任何数目的多个位来代替本文所描述的字节布置。

    图8C展示具有处理器电路24A及解码器引擎24B的视频处理器24的框图。解码器引擎24B具有范围寄存器400及偏移寄存器410。视频处理器24与用于rLPS的查询表(LUT)420通信。以虚线展示方框420以表示其可在视频处理器24中或在视频处理器24外部。视频处理器24实行下文所陈述的处理。

    图9展示正规解码模式处理450的流程图。正规解码模式处理450类似于正规解码模式处理200(图5)。主要差异包括框452及460。在框452处,将位位置设定为等于count_leading_zeros(范围)。此外,根据等式(12)来计算rLPS

    rLPS=lutLPS[ctxIdx->state][(range>>(29-bitpos))&3]<<(23-bitpos)   (12)

    其中ctxIdx为对处理450的输入,表示上下文状态的索引,且提供状态信息;且range>>(29-bitpos))&3的结果提取前导1之后的两个位。表达式<<(23-bitpos)将用于与范围对准。表达式ctxIdx->state可采用0到63的值,其在64x4LUT中使用以获得rLPS。

    在图9中,框204、206、208、210、212、214及216对应于图5中具有相同编号的框。因此,不需要做进一步论述。然而,图5中212的重新正规化框由图10A的重新正规化处理500替代。

    图10A展示第一重新正规化(重新正规化1)处理500的流程图。第一重新正规化处理500开始于框502,在框502处判定范围是否为<0X100。如果所述确定为“否”,则处理500结束。然而,如果框502处的确定为“是”,则框502之后为框504。在框504处,将范围移位24个位,由range=range<<24表示。同样,将偏移移位24个位,由offset=offset<<24表示。还将偏移设定为offset(逐位OR)read_bytes(3)。

    因此,在将偏移左移24个位之后,偏移寄存器410的最右的24个位均为0。接着从位流读取3个字节(24个位),且将此添加到偏移寄存器410。如可看出,第一重新正规化(重新正规化1)处理500同时执行寄存器的多位对准而无需迭代循环操作。在所述示范性配置中,范围寄存器400及410的多位对准以字节区间来发生。

    图10B展示第二重新正规化(重新正规化2)处理600的流程图。第二重新正规化处理600开始于框602,在框602处判定范围是否为<0X200。如果所述确定为“否”,则处理600结束。然而,如果框602处的确定为“是”,则框602之后为框604。在框604处,将范围移位16个位,由range=range<<16表示。同样,将偏移移位16个位,由offset=offset<<16表示。还将偏移设定为offset(逐位OR)reaf_bytes(2)。因此,在将偏移左移16个位之后,偏移寄存器410的最右的16个位均为0。接着,从位流读取2个字节(16个位),且将此添加到偏移寄存器410。

    图10C展示第三重新正规化(重新正规化3)处理700的流程图。第三重新正规化处理700开始于框702,在框702处判定范围是否为<0X1000000。如果所述确定为“否”,则处理700结束。然而,如果框702处的确定为“是”,则框702之后为框704。在框704处,将范围移位8个位,由range=range<<8表示。同样,将偏移移位8个位,由offset=offset<<8表示。还将偏移设定为offset(逐位OR)read_bytes(1)。因此,在将偏移左移8个位之后,偏移寄存器410的最右的8个位均为0。接着,从位流读取1个字节(8个位),且将此添加到偏移寄存器410。

    图11展示旁路解码模式处理800的流程图。在旁路解码模式处理800中,将范围右移1位且将其与偏移寄存器410进行比较。因此,首先在框802处执行第二重新正规化处理600。这将确保在范围寄存器400及偏移寄存器410中存在至少10个位,或范围在右移之前为>=0x200。框802之后为框804,在框804处将范围设定为等于range>>1。

    在图11中,框254、256及258对应于图6中具有相同编号的框。因此,不需要做进一步论述。

    图12展示终止解码处理900的流程图。终止解码处理900开始于框902,在框902处将位位置设定为等于Count_leading_zeros(范围),且将范围设定为减少(2<<(23-bitpos))。框902之后为框304,在框304处确定偏移是否>=范围。

    在图12中,步骤304、306及308对应于图7中具有相同编号的框。因此,不需要做进一步论述。像图7一样,在框308之后发生正规化。然而,在图12中,在框910处使用图10A的第一重新正规化处理500,其中框910跟随在框308之后。框306及910两者结束终止解码处理900。

    用于旁路模式的多符号解码

    旁路解码模式处理800适用于两种情况:正负号或指数葛洛姆二进制化(EG)码。对于旁路二进制元素为正负号的情况,针对每一运动向量差(mvd)或coeff_level_minus1仅解码一个旁路二进制元素。EG码仅呈现为绝对运动向量差(abs_mvd)或abs_coeff_level_minus1的二进制元素串的后缀。而且,仅具有abs_mvd>8或abs_coeff_level_minus1>13的那些二进制元素含有所述EG码的后缀。表1识别具有用于abs_coeff_level_minus 1的前缀及后缀的二进制元素串。表2识别具有用于abs_mvd的前缀及后缀的二进制元素串。项coeff_level_minus1是来自变换系数级别,且abs表示绝对值。表3概括EG码前缀及后缀。

    随着位速率增加(量化步长QP减少,残余系数级别增加),预期残余系数解码将按比例地增加,因为主要增加将出现在abs_coeff_level_minus1的EG码中。在软件实施方案中,通过同时解码多个二进制元素来改进EG解码为重要的。在硬件实施方案中,如果硬件(HW)经设计以使得可在1个循环内解码多个二进制元素,则可对任何位速率位流的CABAC解码设置上限。由于在旁路模式中未涉及到上下文,所以32位范围及偏移寄存器的使用使一次进行多个旁路二进制元素解码成为可能。EC码以及术语残余系数级别增加及残余系数解码在H.264标准中为已知的。术语“一次”意指同时解码码字的所有位而非逐个地进行解码。如将从本文的描述所看出,所述示范性配置可加速EG码解码。

    表1:abs_coeff_level

    表2:abs_mvd

    表3:EG码前缀及后缀

    如表1及表2中所示,EG码含有前缀且在多数情况下含有后缀。所述前缀经一元译码。所述后缀中二进制元素的数目是由所述前缀决定的。借助于下表3中所指定的实例,如果EG码前缀为“10”,则EG0/EG3后缀中位的数目为1/4,如表3中第二行中所指定的。表3概括EG0码及EG3码的前缀及后缀。理论上,前缀/后缀部分可如在图13A及图14A中来解码。

    图13A展示用于前缀EG码解码处理1000的样本指令集。图13B展示图13A的前缀EG码解码处理的范围与偏移关系图。用于处理1000的样本指令集评估偏移是否小于一组阈值T1、T2、T3及T4,其中T1等于范围的1/2;T2为范围的3/4;T3为范围的7/8;且T4为范围的15/16。如果偏移小于T1,则将范围右移1位并返回位0。如果偏移小于T2,则offset=offset-T1,且将范围右移2位并返回位10。如果偏移小于T3,则将偏移相减并设定为T2,且将范围右移3位并返回位110。如果偏移小于T4,则将偏移相减并设定为T3,且将范围右移4位并返回位1110。

    在图13B中,展示偏移在T1、T2、T3及T4处相对于范围的值。

    图14A展示用于后缀EG码解码处理1010的样本指令集。图14B展示图14A的后缀EG码解码处理的范围与偏移关系图。图14A展示用于后缀EG码解码处理1010的样本指令集。用于处理1010的样本指令集评估偏移是否小于一组阈值T1、T2、T3、T4、T5、T6及T7,其中T1等于范围的1/8;T2为范围的2/8;T3为范围的3/8;T4为范围的4/8;T5为范围的5/8;T6为范围的6/8;且T7为范围的7/8。如果偏移小于T1,则返回位000。如果偏移小于T2,则offset=offset-T1并返回位001。如果偏移小于T3,则将偏移相减并设定为T2且返回位010。如果偏移小于T4,则将偏移相减并设定为T3且返回位011。如果偏移小于T5,则将偏移相减并设定为T4且返回位100。如果偏移小于T6,则将偏移相减并设定为T5且返回位101。如果偏移小于T7,则将偏移相减并设定为T6且返回位110。其它偏移为将偏移相减并设定为T7且返回位111。在所述返回中的任一者之后,将范围右移3。

    在图14B中,展示偏移在T1、T2、T3、T4、T5、T6及T7处相对于范围的值。

    图15A展示前缀EGK码解码处理1100的流程图。图15B展示后缀EGK码解码处理1200的流程图。展示用于解码所述前缀或后缀的示范性软件实施方案。由于解码每一二进制元素将使范围右移1位且在解码最后一个二进制元素之后范围必须>=0x100,所以首先重新正规化范围/偏移,使得范围>=0x1000000。以此方式,其可允许解码多达16个连续二进制元素。在模拟中,在将QP设定为1的情况下,所记录的EG码前缀/后缀中的最大二进制元素数目为9。举例来说,解码每一位将消耗范围寄存器中的1个位。如果范围>=0x1000000,则在解码最后一个位之后,范围将>=0x100。因此,存在可被解码的16个位。这在32位范围寄存器400的情况下为可能的。

    前缀EGK码解码处理1100开始于框1102,在框1102处发生第三重新正规化处理700。框1102之后为框1104,在框1104处将阈值指派为范围,其中将范围右移1位。此外,将前缀指派为0。框1104之后为框1106,在框1106处确定偏移是否>=阈值。如果框1106处的确定为“是”,则框1106之后为框1108。在框1108处,将范围右移1位,使阈值增加达范围的量,且prefix+=(1<<k)及k++。表达式prefix+=(1<<k)基本上表达为prefix=prefix+(1<<k);且k++针对所述循环使k增加1。

    框1108之后为框1110,在框1110处,offset-=(threshold-range)。表达式offset-=(threshold-range)还表达为offset=offset-(threshold-range)。框1110结束处理1100。在框1106处,如果确定为“否”,则框1106前进到框1110。项k为对DecodeEGKPrefix及DecodeEGKSuffix函数的输入。作为对DecodeEGKPrefix函数的输入,其在EG0码的情况下应为0且在EG3码的情况下应为3。对DecodeEGKSuffix函数的输入为来自DecodeEGKPrefix函数的值k。表达式prefix+=(1<<k)也展示于下表3中。举例来说,1110(第4行)意指前缀在EG0码的情况下为7,其为0b 111=(1<<0)+(1<<1)+(1<<2)。表达式offset-=(threshold-range)与offset=offset-(threshold-range)相同。

    后缀EGK码解码处理1200开始于框1202,在框1202处发生第三重新正规化处理700。框1202之后为框1204,在框1204处将后缀设定为0。框1204之后为框1206,在框1206处确定k是否大于0。如果所述确定为“否”,则处理1200结束。

    然而,如果所述确定为“是”,则框1206之后为框1208,在框1208处将范围右移1位且使k减少1。框1208之后为框1210,在框1210处确定偏移是否>=范围。如果所述确定为“否”,则框1210返回到框1206。然而,如果框1210处的确定为“是”,则框1210之后为框1212,在框1212处suffix+=(1<<k)且offset-=range。表达式suffix+=(1<<k)计算二进制串的值。举例来说,0b 1010=(1<<3)+(1<<1)且Offset=offset-range。框1108之后为框1110,在框1110处将偏移指派为threshold-range。框1110结束处理1100。在框1106处,如果确定为“否”,则框1106前进到框1110。

    实验结果

    表4到5展示标准核心与新优化核心之间的MIPS及循环/function_call比较。这些数值是在利用层3编译器优化及默认数据及指令高速缓冲存储器大小的情况下在DSP模拟器上对凯雅克(Kayak)序列而获得的。

    表4:标准核心与新核心之间的MIPS比较

    表5:标准核心与新核心之间的循环/函数调用比较

    表4及表5展示图5及图9的解码决策处理200及450的位速率、量化步长QP的比较。表4及表5还展示图6及图11的解码旁路处理250及800以及EGK码的解码处理的比较。表4还展示MIPS的结果。

    如果使用64位寄存器且特别关注CABAC初始阶段,则将能够使正读取的4个字节对准且进一步节省循环。进行图10A、图10B及图10C中所示的第一重新正规化处理500、第二重新正规化处理600及第三重新正规化处理700的阈值可改变为0x100000000,使得应用共用重新正规化例程。这将改变从位流读取字节的频率。其还可改变重新正规化检查频率。举例来说,可省略框1202处的在图15B的开始处的重新正规化检查。

    在图9中,在框460处执行的第一重新正规化处理500可移动到正规解码模式处理450的开始处。如果使用32位范围寄存器且重新正规化阈值为0x10000,则在解码第一符号之后,最小可能范围寄存器为0x600。为0x600的范围寄存器仍>0x100且可在无重新正规化的情况下解码下一个符号。因此,在多于9位的范围/偏移寄存器的情况下,其使得能够在无重新正规化的情况下解码多个二进制元素。由于原始重新正规化是基于位的,因此其非常繁琐。因此,范围寄存器400的布置可简化硬件架构以解码2个连续正规模式符号。

    图16A、16B及16C展示CABAC残余块语法布置。为了解码2个连续正规模式符号,成对地解码如图16A及图16B中所看到的significant_coeff_flag及last_significant_coeff_flag。如果significant_coeff_flag为0,则这指示系数为零系数且不存在last_significant_coeff_flag。如果significant_coeff_flag为1,则这指示系数为非零系数且待解码的下一个符号为last_significant_coeff_flag。因此,所述对的值可采用0或10或11。由于需要针对4x4块的每一残余系数解码所述对,所以潜在的加速/节省是相当显著的。项significant_coeff_flag及last_significant_coeff_flag在H.264标准中定义。

    图16C中的矩阵或块1400为数据组的示范性说明。图16B中表1350中的值是从图16C的数据组导出的。语法元素流1300是从表1350导出的。

    只要在范围/偏移寄存器中存在足够的位,就可跳过重新正规化检查。

    在一个或一个以上示范性配置中,所描述的功能可以硬件、软件、固件或其任何组合来实施。如果以软件来实施,则所述功能可作为一个或一个以上指令或代码而存储于计算机可读媒体上或经由计算机可读媒体传输。计算机可读媒体包括计算机存储媒体及通信媒体两者,所述通信媒体包括有助于将计算机程序从一处传送到另一处的任何媒体。存储媒体可为可由计算机存取的任何可用媒体。借助于实例而非限制,所述计算机可读媒体可包含RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置,或可用于以指令或数据结构的形式携载或存储所要程序代码且可由计算机存取的任何其它媒体。而且,将任何连接适当地称作计算机可读媒体。举例来说,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)或例如红外线、无线电及微波等无线技术而从网站、服务器或其它远程源传输软件,则同轴电缆、光纤电缆、双绞线、DSL或例如红外线、无线电及微波等无线技术包括于媒体的定义中。磁盘及光盘在本文中使用时包括紧密光盘(CD)、激光光盘、光学光盘、数字通用光盘(DVD)、软性磁盘及蓝光光盘,其中磁盘通常以磁性方式再生数据,而光盘用激光以光学方式再生数据。上述各者的组合也应包括于计算机可读媒体的范围内。

    提供对所揭示配置的先前描述以使得所属领域的技术人员能够制作或使用本发明。所属领域的技术人员将容易明白对这些配置的各种修改,且在不脱离本发明的精神或范围的情况下本文中所界定的一般原理可应用于其它配置。因此,本发明不希望限于本文所示的配置,而是应被赋予与本文所揭示的原理及新颖特征一致的最宽范围。

经优化的CABAC解码器.pdf_第1页
第1页 / 共35页
经优化的CABAC解码器.pdf_第2页
第2页 / 共35页
经优化的CABAC解码器.pdf_第3页
第3页 / 共35页
点击查看更多>>
资源描述

《经优化的CABAC解码器.pdf》由会员分享,可在线阅读,更多相关《经优化的CABAC解码器.pdf(35页珍藏版)》请在专利查询网上搜索。

本发明提供一种使用用以优化用于H.264视频解码的基于上下文的适应性二进制算术译码(CABAC)的技术的装置。所述装置包括处理电路,其操作以实施用以同时解码多个二进制元素及在解码所述多个二进制元素之后重新正规化偏移寄存器及范围寄存器的指令集。所述范围寄存器及偏移寄存器可为32位或64位。使用较大范围寄存器允许在所述范围寄存器中仍存在足够位时跳过重新正规化。 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 基本电子电路


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1