利用并行二进制算术解码的基于硬件的cabac解码器的制作方法

文档序号:7677636阅读:259来源:国知局
专利名称:利用并行二进制算术解码的基于硬件的cabac解码器的制作方法
利用并行二进制算术解码的基于硬件的CABAC解码器
背景技术
AVC-H.264视频数据压缩编码标准是众所周知的,它代表新一代 的视频压缩编码,并被希望取代许多应用所广泛使用的MPEG-2标准。 AVC-H.264实现比MPEG-2更高的压缩比,j旦是以更大处理复杂性为 代价。在一些方面中,AVC-H.264与MPEG-2相似;例如,二者均利 用运动补偿来将当前像素块与参考像素块匹配,以便将要转换编码的 差异数据减到最少。
一种根据AVC-H.264提供的压缩编码选择要求使用转换编码产 生的语法元素(包括运动矢量信息和其他边数据)的CABAC (基于 上下文的自适应二进制算法编码)。相对于其他类型的后级编码, CABAC可能提供重要的额外压缩效率,但是它需要相当大的处理复 杂性,尤其是在解码方面。用于AVC-H.264的CABAC解码器已用软 件形式写入用于在通用处理器上执行,但是所得到的解码器的性能在 吞吐量方面尚不能令人满意,尤其是在将高分辨率信号解码方面。而 且,bin的CABAC软件或硬件解码还可能在进行之后才能将下一个 bin解码,这可能产生瓶颈。


图1是示出根据一些实施例的视频信号再现系统的组件的框图。 图2是图示作为图1系统的一部分的视频解码器块中的数据流的 框图。
图3是示出作为图2的视频解码器块的一部分的位流分析器块的 一些细节的框图。
图4是图示一些实施例中的i状态转换的示意图。图5是示出作为图3的位流分析器块的一部分的并行上下文建才莫 器块的一些细节的框图。
图6是示出作为图3的位流分析器块的一部分的并行二进制算法 解码器引擎(PBADE)的一些细节的框图。
图7和图8是示出图5的PBADE的其他细节的示意图。
图9是根据一些实施例、具有多个PBADE级的解码电路的示意图。
图IO是图9的解码电路的一些细节的示意图。
图11和图12是示出图10B所示的电路的其他细节的示意图。
具体实施例方式
图1是示出根据一些实施例的视频信号再现系统100的组件的框图。
系统100包括视频信号源102。视频信号源102可以是例如从例 如空中广播或从电缆电视传输接收压缩编码的视频信号的接收电路。 此外或作为备选方式,视频信号源102可以再现来自记录或存储i某体 (例如硬盘或^ 兹盘或^f兹带形状的可移动记录媒体)的视频信号。可能 已根据公知的AVC-H.264标准将视频信号压缩编码,可能已使用 CABAC (基于上下文的自适应二进制算法编码)作为产生压缩编码的 视频信号的压缩编码过程的 一部分。
系统100还包括耦合到> 见频信号源102的^L频信号处理块104。 视频信号处理块104对视频信号源102提供的压缩编码的视频信号应 用多种过程以使得该视频信号能够被显示。视频信号处理块104的主 要组件是并行解码器106 (以虛框示出),它执行应用于视频信号的压 缩编码的逆操作。并行解码器106的多个方面将是本公开的主题。并 行视频解码器106适于以基本并行的方式将AVC-H.264/CABAC编码 的视频信号的多个bin解码,并且它还可以具有多个其他能力。
而且,系统100包括显示组件108 (例如,CRT或平板显示器),用于在视频信号被视频信号处理块104解码以及可能经过视频信号处
理块104的其他处理之后显示视频信号。
图2是图示并行解码器块106中的数据流的框图。 并行解码器106包括一个或多个存储器装置,由标号202指示这 些存储器装置并且这些存储器装置可以是双数据速率(DDR)存储器 装置。DDR存储器202可以存储压缩编码的视频信号,也可以存储解 码后的视频信号。
并行解码器106还包括耦合到DDR存储器202的存储器控制器 204。存储器控制器204控制将视频数据存储在存储器202中和从存 储器202中检索视频数据。并行解码器106还可以包括总线206。总 线206可以例如根据公知的MBUS标准来工作,并且可以允许存储器 控制器204以及并行解码器106的其他组件之间的数据通信。此类其 他组件可以包括主机处理器208、并行位流分析器(PBSP) 210、耦 合到PBSP 210并管理PBSP 210的控制处理器212、其他视频信号处 理单元214和由框216表示的另 一些其他组件。
绝大多数情况下,本公开的余下部分涉及PBSP210的某些方面。 正如将会见到的,PBSP 210用于并行地接收和处理CABAC编码的位 流同时将输入位扩展到bin流,然后将bin转换成AVC-H.264语法元 素的序列。视频处理单元214基于由位流分析器输出的语法元素所表 示的剩余变换数据、运动矢量和其他信息将视频信号重构成可再现形 式(例如通过重构视频信号的宏块)。
图3是示出PBSP210的一些细节的框图。PBSP210包括连接到 控制处理器总线304的总线接口 302。 PBSP210经由总线接口 302和 控制处理器总线304与控制处理器212进行数据消息传递。控制处理 器212经由在总线接口 302接收到的信号提供用于PBSP 210的控制 功能。来自控制处理器212的命令暂时存储在命令緩冲器中并在解码 器中进行解码(如图中305所示),该命令緩冲器和解码器也是PBSP 210的一部分。PBSP210还包括先进先出(FIFO)存储器306,先进先出(FIFO) 存储器306经由存储器控制器204 (如图2并非图3所示)从存储器 202 (图2)接收输入位流。作为PBSP 210的一部分的处理部件308 为PBSP210的其他组件提供控制指令和"边信息"。
PBSP 210中还包括起始代码检测和错误处理块310。 PBSP 210 的附加组件是状态寄存器312,状态寄存器312存储要经由总线接口 302和控制处理器总线304纟是供到控制处理器212的状态消息。
PBSP 210还包括属于本公开的相关重点的并行CABAC解码处 理器314。并行CABAC解码处理器314包括上下文建^莫器块316和 并行二进制算法解码器引擎(PBADE) 318, 二者将在下文中进行详 细描述。上下文建才莫器块316可以将一些上下文概率状态信息提供到 PBADE318, PBADE318可以使用上下文索引信息来帮助基于上下文 概率状态信息对来自FIFO存储器306的输入位执行并行位至bin的扩 充。
PBSP 210还可以包括用于实现CAVLC (上下文自适应可变长度 编码)解码的电路(由320指示),使得PBSP 210还可以处理对利用 AVC-H.264的CAVLC选择而非CABAC选择所编码的压缩编码的视 频数据进行的解码。
此外,PBSP210还包括可变长度解码器块322 (称为"快速压缩 解码器"或"FCD"),可变长度解码器块322从PBADE 318接收bin(仓)
法元素的序列。PBSP 210还包括由FCD 322用来将这些bin转换成语 法元素的码表324。而且,PBSP 210还包括一个或多个输出緩冲器326 , 这一个或多个输出緩冲器326用于在将语法元素提供到视频信号处理 单元214 (如图2而非图3所示)之前存储这些语法元素。
图4图示可结合并行CABAC解码处理器314使用的上下文状态 的示范图形。通常,可以将上下文定义为与索引号关联的汇集信息量。 为了易于解释,参考并行CABAC解码处理器314,将每个上下文与概率状态索引号0-7相关(从而本例中有8个上下文),当然在其他 实施例中,可以使用其他数量的概率状态。每个概率状态索引号称为 6。每个6对应于"上下文",该"上下文"表示将预测的bin值与实 际bin值比较时预测的bin值不正确的表明的机率(purported odds)。
例如,在并行CABAC处理器314内确定,在时间"n"的最可 能bin (MPB;或者有时称为较可能bin、较有可能或最有可能 bin-MLB-或较可能或最可能符号-MPS)值是"1"(即该bin值较可 能是"l")。 MPSn还具有关联的概率状态。MPSn具有对应的LPSn, 其在二进制运算中是MPSn的相反值。(LPS是指"最不可能符号", 也可以称为较不可能符号—LLS,或为了介绍的目的,称为较不可能或 最不可能bin—LPB或较不可能或最不可能bin—LLB。 ) LPSn还具有关 联的概率状态,其是MPSn概率状态的补状态(compliment)。 LPSn概率
状态给出MPSn值是不正确的可能百分比。
然后,在确定MPS值是否确实是要编码或解码的实际值之后, 基于此确定转换到下一个d状态。在图4中,基于bin的预测是正确 还是不正确,控制并行CABAC解码处理块314转换到哪个概率状态 《
例如,如果在d状态3中,存在20%的可能性预测的MPS是错 误的(即LPS值是正确值存在20%的概率)。如果MPS纟皮准确地预测
(即对照实际bin值比较MPB值,二者相等),则4状态3转换到d 状态4。 a状态4表明存在90%的可能性预测到它自己的对应MPS, 即要编码或解码的下一个bin值。这可以表示预测到下一个bin值
(MPSn+1 )的置信度增加。(例如,根据图4,当与MPSn比较时, 对于n+1的对应bin值,LPS存在10%的可能性)。
但是,如果MPS未被准确地预测(即对照实际bin值比较MPS 值,二者不相等),则d状态3转换到^状态2。 4状态2表明存在70% 的可能性,预测到它自己的对应MPS。(例如,根据图4,对于n+1 的对应bin值,LPS存在30。/。的可能性)。这可以表示预测到下一个值(MPSn+1)的置信度降低。
例如图4所示的概率状态表可以被并行CABAC解码处理块314 使用,下文将对此进行描述。
图5是示出上下文建才莫器块316的一些细节的框图。具体来说, 图5图示并行CABAC解码的上下文建^t方面的硬件实现(即硬件加 速器)的体系结构。图5的体系结构能够仅在几个时钟周期内确定并 行当前位/bin的适合上下文^t型,因此促进用于并行CAB AC解码的 可行且有效率的基于硬件的方法。PBADE的确定论述和后续论述都 假定,读者通常熟悉二进制运算编码的概念,并且也熟悉AVC-H.264 标准中描述的CABAC编码。但是,将使用二进制运算编码和使用上 下文/概率状态的示例作为示例来帮助说明本文描述的使用的示例。
每个"片段(slice)"的视频信号的包含不同类型的语法元素。对 于一个片段内的每个语法元素,基于所执行的二进制化的类型有最多
N个bin(h、 b2.....I)n)。可以有一个或多个上下文标签与每个bin
关联。如果有多于一个上下文标签与bin关联,则有多个特定的规则 来选择要使用的适合上下文。每个上下文标签表示与每个bin关联的 信息集合。
"上下文才莫型"是二进制符号(语法元素)的一个或多个bin的 概率模型。此上下文模型可以根据最近解码的语法元素的统计来从可 用的模型的选择中进行选择。上下文模型存储每个bin为"1"或为"0" 的概率,例如结合图4的示例所论述的。上下文建模器块316用于选 择PBADE 318要用于将当前bin解码的上下文才莫型。
在AVC-H.264标准要求的CABAC编码中,对于多种语法元素总 共有460个单独的上下文模型。将这些上下文^t型的项存储在查询表 402中,查询表402是上下文建才莫器块316的一部分。每个项包含6 位概率状态索引和最可能bin值的二进制(一位)值。这七位一起定 义要提供给PBADE 318的上下文索引。例如,虽然为了易于说明, 图4图示为具有8个^状态,但是还可以有26或128个S状态,每个^状态具有各自的LPS概率(以及因此具有隐含的MPS概率)。如上 所述,对于编码或解码时与上下文状态^关联的MPS值,上下文状态 给出MPS确实将是正确的值的表明的机率。
上下文^^莫型在每个片段的开始以及也在每个帧的开始^f皮初始化。 上下文状态的7位索引项可以由控制处理器212 (图2和图3)或由 处理部件308在片段开始处计算,并将其存储在本地RAM (未单独 示出)以构成查询表402。
并行上下文建才莫器块316还包括加法器404,加法器404具有其 耦合到查询表402的输出。加法器404计算上下文索引信号406,该 上下文索引信号406^皮提供到查询表402以从查询表402中存储的上 下文信息中选择要从查询表中输出的上下文信息(状态索引和最可能 bin值)。作为加法器输入,加法器404从第一电路分支410接收上下 文索引偏移量信号408以及从第二电路分支414接收上下文索引增量 信号412。
(加法器404可以视为"组合器"的一个示例。正如本文和所附 权利要求中使用的,"组合器"是指加法器或产生两个或两个以上输 入值的和的任何其他电路。)
在一些实施例中,第一电路分支410包括上下文索引偏移量寄存 器416。上下文索引偏移量寄存器经耦合以接收输入信号418。输入 信号418可以指示当前正在解码哪种类型的语法元素(或语法元素的 前缀或后缀部分)。基于输入信号418,上下文索引偏移量寄存器选择 要输出到加法器404的上下文索引偏移量信号408的值。因此,实际 上上下文索引偏移量寄存器(context index offset register)可以用作查询 表。
在一些实施例中,第一电路分支410可以包括两个偏移量寄存器 (未单独示出)。在此类实施例中,其中一个寄存器总是向加法器404 输出偏移量值,而另一个寄存器仅在当前语法元素属于表示变换系数 的块的类型的情况中才向加法器404输出第二偏移量值。因此,在一些实施例中,加法器404可以在一些情况中接收三个输入,而非如图 5所示的两个输入408和410。
在任何情况中,第 一电路分支410用于基于要解码的当前语法元 素的类型输出要在计算查询表402的索引信号时使用的偏移量。
在一些实施例中,第二电路分支414包括参考数据块420。参考 数据块420经耦合以接收输入信号418,如上所述该输入信号418指 示当前语法元素的类型。还将参考数据块耦合到FCD322 (图3,图5 中未示出),并且还耦合到提供到下文描述的bin索引计数器的"INC" 信号,以在一些情况中从FCD 322接收指示先前解码的语法元素的数 据。这些语法元素作为参考数据存储在参考数据块320中,该参考数 据与其他输入一起用于确定上下文索引增量信号412。先前解码的语 法元素可以来自与正#:解码的当前语法元素相同的片段(映像或映像 段)。例如,在一些实施例中,参考数据块中存储的语法元素数据可 以对应于当前语法元素表示的映像区域上边或左边的映像区域(块和/ 或宏块)。
在一些实施例中,对参考数据块420的输入除了指示当前语法元 素的类型外,还可以指示当前宏块的类型和/或属性。
参考数据(reference data)块420响应输入信号418和/或其他信息
考数据并将其输出。图5中在422处指示了此输出的参考数据。
第二电路分支414还包括bin索引计数器424。bin索引计数器424 用于输出bin索引426, bin索引426是计数器424的当前值。计数器 424耦合到控制器块(未示出)以响应FCD 322未能找到与当前bin 匹配的语法元素而接收增量信号,控制器块是上下文建模器的一部 分。还将增量信号提供到参考数据块420。计数器424还耦合到FCD 322以便被FCD 322选择性地复位(即每次FCD将语法元素解码时将 计数器424复位)。
第二电路分支414还可以包括运算逻辑单元操作块428。 ALU操作块428接收以下输入:(a)指示当前语法元素的类型的输入信号418, (b )由参考数据块420选择并从参考数据块420输出的参考数据422, 以及(c) bin索引426。以实现为将当前bin解码而选择适合的上下 文模型的AVC-H.264标准的要求的方式,生成来自ALU操作块428 的所得到的输出信号430。将输出信号430提供到上下文索引增量推 导块432,上下文索引增量推导块432也是第二电路分支414的一部 分。还将上下文索引增量推导块耦合以接收输入信号418,并且将上 下文索引增量推导块耦合到bin索引计数器424以接收bin索引426。 基于这些输入,上下文索引增量推导块432能够汇集ALU操作块428 所执行的操作(例如条件检查或if语句、加法、移位、指定),并由 此产生上述上下文索引增量信号412。因此,将上下文索引增量推导 块432耦合到加法器404以将上下文索引增量信号412作为输入输出 到加法器404。
虽然ALU操作块428和上下文索引增量推导块432在图5中图 示为分开的,但是可以将这两个块组合以形成基于输入418、 422和 426推导出上下文索引增量信号的块。而且,即使ALU操作块428和 上下文索引增量推导块432在物理上设置为单独的块,但是这二者可 以在概念上视为基于前一句中指示的输入推导出上下文索引增量信 号的一个块。
在任何情况中,第二电路分支414用于输出与来自第一电路分支 410的输出相加的增量以生成查询表402的索引信号。
上下文建才莫器块316还包括上下文信息更新块434。上下文信息 更新块434耦合到查询表402以更新存储在查询表402中的上下文信 息。用于更新查询表的信息由上下文信息更新块434从PBADE 318 接收,下文将对此进行更详细描述。
图6是示出PBADE 318的单个处理器部件的一些细节的框图。 图7和图8是示出PBADE 318的单个处理器部件的其他细节的示意 图。PBADE 318包括最可能bin值寄存器502。最可能bin值寄存器 502接收从上下文建模器块316的查询表402 (图5)输出的最可能 bin值,并存储该最可能bin值,该最可能bin值在算术编码中使用, 下文将进行详细描述。
PBADE 318还包括状态索引寄存器504。状态索引寄存器504从 上下文建模器块316的查询表402接收当前状态索引值并存储该状态 索引值。换言之,这包含索引状态(4概率),即关联的上下文表明 给出寄存器502中的MPS是不正确(因此暗示该值是正确)的机率。
PBADE 318还包括偏移量寄存器506和范围寄存器508。偏移量 寄存器506存储当前偏移量值,而范围寄存器508存储当前范围值。 如下文将见到的,偏移量寄存器506和范围寄存器508中存储的值从 PBADE318的前一个操作周期进行更新。以下文描述的方式从输入位 流(由510指示)和位处理的并行级推导出偏移量值,而从概率查询 表512输出的值推导出范围值,又通过存储在状态索引寄存器504中 的状态索引值对概率查询表512编索引,下文将对此进行详细描述。
偏移量寄存器506和范围寄存器508在算术编码中使用。简言之, 在算术编码中,确定有正确预测到给定值的可能性。为了便于解释, 将此可能性称为概率。此概率可以是取得MPS的可能性,例如如图4 所示(即,每个概率状态4具有它自己的上下文,该上下文是用于预 测正确或不正确值的概率范围)。
在一些实施例中,在PBADE 318中,使用偏移量,偏移量可以 在0处开始。在算术编码中,此偏移量称为"标记"值。在PBADE 318 中,如果要解码的实际值确实是MPS (通过将MPS与要解码的实际 值比较来确定),则将作为概率与范围寄存器508中的范围的函数的 数值加上该偏移量,下文将对此进行描述。在PBADE 318中,如果 要解码的实际bin确实是LPS (在将MPS与要解码的值比较之后), 则偏移量寄存器506中的偏移量数值不改变,但是按LPS与范围寄存 器508中的范围的函数来减小范围寄存器508中的范围,下文将对此进行描述。
在一些实施例中,如果要解码的实际值确实是MPS,则通过将由 S状态确定的MPS的可能百分比乘以范围值来增加偏移量值。如果要 解码的实际值是MPS,则通过将^状态的LPS的可能百分比乘以范围 值来减小寄存器508中的范围值。
除了概率查询表512外,PBADE 318还包括查询表514和516。 所有这三个查询表耦合到状态索引寄存器504,以便通过存储在状态 索引寄存器504中的状态索引d值来编索引。换言之,每个LUT512、 514和516可以访问示出上下文的相同表,例如如图4所示。
首先转到LUT 514和516 (其可称为"转换(transition)LUT"),查 询表514用于在在当前周期中选择最可能符号(MPS)值的情况下提 供状态索引更新值。例如,对于图4,如果当前上下文U状态)是状 态2,则LUT514输出状态"3"。查询表516用于在在当前周期中选 择最不可能bin值的情况下提供状态索引更新值。例如,对于图4, 如果当前上下文U状态)是状态2,则LUT 516输出状态"1"。然 后在复用器566中由差536来选择所选的输出状态,下文将对此进行 详细描述。
概率LUT 512耦合到四输入复用器520。概率LUT 512输出作为 从状态索引寄存器504接收的状态索引A的函数的概率值。概率LUT 512和复用器520都是乘法器521的一部分。复用器520的每个输入 从概率查询表512分别接收一组四个输出的其中一个。复用器520耦 合到范围寄存器508,以便由范围寄存器508中存储的范围值的两个 最低有效位来控制复用器520。范围值的两个最高有效位(MSB)的 值选择概率查询表512的输出的精度级,然后由复用器520采用该精 度级。
在乘法器521中,可能发生两件事。首先,LUT512确定给定状 态么的LPS的概率四个精确的概率值-四个象限的每个象限对应于 一个精确的概率值;这些值被输入到复用器520中。其次在复用器520中,使用508的范围的两个最高有效位来选择 这四个预先计算的象限值的其中之一。复用器520处的所得到的选择 具有生成最不可能符号的范围的乘法效应。乘法器521表示LPS的概 率值乘以象限的范围值。
为了易于解释,LPS值的此范围将表示为"rLPS", MPS值的范 围将由"rMPS"表示。rLPS与rMPS之和将等于范围寄存器508中 存储的范围。
从图9起为了易于论述,514、 516和521全部称为查询表611 的一部分。从图9起为了易于论述,图6的其他部件称为级1 621的 一部分。
PBADE 318还包括判断块518。判断块518耦合到状态索引寄存 器504,以便指示状态索引寄存器504中存储的状态索引d值是否等 于0。如果是这样的话,判断块518输出"1"值作为输出。否则,判 断块518输出"0"值作为输出。
例如,在图4中,如果A状态等于O,则518输出值1。否则, 它输出值"0"。这指示预测到MPS有表明的50%概率。判断块518 可以指示这些数值的趋势,以及指示实际上应该对MPS在给定时间 点的值取反值。
PBADE 318还包括减法块522。减法块522耦合到范围寄存器508 和乘法器521的输出。减法块522用于从范围寄存器508中存储的范 围值减去乘法器521计算的rLPS值。此减法运算的结果是524处指 示的差值。换言之,减法块522生成MPS的范围(rMPS)作为其输 出,因为已从该范围值减去LPS的范围。rMPS和rLPS都^皮输入到复 用器546中以便在以后供选择,下文将对此进行详细描述。
此外,PBADE318也包括减法块526。减法块526耦合到偏移量 寄存器506和减法器522的输出。减法块526用于从偏移量寄存器506 中存储的当前偏移量值减去从减法器522输出的差值。减法块526执 行的此减法运算的结果是528处指示的差值。换言之,已经从偏移量值中减去rMPS。
PBADE 318还包括判断块530。判断块530耦合到减法块526的 输出以指示差值528是否不小于0。如果差值528小于0,则判断块 530提供具有值"1"的输出。如果差值528等于或大于0,则判断块 530提供具有值"0"的输出。换言之,然后将rLPS值与偏移量值比 较。 一般来说,如果偏移量值大于rLPS,则这意味着最可能bin值是 要输出的值;否则,最不可能bin值是要输出的值。
要理解,可以认为减法块526和判断块530 —起构成比较块,该 比较块将偏移量寄存器506中的偏移量值与从范围寄存器508中的范 围值推导出的值比较。
将判断块530的输出提供到bin值选择和更新块,bin值选择和更 新块在图6中由532指示并且在图7中更详细地示出。532还输出更 新的MPS ( 533 ),更新的MPS ( 533 )被传送到上下文建模器(即图 4 )并^皮传送到图9的级2 760,下文将对此进行详细描述。
立即转到图7,bin值选择和更新块532是PBADE318的一部分, 并且包括复用器(multiplexer)534。复用器534耦合到图6的判断块530 在图6中的输出536,以便由输出536来控制。复用器534有两个输 入,其中一个输入是反相输入(inverting input), 二者都耦合到最可能 bin值寄存器502 (图6 )。因此,复用器534响应从判断块430输出 的值而在最可能bin值与最可能bin值的相反值(inverse)之间进行选 择。如果从判断块430输出的值是"1",则复用器534选择最可能bin 值作为其输出值。如果从判断块530输出的值是"0",则复用器534 选择最可能bin值的相反值作为其输出值。然后作为当前解码的bin 值将来自复用器534的输出值从PBADE 318输出到FCD 322 (图4 )。 在一些实施例中,来自复用器534的输出是要并行地解码的三个或四 个bin的其中之一。
接着参考图7, bin值选择和更新块532还包括AND逻辑门538。 AND门538具有耦合到判断块530 (图5 )的输出536的反相输入和耦合到判断块518的输出的非反相输入。bin值选择和更新块532还 包括复用器540。复用器540耦合到AND门538以便由AND门538 的输出来进行控制。复用器540具有两个输入,其中一个输入是反相 输入。复用器540的两个输入都耦合到最可能bin值寄存器502(图5 )。 与复用器534 —样,复用器540在最可能bin值与最可能bin值的相 反值之间进行选择。复用器534执行的选择是响应AND门538的输 出来进行的。
如果AND门输出是"1"(逻辑真),则复用器540选择最可能 bin值的相反值作为复用器540的输出值。如果AND门输出是"O"(逻 辑假),则复用器540选择最可能bin值作为其输出值。然后将来自复 用器540的输出值存储在最可能bin值更新寄存器542中。最可能bin 值更新寄存器542是bin值选择和更新块532的一部分,并且耦合到 复用器540的输出。从寄存器524,将更新最可能bin值从PBADE 318 输出到上下文建才莫器块316的上下文信息更新块434 (图5 )以更新 查询表402。
PBADE 318还包括复用器544 (图6 ),复用器544 (图6 )耦合 到偏移量寄存器506并且耦合到减法块526的输出。复用器544还耦 合到判断块530以便由判断块530的输出536来进行控制。在输出536 的控制下,复用器528在偏移量寄存器506中存储的当前偏移量值与 从减法块526输出的差值528之间进行选择。如果从判断块530的输 出是"1",则复用器544选择当前偏移量值作为其输出值。如果判断 块530的输出是"0",则复用器544选择差值528作为其输出值。换 言之,如果该偏移量大于该偏移量减去rLPS,则选择该偏移量。如果 该偏移量小于该偏移量减去rLPS,则选择该偏移量-LPS。
转回到图6, PBADE318还包括复用器546。复用器546具有耦 合到减法块522以便接收差值524的输入。差值524是rMPS。复用 器546的另一个输入耦合到复用器520的输出,该输出是rLPS。复用 器546还耦合到判断块530以便由判断块530的输出536来进行控制。在输出536的控制下,复用器546在差值524与复用器520选择的范 围查询表值之间进行选择。如果判断块530的输出是'T,,则复用器 546选择差值524作为其输出值。如果判断块530的输出是"0",则 复用器546选择从复用器520输出的范围查询表值作为复用器546的 输出值。换言之,如果偏移量值小于或等于rMPS,则将rMPS作为输 出547传送到偏移量/范围更新器548。如果该偏移量值大于rMPS, 则将rLPS传送到偏移量/范围更新器548。
应该理解,输入到复用器544的值可以视为"偏移量更新值", 因为这些值是以下值或可用于产生以下值该值可以是用于偏移量值 与最不可能范围值的比较的偏移量值。
还应该理解,输入到复用器546的值可以视为"范围更新值", 因为这些值是以下值或可用于产生以下值,该值可以是用于偏移量值 与范围值的比较的范围值。
复用器544和546选择的相应输出值都作为输入提供到由548指 示并在图7中详细示出的偏移量和范围更新块。除了提供在组件526 和530 (减法块和判断块)处比较的范围和偏移量值的更新功能外, 偏移量和范围更新块548还用作要由PBADE318解码(扩展)成bin 值的位流510的输入点。然后将偏移量/范围更新块548中推导出的范 围值发送到图4的上下文建才莫器并发送到级2,如图9所示。然后将 偏移量/范围更新块548中推导出的偏移量值发送到图4的上下文建才莫 器并发送到级2,也如图9所示。
参考图8,其中更详细地描述了偏移量/范围更新块548。偏移量 和范围更新块548包括临时存储来自输入位流510的位的输入緩沖器 550。此外,偏移量和范围更新块548还包括寄存器552,寄存器552 用于选择要在下文将描述的偏移量更新操作中使用的位。
偏移量和范围更新块548还包括前导零检测(LZD)电路554。 LZD电路554耦合到复用器546的输出,以检测来自复用器546的输 出值中的前导零值位。(要理解,"前导零值位"是二进制数或位序列中的最高有效零值位。)
而且,偏移量和范围更新块548包括输入移位和逻辑运算块556。 输入移位和逻辑运算块556耦合到LZD电路554,以便由LZD电路 554进行控制。输入移位和逻辑运算块556还耦合到复用器544(图6 ) 的输出,以便接收从复用器544输出的值。而且,输入移位和逻辑运 算块556还耦合到从输入位流选择位的寄存器552。在LZD电路554 的控制下,输入移位和逻辑运算块556从输入位流移出多个位,其中 移出的位的数量对应于如LZD电路所检测的复用器546的输出中前导 零值位的位置。作为相同操作的一部分,输入移位和逻辑运算块556 对移出的输入位并对来自复用器的输出中的位应用逻辑OR运算。来 自输入移位和逻辑运算块556的所得到的输出用于为下一个操作周期 更新图8中由558指示的偏移量寄存器506 (图6)。
而且,偏移量和范围更新块548包括范围移位块560。范围移位 块560耦合到LZD电路554,以便由LZD电路554进行控制。范围 移位块560还耦合到复用器546 (图5 )的输出,以便接收从复用器 544输出的值。在LZD电路554的控制下,范围移位块560从复用器 544的输出移出多个位,其中移出的位的数量与输入移位和逻辑运算 块556在当前周期中移出的输入位的数量相同。移位块560还可以执 行逻辑OR运算,并可以从右边起用"0"位来填充。来自范围移位块 560的所得到的输出用于为下一个操作周期更新图8中由562指示的 范围寄存器508 (图6)。
偏移量和范围更新块548还可以包括初始化块564。初始化块564 耦合到范围移位块560以便在PBADE318的初始化期间将一系列"0" 位提供到范围移位块560。
偏移量和范围更新块548在LZD电路554的控制下执行操作, 在一个时钟周期中执行常规基于软件的AVC-H.264/CABAC解码器所 要求的再归一化(renormalization)循环的多次迭代。在一个时钟周期 中执行的再归一化的迭代的有效次数由LZD电路554的输出控制。再次参考图6, PBADE318还包括复用器566。复用器566耦合到查询表611的查询表514、 516,以便从其中接收作为状态索引寄存器504中存储的状态索引值的函数从其中选择的值。复用器566耦合到判断块530以便由判断块530的输出536来进行控制。在输出536的控制下,复用器546在来自查询表514的值与来自查询表516的值之间进行选择。如果判断块530的输出是"1",则复用器566选择来自查询表514的值作为复用器566的输出值。如果判断块530的输出是"0",则复用器选择来自查询表516的值作为复用器566的输出值。
例如,再次假定当前S状态是3,则从514选择例如由d状态4确定的下一个最可能上下文状态,或者从516选择例如d状态2的下一个最不可能上下文状态。如果偏移量大于rLPS,则选择下一个最不可能上下文状态,如果偏移量小于rLPS,则选择下一个最可能状态。
然后将来自复用器566的输出值存储在状态索引更新寄存器568中。该状态索引更新寄存器是PBADE 318的一部分,并且耦合到复用器566的输出。从寄存器568,将状态索引更新值从PBADE318输出到上下文建冲莫器块316的上下文信息更新块434 (图4)以更新查询表402。状态索引寄存器568还耦合到级2 760,下文将对此进行描述。
如本文描述的PBADE 318的体系结构可以帮助优化在数量少的时钟周期中输出解码的bin。通过偏移量和范围更新块548在单个周期中执行多个级别的再归一化的操作,以及还通过单个判断块530并行地控制多个复用器,促进了 PBADE的操作效率。
虽然附图中未示出,但是,上下文建模器和PBADE可以包含用于响应"旁路标志,,的电路。旁路标志可以出现在输入位流中以指示正在传送未经过算术编码的非常低概率的语法元素。旁路标志触发BSP中的旁路才莫式,使得不访问例如查询表512、 514、 516以及块502和504处于空闲状态。
现在转到图9,其中图示的是根据一些实施例的并行CABAC解码器700。最可能bin值寄存器502、偏移量寄存器506和范围寄存器508耦合到图6的级1 621。 LUT 1 611也耦合到级1。上下文表402也耦合到LUT611。 LUT611的输出,即516 (下"n"个最不可能状态)、514 (下"n"个最可能状态)的输出以及乘法器521的输出耦合到级l 621。还将状态索引线从上下文表402耦合到图6的状态索引判断块518。为了易于解释,本公开的部件(例如LUT 514)的输出也作为514来提及。
上下文表402也耦合到LUT 2A710和LUT 2B 715。 LUT 710和715的每个LUT分别具有三个输出711-713和716-718。这些输出的每个输出与乘法器521的输出521以及LUT 514、 516的输出类似,但是用于下一个更可能或更不可能状态(n+l ),下文将对此进行描述。而且,在一些实施例中,可以将输出的次序重新组织。在一些实施例中,最不可能状态是第一个输出,最可能状态是第二个输出,以及最不可能状态的范围是第三个输出。
在LUT 2A710中,对于来自上下文表402的给定d状态,LUT 2A710接收从上下文建;f莫器402接收的d状态,并查看d + 1状态并输出作为d + 1状态的函数的值。例如,如果从上下文建冲莫器接收的^状态是3,则根据图4, ^+l状态是4。因此,d+l状态(即状态4)的下一个最不可能状态711、下一个最可能状态712和最不可能值的范围713分别通过711-713从710传送。
例如,如果上下文建才莫器402的A: 3,则LUT 2A(4 +1)710值变成d =4。因此,通过711将MPS输出d + l( S=5 )输出到MUX 732,并且通过712将d+lLPS级U=3)输出到MUX734,以及通过713将"+ 1,即S状态4 )百分比LPS (12% )的LPS的范围传送到MUX736。
在LUT 2B 715中,对于来自上下文表402的给定a状态,LUT 2B715查看d-1状态并输出作为d-1状态的函数的值。例如,如果么状态是3,则根据图4, d-l状态是2。因此,d-l状态(即状态2)的下一个最不可能状态716、下一个最可能状态717和最不可能值的范围分别通过716-718从715传送。
例如,如果上下文建才莫器402的A: d= 3,则LUT 2A (d -1) 715值变成d =2。因此,通过716将MPS输出d + l( ^=3 )输出到MUX 732,并且通过717将H LPS级(d=3 )输出到MUX 732,以及将U - 1,即d状态2 )百分比LPS ( 30% )的LPS的范围传送到MUX 736。
MUX732 (表示在& + 1与H状态的MPS之间的选择)、MUX734(表示在S十1和d - 1状态的不同LPS之间的选择)以及MUX736(表示在d十1和d-l状态的不同百分比之间的选择)的每一个作为来自级l 621的输出536的函数来进行控制,然后将这些值、为下一个最高上下文状态选择的rLPS或为下一个最低上下文状态选择的rLPS传送到级2 760,下文将结合图10对此进行更详细地描述。
对于级2 760,正如稍后将描述的,并不从上下文建才莫器402接收502、 504、 506、 508等,而是从级1接收作为MPS 533、偏移量558和范围562的MPS值、偏移量(即标记)和范围。级2的差引擎也使用级1611的状态索引寄存器568。
由此,在MUX 732、 734和736中,作为级1的输出536的函数,选择LUT2A(d + 1)710输出或选择LUT2B0 - 1)715输出。如果输出536是"r,则选择1^712八0+1)710,而如果输出536是"0",则选择107128(^-1)715。由此,基于级l输出的当前bin值来选择级2的适合状态。然后,选择输出(即710或715的输出),然后将此选择的输出作为范围LPS(n+l)、(n+l)的最可能A状态和(n+l)的最不可能A状态来传送。
在级2 760中,接收作为输出536的函数的输入716和714。它们表示("1)状态或0+ l)的下一个最不可能转换(714)、下一个最可能转换(716),以及输出536选择的0+ 1)状态的最不可能范围(747)的范围。而且,也将更新的状态索引562传送到级2 760。然后,在级2 760进行处理,该处理生成传送到级3的第二输出836。还由级2760生成二进制binl输出,该输出^皮传送到组合器780。级2 760还生成MPS(n+2)752、偏移量(n+2)754、范围(n+2) 756和状态索引(即n+l的^状态)。还将输出836输出到又耦合到级3的MUX 784、 786、787。在一些实施例中,从级2 760,将三个bin中的第二个bin解码为binl。级3 770耦合到级2 760。
上下文表402还耦合到LUT 3A 720、 LUT 3B 722、 LUT 3C 824和LUT3D826。为了易于解释,将LUT3A720、 LUT3B722指定为属于第一组719,以及将LUT 3C 824和LUT 3D 826指定为属于第二组723。
LUT 3A720、 LUT 3B 722、 LUT 3C 824和LUT 3D 826的每一个具有三个输出。LUT 3A720具有输出781-783; LUT3B 722具有输出784-786; LUT 3C 824具有输出787-789;以及LUT 3D 826具有输出790-792。 LUT3A、 3B、 3C和3D的每一个可以具有与LUT611、 710、715基本相同的结构,因为它们均包括相应的"最可能"LUT、相应的"最不可能"LUT、相应的范围/概率LUT和耦合到相应的范围/概率LUT的相应的合并(如710、 715中的情况;而非611 )。
在LUT 3A720中,对于来自上下文表402的给定^状态,LUT3A720接收从上下文建才莫器402接收的S状态,确定d + 1+ 1状态并输出作为d+l + l状态的函数的值。例如,如果从上下文建^f莫器接收的d状态是3,则根据图4, A+l + l状态是5。因此,d+l + l状态(即状态5)的下一个最不可能状态781 U=4)、下一个最可能状态782(d=6 )和最不可能值的范围分别通过781-783从720传送。
在LUT 3B 722中,对于来自上下文表402的给定d状态,LUT 3B722确定d+l-l状态并输出作为d+l-l状态的函数的值。例如,如果^状态是3,则根据图4, d+l-l状态是3。因此,a+l-l状态(即状态3)的下一个最不可能状态781 U=2)、下一个最可能状态782(^=4 )和最不可能值的范围分别通过784-786从720传送。
在LUT3C 824中,对于来自上下文表402的给定d状态,LUT3C824接收从上下文建才莫器402接收的d状态,确定H + 1状态并输出作为d - 1 + 1状态的函数的值。例如,如果从上下文建模器接收的d状态是3,则根据图4, d-l + l状态是3。因此,H+l状态(即状态3 )的下一个最不可能状态787U=2 )、下一个最可能状态788U=6 )和最不可能值的范围分别通过787-789从LUT 3C 824传送。
在LUT 3D 826中,对于来自上下文表402的给定^i状态,LUT 3D826接收从上下文建才莫器402接收的d状态,确定"1-1状态并输出作为d -1 -1状态的函数的值。例如,如果从上下文建模器接收的&状态是3,则根据图4, H-l状态是l。因此,d-l-l状态(即状态l)的下一个最不可能状态787 U=l)、下一个最可能状态788 (d=2)和最不可能值的范围分别通过790-792从726传送。
输入781和784被输入到MUX 740中。输入782和785被输入到MUX 741中。输入783和786 ^皮输入到MUX 743中。MUX 740、741和743属于组1 719。
输入787和790 ^皮输入到MUX 745中。输入788和791被输入到MUX 747中。输入789和792被输入到MUX 749中。MUX 745 、747和749属于组2 723。
组719和723的每个MUX的输出由输出536选择。如果输出536是"1",则选择表720和824的输出。如果输出536是"0",则选择表722和826的输出。与级2的情况中一样,部分地基于级l输出的当前bin值来选择级3的适合状态。
然后分別将组1719 (771、 772、 773 )和组2 723 (774、 775和776)的输出输入到MUX751、 753和755。然后,由级2的输出836来选择组l 719和组2723。下文将结合图IO更详细地描述差输出836。然后分别作为输入797、 798和799将所选的组(即组1 719或组2 723 )传送到级3 770。
相似地,对于级3 770,并不从上下文建才莫器402接收502、 506、508等,而是从级2为下一个选择的状态(即由输出536选择的d+1状态或d - 1状态)接收作为MPS (或MLB ) 752、偏移量754和范围756的MPS (或MLB)、偏移量(即标记)和范围。级3的差引擎也使用级2 760的状态索引寄存器760。在一些实施例中,从级3 770,将三个bin中的第三个bin解码为bin 2。
要理解,在一些实施例中,(d+1 - l)状态可能不一定等于a。例如,在图4中,状态6转换到状态7, (d+l),作为最可能状态。然后,对于LUT3B 722, d状态从当前上下文7转换到LPS, LPS是上下文状态5。
一般来说,在并行CABAC解码器700中,在一些实施例中,使用S+l和d-l可允许基本并行处理和解码多个bin的偏移量、范围、S状态、MSB等。
现在转到图10,其中图示的是根据一些实施例的级2 760和图9的耦合的电路。级2 760可以具有LUT2A710、 LUT2B715。这些输出4皮输入到MUX732、 734和736中。在一些实施例中,使用范围562来选择MUX 827的输出。然后将由输出536选择的MUX 732、 734和736的每个输出输入到级2 760中。
LUT 2A710具有范围LUT ( d + 1) 805和耦合的合并(merge)803。LUT 2A710还具有最可能LUT 808和最不可能LUT 807。它们的输出分别耦合到MUX 732-736。
合并803的每个输入从相无率查询表805接收一组四个输出的相应一个输出。由存储在状态索引寄存器568中的当前状态索引值选择特定的一组四个输出,以便状态索引值用作概率LUT 805的索引。该特定的 一组四个输出是从概率LUT 803中存储的多组四个精度值中选择的。
在一些实施例中,LUT 2A 710可以按如下方式工作。在最不可能LUT 807和最可能LUT 808处接收&状态。这些LUT表的每一个然后进行到d+l状态。然后,每个表LUT 807和808查询该^状态的下一个最可能和最不可能转^:。例如,如果从级l接收的d状态是3,则为d十l状态确定最不可能807和最可能808,例如级2、 4,并分别将这些值传输到MUX 734和736。
在一些实施例中,LUT 2A710可以按如下方式工作。概率LUT805对0+l)状态的概率(例如最不可能转换的40%可能性)编索引。然后,将此百分比传送到合并803,最后在适合的情况下,经由MUX732传送到MUX 827。在MUX 827,则由范围寄存器562乘上该概率,从而得到(d+l)的下一个状态的最不可能概率的范围值。然后将该值传送到MUX 732。注意,在一些实施例中,此值可以具有多个不同精度的输出。为了易于解释,将概率LUT 805和合并803称为乘法器821。
LUT 2B 715具有概率LUT 815和耦合的合并813,它们与MUX 732 —起起乘法器823的作用。LUT 2b 715还具有最不可能LUT807和最可能LUT 809。它们的输出分别耦合到MUX 732-734。
在一些实施例中,LUT 2B 715可以按如下方式工作。在最不可能LUT 817和最可能LUT 818处接收d状态。这些LUT表的每一个然后进行到6 -1状态。然后,每个表LUT 817和818查询该d-l状态的下一个最可能和最不可能转换。例如,如果从级l接收的d状态是3,则为4-l状态(例如级2)确定最不可能807和最可能808,并将这些值传输到MUX 734和736 (即S状态1和d状态3 )。
在一些实施例中,LUT 2B 715可以按如下方式工作。范围LUT815对(d-l)状态的概率(例如最不可能转换的40%可能性)编索引。然后,将此百分比传送到合并813,然后(在适合的情况下),经由MUX 732传送到MUX 827。在MUX827,然后由范围寄存器562乘上该概率,从而得到(d-l)的下一个级的最不可能概率的范围值。然后将该值传送到MUX866。
然后由输出536来选择MUX 732、 734、 736的输出。如果输出是l,则选择LUT 2A710的值。如果输出是O,则选择LUT2B715的值。
图10还包括级(stage)2 760。 一般来说,在一些实施例中,级2 760可以按与级l 621的相似方式工作,下文将简要描述,其中着重于它与级l 621和级3 770的关系。将级2 621的输出传送到级3 770。图11和图12是示出级2 760的其他细节的示意图。将bin 1输出到bin 1780 (图9A),然后将其传送到FCD 322。
级2 760具有与其关联的最可能bin值寄存器534。最可能bin值寄存器534从级1的MLB 533接收最可能bin值输出。
级2 760还具有与其关联的状态索引寄存器568。状态索引寄存器568从级1 621的状态索引寄存器568接收当前状态索引值,并存储此状态索引值。
级2 760还具有与其关联的偏移量寄存器558和范围寄存器562。偏移量寄存器558存储来自偏移量/范围更新器548的偏移量值(即"标记"),而范围寄存器562存储范围值。以下文描述的方式从输入位流(由510指示)推导出偏移量值,而由判断536从在乘法器821或823的输出中选择的值推导出范围值,通过存储在状态索引寄存器568中的状态索引值对其编索引。
级2 760还包括判断块818。判断块818耦合到状态索引寄存器输出568。如果判断块818指示状态索引为0,则判断块818输出T值作为输出。否则,判断块818输出"0"值作为输出。
级2 760还包括减法块822。减法块822耦合到范围寄存器862并且耦合到4:1 MUX 827的输出。减法块822用于从范围寄存器562中存储的范围值减去MUX 827所选的rLPS值。此减法的结果是由824指示的差值。换言之,减法块822生成作为其输出的MPS的范围(rMPS),因为已经从该范围值中减去LPS的范围。rMPS和rLPS都输入到MUX 846中以便在后面进行选择,下文将对此进行论述。
而且,级2 760包括减法块826。减法块826耦合到偏移量寄存器558并且耦合到减法块822的输出。此减法块826执行的减法的结果是由828指示的差值。换言之,已从偏移量值中减去rMPS。
级2 760还包括判断块830。判断块830耦合到减法块586的输出,以指示差值828是否不小于零。如果该差值828小于或等于0, 则判断块530提供具有值"1"的输出。如果该差值828大于0,则判 断块530提供具有值"0"的输出。换言之,然后将rLPS值与该偏移 量值比较。 一般来说,如果该偏移量值大于rLPS,则这意味着最可能 bin值^^要输出的值,否则,最不可能bin值是要输出的值。而且,将 输出836传送到级3 770 (图9B )。
要理解,可以认为减法块826和判断块830 —起构成比较块,该 比较块将偏移量寄存器558中的偏移量值与从范围寄存器562中的范 围值推导出的值进行比较。
将判断块830的输出提供到图10中由832指示并在图11中详细 示出的bin值选择和更新块。832还输出更新的MPS ( 833 ),更新的 MPS( 833 W皮传送到上下文建才莫器(即图4)并传送到图9B的级3 770。
在图11中,复用器834耦合到判断块830 (图10)的输出(在 图IO和11中由836指示),以便由输出836来进行控制。复用器834 有两个输入,其中一个输入是反相输入,二者都耦合到最可能bin值 寄存器534 (图10)。因此,复用器834响应从判断块830输出的值 在最可能bin值与最可能bin值的相反值之间进行选择。如果从判断 块830输出的值是"1",则复用器834选择最可能bin值作为其输出 值。如果从判断块830输出的值是"0",则复用器534选择最可能bin 值的相反值作为其输出值。然后作为解码的bin 1值将来自复用器834 的输出值从级2 760输出到FCD 322 (图3 )。
接着参考图11,bin值选择和更新块832还包括AND逻辑门838。 AKD门838具有耦合到判断块830 (图10 )的输出836的反相输入和 耦合到判断块818的输出的非反相输入。
bin值选择和更新块832还包括复用器840。复用器840耦合到 AND门838以便由AND门838的输出来进行控制。复用器840具有 两个输入,其中一个是反相输入。复用器840的两个输入都耦合到最 可能bin值寄存器534 (图10)。与复用器834 —样,复用器840在最可能bin值与最可能bin值的相反值之间进行选择。复用器834执行 的选择是响应AND门838的输出来进行。如果AND门输出是'T,
(逻辑真),则复用器840选择最可能bin值的相反值作为复用器840 的输出值。如果AND门输出是"0"(逻辑假),则复用器840选择最 可能bin值作为其输出值。然后将来自复用器580的输出值存储在最 可能bin值更新寄存器842中并作为MLB 852输出到级3 770。最可 能bin值更新寄存器842是bin值选择和更新块832的一部分,并且 耦合到复用器840的输出。
转回到图IO,级2 760还包括复用器844,复用器844耦合到偏 移量寄存器558并且耦合到减法块826的输出。复用器844还耦合到 判断块830以便由判断块830的输出836来进行控制。在输出836的 控制下,复用器844在偏移量寄存器558中存储的当前偏移量值与从 减法块828输出的差值828之间进行选择。如果判断块830的输出是
"1",则复用器844选择当前偏移量值(即"标记"值)作为其输出 值。如果判断块830的输出是"0",则复用器844选择差值828作为 其输出值。
级2 760还包括复用器846。复用器846具有耦合到减法块822 以侵j妄收差值824 (即最可能值的范围)的输入。复用器846的另一 个输入耦合到复用器827的输出。复用器846还耦合到判断块830以 便由判断块830的输出836来进行控制。在输出836的控制下,复用 器846在差值824 (即最可能值的范围)与复用器827选择的范围查 询表值(即最不可能输出的范围)之间进行选择。如果判断块830的 输出是"1",则复用器846选择差值824作为其输出值。如果判断块 830的输出是"0",则复用器846选择从复用器827输出的范围查询 表值作为复用器846的输出值。
复用器844和846选择的相应输出值都作为输入提供到由848指 示并在图12中详细示出的偏移量和范围更新块。除了提供在组件826 和830 (减法块和判断块)处比较的范围和偏移量值的更新功能外,偏移量和范围更新块848还用作要由级2 760解码(扩展)成bin值的位流510的输入点。
参考图12,偏移量和范围更新块848包括临时存储来自输入位流510的位的输入緩冲器950。此外,偏移量和范围更新块848还包括寄存器952,寄存器952用于选择要在下文描述的偏移量更新操作中使用的位。
偏移量和范围更新块848还包括前导零检测(LZD)电路954。LZD电路954耦合到复用器946的输出,以检测来自复用器946的输出值中的前导零值位。(要理解,"前导零值位"是二进制数或位序列中的最高有效零值位。)
而且,偏移量和范围更新块548包括输入移位和逻辑运算块956。输入移位和逻辑运算块956耦合到LZD电路954,以便由LZD电路954进行控制。输入移位和逻辑运算块956还耦合到复用器844 (图10)的输出,以便接收从复用器844输出的值。而且,输入移位和逻辑运算块956还耦合到从输入位流选择位的寄存器952。在LZD电路954的控制下,输入移位和逻辑运算块956从输入位流移出多个位,其中移出的位的数量对应于如LZD电路所检测的复用器946的输出中前导零值位的位置。作为相同操作的一部分,输入移位和逻辑运算块956对移出的输入位并对来自复用器的输出中的位应用逻辑OR运算。来自输入移位和逻辑运算块956的所得到的输出用于更新偏移量寄存器754 (图9 )以供级3 770使用。
而且,偏移量和范围更新块848包括范围移位块960。范围移位块960耦合到LZD电路954,以便由LZD电路954进行控制。范围移位块960还耦合到复用器846 (图5 )的输出,以便接收从复用器846输出的值。在LZD电路954的控制下,范围移位块960从复用器846的输出移出多个位,其中移出的位的数量与输入移位和逻辑运算块956在当前周期中移出的输入位的数量相同。移位块960还可以执行逻辑OR运算,并可以从右边用"0"位来填充。来自范围移位块960的所得到的输出用于更新范围寄存器756 (图9)以供级3 770使用。
偏移量和范围更新块848还可以包括初始化块964。初始化块964耦合到范围移位块960以便在级2 760的初始化期间将一系列"0"位提供到范围移位块960。
偏移量和范围更新块848在LZD电路954的控制下执行操作,在一个时钟周期中执行常规基于软件的AVC-H.264/CABAC解码器所要求的再归一化循环的多次迭代。在一个时钟周期中执行的再归一化的迭代的有效次数由LZD电路954的输出控制。
再次参考图10,级2 760还包括复用器866。复用器866耦合到MUX 734和736以从其中接收由输出536选择的状态索引值从其中选择的值。复用器866耦合到判断块830以便由级1 621的判断块530的输出536来进行控制。在输出536的控制下,复用器846在来自MUX 734 (最可能LUT )的值与来自MUX 736 (最不可能LUT )的值之间进行选择。如果判断块530的输出是"1",则复用器866选择来自MUX 734的值作为复用器866的输出值。如果判断块830的输出是"0",则复用器选择来自MUX 736的值作为复用器566的输出值。
然后将来自复用器866的输出值存储在状态索引更新寄存器868中。该状态索引更新寄存器是级2 760的一部分,并且耦合到复用器866的输出。从寄存器868,从级2 760将状态索引更新值输出到级3770。
在一些实施例中,如本文描述的级2 760的体系结构可以在数量少的时钟周期中输出解码的bin。通过偏移量和范围更新块548在单个周期中执行多个级别的再归 一化的操作,以及还通过单个判断块830并行地控制多个复用器,促进了 BADE的才喿作效率。
在一些实施例中,级3 770使用按前文描述选择的输入784、 786、787。将输出从级1 621耦合到级2 720,以及从级2 720耦合到级3 770可以促成输入流510的基本并行处理。换言之,可以比利用单级
CABAC处理器的情况实质上更快地将位流510解码。
未示出级3的内部结构,但是级3的内部结构类似于级1和2的结构,如上文描述以及在图6和10B中示出的。而且,在视频解码器的实施例中,采用4个二进制算术解码器级,包括附图中示出的三个级和耦合到级3的第四级(未示出)。可以采用与其他三个级相似的方式构成第四级。可以将8个LUT (未示出)与第四级关联,而非图9B中示出的与级3关联的4个LUT3A、 3B、 3C和3D。 8个LUT的每一个可以具有与LUT3A、 3B、 3C和3D中的构成部件相似的构成部件。而且,与第四二进制算术解码器级关联的8个LUT可以通过三层复用器(未示出)耦合到第四二进制算术解码器级,而非通过示出的将LUT3A、 3B、 3C和3D耦合到级3的两层复用器740、 741、 743、745、 747、 749、 751、 753、 755。正如有关级3的情况,将8个LUT耦合到第四二进制算术解码器级的多层复用器可用于根据当前是否从级1-3的每个级输出最可能bin值来为第四级选择适合的状态。
在其他实施例中,可以包括任何数量的两个或两个以上二进制算术解码器级。
本文示出单个上下文建才莫器,用于为多个二进制算术解码器级提供上下文信息。在其他实施例中,可以提供两个或两个以上上下文建模器,使得并非每个二进制算术解码器级都由相同的上下文建模器来提供服务。
如本文以及所附权利要求中使用的,二进制值的"相反值"是另一个二进制值;即T是"0"的相反值,"0"是T的相反值。
本文描述的多个实施例仅出于说明目的。本文描述的多种特征无需全部一起使用,可以将这些特征的任何一个或多个特征结合在单个实施例中。因此,本领域技术人员将从本文描述认识到可以用多种修改和替换来实施其他实施例。
权利要求
1. 一种二进制算术解码设备,包括第一对查询表;第一复用器,所述第一复用器用于在所述第一对查询表的第一查询表的输出与所述第一对查询表的第二查询表的输出之间进行选择;第二对查询表;第三对查询表;第二复用器,所述第二复用器用于在所述第二对查询表的第一查询表的输出与所述第三对查询表的第一查询表的输出之间进行选择;以及第三复用器,所述第三复用器用于在所述第二对查询表的第二查询表的输出与所述第三对查询表的第二查询表的输出之间进行选择;其中所述第一、第二和第三复用器全部由所述第一、第二和第三复用器共用的控制信号来控制。
2. 如权利要求1所述的设备,其中所述多对查询表和所述复用器是用于将压缩编码的视频信号解码的电路的一部分。
3. 如权利要求2所述的设备,其中所述多对查询表和所述复用器包含在二进制算术解码引擎中。
4. 如权利要求2所述的设备,其中如果选择最可能bin值为当前输出bin值,则控制所述第一复用器来选择所述第一对查询表的所述笫一查询表的输出;控制所述第二复用器来选择所述第二对查询表的所述第一查询表的输出;以及控制所述第三复用器来选择所述第二对查询表的所述第二查询表的输出;以及如果选择最不可能bin值为当前输出bin值,则控制所述第一复用器来选择所述第一对查询表的所述第二查询表的输出;控制所述第二复用器来选择所述第三对查询表的所述第一查询表的输出;以及控制所述第三复用器来选择所述第三对查询表的所述第二查询表的输出。
5. 如权利要求4所述的设备,其中所述最可能bin值是作为输入提供到第一二进制算术解码器级的第一最可能bin值;所述最不可能bin值是作为所述第一最可能bin值的相反值的第一最不可能bin值;以及所述当前输出bin值是从所述第一二进制算术解码器级输出的第一当前專俞出binj直;所述设备还包括第四复用器,所述第四复用器用于在所述第二复用器的输出与所述第三复用器的输出之间进行选择;其中如果第二二进制算术解码器级将作为输入提供到所述第二二进制算术解码器级的第二最可能bin值输出而作为第二当前输出bin值,则控制所述第四复用器来选择所述第二复用器的输出;以及如果所述第二二进制算术解码器级将作为所述第二最可能bin值的相反值的第二最不可能bin值输出而作为所述第二当前输出bin值,则控制所述第四复用器来选择所述第三复用器的输出。
6. 如权利要求5所述的设备,还包括第四对查询表;第五对查询表;第五复用器,所述第五复用器用于在所述第四对查询表的第一查询表的输出与所述第五对查询表的第 一查询表的输出之间进行选择;第六复用器,所述第六复用器用于在所述第四对查询表的第二查询表的输出与所述第五对查询表的第二查询表的输出之间进行选择;第六对查询表;第七对查询表;第七复用器,所述第七复用器用于在所述第六对查询表的第一查询表的输出与所述第七对查询表的第一查询表的输出之间进行选择;第八复用器,所述第八复用器用于在所述第六对查询表的第二查询表的输出与所述第七对查询表的第二查询表的输出之间进行选择;第九复用器,所述第九复用器用于在所述第五复用器的输出与所述第六复用器的输出之间进行选择;以及第十复用器,所述第十复用器用于在所述第七复用器的输出与所述第八复用器的输出之间进行选择。
7.如权利要求6所述的设备,其中如果所述第一二进制算术解码器级选择所述第一最可能bin值为所述第一当前输出bin值,贝'J:控制所述第五复用器来选择所述第四对查询表的所述第一查询表的输出;控制所述第六复用器来选择所述第四对查询表的所述第二查询表的输出;控制所述第七复用器来选择所述第六对查询表的所述第一查询表的输出;以及控制所述第八复用器来选择所述第六对查询表的所述第二查询表的输出;以及如果所述第一二进制算术解码器级选择所述第一最不可能bin值为所述第一当前输出bin值,贝'J:控制所述第五复用器来选择所述第五对查询表的所述第一查询表的输出;控制所述第六复用器来选择所述第五对查询表的所述第二查询表的输出;控制所述第七复用器来选择所述第七对查询表的所述第一查询表的输出;以及控制所述第八复用器来选择所述第七对查询表的所述第二查询表的l命出。
8. 如权利要求7所述的设备,其中如果所述第二二进制算术解码器级输出所述第二最可能bin值作为所述第二当前输出bin值,贝'J:控制所述第九复用器来选择所述第五复用器的输出;以及控制所述第十复用器来选择所述第七复用器的输出;以及如果所述第二二进制算术解码器级输出所述第二最不可能bin值作为所述第二当前输出bin值,贝'J:控制所述第九复用器来选择所述第六复用器的输出;以及控制所述第十复用器来选择所述第八复用器的输出。
9. 如权利要求2所述的设备,其中所述电路包括至少一个上下文建才莫器和多个二进制算术解码器级,所述多个二进制算术解码器级的其中至少 一个耦合到所述至少 一个上下文建才莫器的至少其中 一个,所述查询表用于将数据提供到所述二进制算术解码器级。
10. 如权利要求9所述的设备,其中所述多个二进制算术解码器级中的每个二进制算术解码器级耦合到所述至少一个上下文建才莫器的其中之一或耦合到所述多个二进制算术解码器级中的前一个二进制算术解码器级。
11. 一种系统,包括视频信号源,所述视频信号源用于提供压缩编码的视频信号;以及耦合到所述视频信号源的视频解码器,所述视频解码器用于将所述视频信号源提供的所述压缩编码的视频信号解码,所述视频解码器包括第一对查询表;第一复用器,所述第一复用器用于在所述第一对查询表的第一查询表的输出与所述第一对查询表的第二查询表的输出之间进行选择;第二对查询表;第三对查询表;第二复用器,所述第二复用器用于在所述第二对查询表的第一查询表的输出与所述第三对查询表的第一查询表的输出之间进行选择;以及第三复用器,所述第三复用器用于在所述第二对查询表的第二查询表的输出与所述第三对查询表的第二查询表的输出之间进行选择;其中所述第一、第二和第三复用器全部由所述第一、第二和第三复用器共用的控制信号来控制。
12.如权利要求11所述的系统,其中如果选择最可能bin值为当前输出bin值,贝'J:控制所述第一复用器来选择所述第一对查询表的所述第一查询表的输出;控制所述第二复用器来选择所述笫二对查询表的所述第一查询表的输出;以及控制所述第三复用器来选择所述第二对查询表的所述第二查询表的输出;以及如果选择最不可能bin值为当前输出bin值,则控制所述第一复用器来选择所述第一对查询表的所述第二查询表的输出;控制所述第二复用器来选择所述第三对查询表的所述第一查询表的输出;以及控制所述第三复用器来选择所述第三对查询表的所述第二查询表的输出。
13. 如权利要求12所述的系统,其中所述最可能bin值是作为输入提供到第一二进制算术解码器级的第一最可能bin值;所述最不可能bin值是作为所述第一最可能bin值的相反值的第一最不可能bin值;以及所述当前输出bin值是从所述第一二进制算术解码器级输出的第一当前llr出bin^直;所述系统还包括第四复用器,所述第四复用器用于在所述第二复用器的输出与所述第三复用器的输出之间进行选择;其中如果第二二进制算术解码器级将作为输入提供到所述第二二进制算术解码器级的第二最可能bin值输出而作为第二当前输出bin值,则控制所述笫四复用器来选择所述第二复用器的输出;以及如果所述第二二进制算术解码器级将作为所述第二最可能bin值的相反值的第二最不可能bin值输出而作为所述第二当前输出bin值,则控制所述第四复用器来选择所述第三复用器的输出。
14. 如权利要求13所述的系统,还包括第四对查询表;第五对查询表;第五复用器,所述第五复用器用于在所述第四对查询表的笫一查询表的输出与所述第五对查询表的第 一查询表的输出之间进行选择;第六复用器,所述第六复用器用于在所述第四对查询表的第二查询表的输出与所述第五对查询表的第二查询表的输出之间进行选择;第六对查询表;第七对查询表;第七复用器,所述第七复用器用于在所述第六对查询表的第一查询表的输出与所述第七对查询表的第一查询表的输出之间进行选择;第八复用器,所述第八复用器用于在所述第六对查询表的第二查询表的输出与所述第七对查询表的第二查询表的输出之间进行选择;第九复用器,所述第九复用器用于在所述第五复用器的输出与所述第六复用器的输出之间进行选择;以及第十复用器,所述第十复用器用于在所述第七复用器的输出与所述第八复用器的输出之间进行选择。
15.如权利要求14所述的系统,其中如果所述第一二进制算术解码器级选择所述第一最可能bin值为所述第一当前输出bin值,贝'J:控制所述第五复用器来选择所述第四对查询表的所述第一查询表的输出;控制所述第六复用器来选择所述第四对查询表的所述第二查询表的输出;控制所述第七复用器来选择所述第六对查询表的所述第一查询表的输出;以及控制所述第八复用器来选择所述第六对查询表的所述第二查询表的输出;以及如果所述第一二进制算术解码器级选择所述第一最不可能bin值为所述第一当前输出bin值,贝'J:控制所述第五复用器来选择所述第五对查询表的所述第一查询表的输出;控制所述第六复用器来选择所述第五对查询表的所述第二查询表的输出;控制所述第七复用器来选择所述第七对查询表的所述第一查询表的输出;以及控制所述第八复用器来选择所述第七对查询表的所述第二查询表的输出。
16. 如权利要求15所述的系统,其中如果所述第二二进制算术解码器级输出所述第二最可能bin值作 为所述第二当前输出bin值,贝'J:控制所述第九复用器来选择所述笫五复用器的输出;以及 控制所述第十复用器来选择所述第七复用器的输出;以及 如果所述第二二进制算术解码器级输出所述第二最不可能bin值 作为所述第二当前输出bin值,贝'J:控制所述第九复用器来选择所述第六复用器的输出;以及 控制所述第十复用器来选择所述笫八复用器的输出。
17. —种设备,包括 第一二进制算术解码器级;第一组查询表,所述第一组查询表耦合到所述第一二进制算术解 码器级以便向所述第一二进制算术解码器级提供更新和范围数据;第二二进制算术解码器级,所述第二二进制算术解码器级耦合到所述第一二进制算术解码器级以便从所述第一二进制算术解码器级 接收偏移量和范围数据;第二组查询表;第三组查询表;第一组三个复用器,所述笫一组复用器中的每个复用器从所述第 二组查询表中的相应查询表接收一个输入,并从所述第三组查询表中 的相应查询表接收第二输入,并且具有耦合到所述第二二进制算术解 码器级的输出;第三二进制算术解码器级,所述第三二进制算术解码器级耦合到 所述第二二进制算术解码器级以便从所述第二二进制算术解码器级 接收偏移量和范围数据;第四组查询表;第五组查询表;第六组查询表; 第七组查询表;第二组三个复用器,所述第二组复用器中的每个复用器从所述第 四组查询表中的相应查询表接收一个输入,并从所述第五组查询表中 的相应查询表4妄收第二输入;第三组三个复用器,所述第三组复用器中的每个复用器从所述第 六组查询表中的相应查询表接收一个输入,并从所述第七组查询表中 的相应查询表接收第二输入;以及第四组三个复用器,所述第四组复用器中的每个复用器从所述第 二组复用器中的相应复用器接收一个输入,并从所述第三组复用器中 的相应复用器接收第二输入,并且具有耦合到所述第三二进制算术解 码器级的输出。
18. 如权利要求17所述的设备,其中所述二进制算术解码器级中 的每个二进制算术解码器级包括在两个输出bin值之间进行选择的相 应级复用器。
19. 如权利要求18所述的设备,其中所述二进制算术解码器级中 的每个二进制算术解码器级包括相应的比较块,所述相应的比较块用 于比较范围值和偏移量值,并且耦合到相应级复用器以便控制所述相 应级复用器。
20. 如权利要求19所述的设备,其中所述二进制算术解码器级中 的每个二进制算术解码器级还包括由相应比较块控制的至少三个另 外的相应级复用器。
全文摘要
一种二进制算术解码设备包括第一、第二和第三对查询表和第一、第二和第三复用器。第一复用器在第一对查询表的两个查询表的各输出之间进行选择。第二复用器在第二对查询表的第一查询表与第三对查询表的第一查询表的各输出之间进行选择。第三复用器在第二对查询表的第二查询表与第三对查询表的第二查询表的各输出之间进行选择。这三个复用器共同地被控制。
文档编号H04N7/24GK101480054SQ200780023754
公开日2009年7月8日 申请日期2007年6月19日 优先权日2006年6月26日
发明者M·加汉希尔, M·哈克, P·辛加姆塞蒂 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1