CN101480054B - 利用并行二进制算术解码的基于硬件的cabac解码器 - Google Patents
利用并行二进制算术解码的基于硬件的cabac解码器 Download PDFInfo
- Publication number
- CN101480054B CN101480054B CN2007800237547A CN200780023754A CN101480054B CN 101480054 B CN101480054 B CN 101480054B CN 2007800237547 A CN2007800237547 A CN 2007800237547A CN 200780023754 A CN200780023754 A CN 200780023754A CN 101480054 B CN101480054 B CN 101480054B
- Authority
- CN
- China
- Prior art keywords
- multiplexer
- output
- question blank
- pair
- binary arithmetic
- 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
- 238000010586 diagram Methods 0.000 description 21
- 238000003860 storage Methods 0.000 description 20
- 238000012545 processing Methods 0.000 description 19
- 238000006073 displacement reaction Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 16
- 238000009795 derivation Methods 0.000 description 8
- 230000014759 maintenance of location Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 239000000872 buffer Substances 0.000 description 6
- 230000006835 compression Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 230000008878 coupling Effects 0.000 description 5
- 238000010168 coupling process Methods 0.000 description 5
- 238000005859 coupling reaction Methods 0.000 description 5
- 230000000712 assembly Effects 0.000 description 4
- 238000000429 assembly Methods 0.000 description 4
- 239000012634 fragment Substances 0.000 description 4
- 238000000034 method Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 2
- 229910002056 binary alloy Inorganic materials 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000005056 compaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000006386 neutralization reaction Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
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
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4006—Conversion to or from arithmetic code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
一种二进制算术解码设备包括第一、第二和第三对查询表和第一、第二和第三复用器。第一复用器在第一对查询表的两个查询表的各输出之间进行选择。第二复用器在第二对查询表的第一查询表与第三对查询表的第一查询表的各输出之间进行选择。第三复用器在第二对查询表的第二查询表与第三对查询表的第二查询表的各输出之间进行选择。这三个复用器共同地被控制。
Description
背景技术
AVC-H.264视频数据压缩编码标准是众所周知的,它代表新一代的视频压缩编码,并被希望取代许多应用所广泛使用的MPEG-2标准。AVC-H.264实现比MPEG-2更高的压缩比,但是以更大处理复杂性为代价。在一些方面中,AVC-H.264与MPEG-2相似;例如,二者均利用运动补偿来将当前像素块与参考像素块匹配,以便将要转换编码的差异数据减到最少。
一种根据AVC-H.264提供的压缩编码选择要求使用转换编码产生的语法元素(包括运动矢量信息和其他边数据)的CABAC(基于上下文的自适应二进制算法编码)。相对于其他类型的后级编码,CABAC可能提供重要的额外压缩效率,但是它需要相当大的处理复杂性,尤其是在解码方面。用于AVC-H.264的CABAC解码器已用软件形式写入用于在通用处理器上执行,但是所得到的解码器的性能在吞吐量方面尚不能令人满意,尤其是在将高分辨率信号解码方面。而且,bin(二元判定位)的CABAC软件或硬件解码还可能在进行之后才能将下一个bin解码,这可能产生瓶颈。
附图说明
图1是示出根据一些实施例的视频信号再现系统的组件的框图。
图2是图示作为图1系统的一部分的视频解码器块中的数据流的框图。
图3是示出作为图2的视频解码器块的一部分的位流分析器块的一些细节的框图。
图4是图示一些实施例中的á状态转换的示意图。
图5是示出作为图3的位流分析器块的一部分的并行上下文建模器块的一些细节的框图。
图6是示出作为图3的位流分析器块的一部分的并行二进制算法解码器引擎(PBADE)的一些细节的框图。
图7和图8是示出图5的PBADE的其他细节的示意图。
图9是根据一些实施例、具有多个PBADE级的解码电路的示意图。
图10是图9的解码电路的一些细节的示意图。
图11和图12是示出图10B所示的电路的其他细节的示意图。
具体实施方式
图1是示出根据一些实施例的视频信号再现系统100的组件的框图。
系统100包括视频信号源102。视频信号源102可以是例如从例如空中广播或从电缆电视传输接收压缩编码的视频信号的接收电路。此外或作为备选方式,视频信号源102可以再现来自记录或存储媒体(例如硬盘或磁盘或磁带形状的可移动记录媒体)的视频信号。可能已根据公知的AVC-H.264标准将视频信号压缩编码,可能已使用CABAC(基于上下文的自适应二进制算法编码)作为产生压缩编码的视频信号的压缩编码过程的一部分。
系统100还包括耦合到视频信号源102的视频信号处理块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表示的另一些其他组件。
绝大多数情况下,本公开的余下部分涉及PBSP 210的某些方面。正如将会见到的,PBSP 210用于并行地接收和处理CABAC编码的位流同时将输入位扩展到bin流,然后将bin转换成AVC-H.264语法元素的序列。视频处理单元214基于由位流分析器输出的语法元素所表示的剩余变换数据、运动矢量和其他信息将视频信号重构成可再现形式(例如通过重构视频信号的宏块)。
图3是示出PBSP 210的一些细节的框图。PBSP 210包括连接到控制处理器总线304的总线接口302。PBSP 210经由总线接口302和控制处理器总线304与控制处理器212进行数据消息传递。控制处理器212经由在总线接口302接收到的信号提供用于PBSP 210的控制功能。来自控制处理器212的命令暂时存储在命令缓冲器中并在解码器中进行解码(如图中305所示),该命令缓冲器和解码器也是PBSP210的一部分。
PBSP 210还包括先进先出(FIFO)存储器306,先进先出(FIFO)存储器306经由存储器控制器204(如图2并非图3所示)从存储器202(图2)接收输入位流。作为PBSP 210的一部分的处理部件308为PBSP 210的其他组件提供控制指令和“边信息”。
PBSP 210中还包括起始代码检测和错误处理块310。PBSP 210的附加组件是状态寄存器312,状态寄存器312存储要经由总线接口302和控制处理器总线304提供到控制处理器212的状态消息。
PBSP 210还包括属于本公开的相关重点的并行CABAC解码处理器314。并行CABAC解码处理器314包括上下文建模器块316和并行二进制算法解码器引擎(PBADE)318,二者将在下文中进行详细描述。上下文建模器块316可以将一些上下文概率状态信息提供到PBADE 318,PBADE 318可以使用上下文索引信息来帮助基于上下文概率状态信息对来自FIFO存储器306的输入位执行并行位至bin的扩充。
PBSP 210还可以包括用于实现CAVLC(上下文自适应可变长度编码)解码的电路(由320指示),使得PBSP 210还可以处理对利用AVC-H.264的CAVLC选择而非CABAC选择所编码的压缩编码的视频数据进行的解码。
此外,PBSP 210还包括可变长度解码器块322(称为“快速压缩解码器”或“FCD”),可变长度解码器块322从PBADE 318接收bin(仓)流并对照码字对这些bin进行匹配以将这些bin转换成AVC-H.264语法元素的序列。PBSP 210还包括由FCD 322用来将这些bin转换成语法元素的码表324。而且,PBSP 210还包括一个或多个输出缓冲器326,这一个或多个输出缓冲器326用于在将语法元素提供到视频信号处理单元214(如图2而非图3所示)之前存储这些语法元素。
图4图示可结合并行CABAC解码处理器314使用的上下文状态的示范图形。通常,可以将上下文定义为与索引号关联的汇集信息量。为了易于解释,参考并行CABAC解码处理器314,将每个上下文与 概率状态索引号0-7相关(从而本例中有8个上下文),当然在其他实施例中,可以使用其他数量的概率状态。每个概率状态索引号称为á。每个á对应于“上下文”,该“上下文”表示将预测的bin值与实际bin值比较时预测的bin值不正确的表明的机率(purported odds)。
例如,在并行CABAC处理器314内确定,在时间“n”的最可能bin(MPB;或者有时称为较可能bin、较有可能或最有可能bin--MLB-或较可能或最可能符号--MPS)值是“1”(即该bin值较可能是“1”)。MPSn还具有关联的概率状态。MPSn具有对应的LPSn,其在二进制运算中是MPSn的相反值。(LPS是指“最不可能符号”,也可以称为较不可能符号--LLS,或为了介绍的目的,称为较不可能或最不可能bin--LPB或较不可能或最不可能bin--LLB。)LPSn还具有关联的概率状态,其是MPSn概率状态的补状态(compliment)。LPSn概率状态给出MPSn值是不正确的可能百分比。
然后,在确定MPS值是否确实是要编码或解码的实际值之后,基于此确定转换到下一个á状态。在图4中,基于bin的预测是正确还是不正确,控制并行CABAC解码处理块314转换到哪个概率状态á。
例如,如果在á状态3中,存在20%的可能性预测的MPS是错误的(即LPS值是正确值存在20%的概率)。如果MPS被准确地预测(即对照实际bin值比较MPB值,二者相等),则á状态3转换到á状态4。á状态4表明存在90%的可能性预测到它自己的对应MPS,即要编码或解码的下一个bin值。这可以表示预测到下一个bin值(MPSn+1)的置信度增加。(例如,根据图4,当与MPSn比较时,对于n+1的对应bin值,LPS存在10%的可能性)。
但是,如果MPS未被准确地预测(即对照实际bin值比较MPS值,二者不相等),则á状态3转换到á状态2。á状态2表明存在70%的可能性,预测到它自己的对应MPS。(例如,根据图4,对于n+1的对应bin值,LPS存在30%的可能性)。这可以表示预测到下一个值 (MPSn+1)的置信度降低。
例如图4所示的概率状态表可以被并行CABAC解码处理块314使用,下文将对此进行描述。
图5是示出上下文建模器块316的一些细节的框图。具体来说,图5图示并行CABAC解码的上下文建模方面的硬件实现(即硬件加速器)的体系结构。图5的体系结构能够仅在几个时钟周期内确定并行当前位/bin的适合上下文模型,因此促进用于并行CABAC解码的可行且有效率的基于硬件的方法。PBADE的确定论述和后续论述都假定,读者通常熟悉二进制运算编码的概念,并且也熟悉AVC-H.264标准中描述的CABAC编码。但是,将使用二进制运算编码和使用上下文/概率状态的示例作为示例来帮助说明本文描述的使用的示例。
每个“片段(slice)”的视频信号的包含不同类型的语法元素。对于一个片段内的每个语法元素,基于所执行的二进制化的类型有最多N个bin(b1、b2、...、bN)。可以有一个或多个上下文标签与每个bin关联。如果有多于一个上下文标签与bin关联,则有多个特定的规则来选择要使用的适合上下文。每个上下文标签表示与每个bin关联的信息集合。
“上下文模型”是二进制符号(语法元素)的一个或多个bin的概率模型。此上下文模型可以根据最近解码的语法元素的统计来从可用的模型的选择中进行选择。上下文模型存储每个bin为“1”或为“0”的概率,例如结合图4的示例所论述的。上下文建模器块316用于选择PBADE 318要用于将当前bin解码的上下文模型。
在AVC-H.264标准要求的CABAC编码中,对于多种语法元素总共有460个单独的上下文模型。将这些上下文模型的项存储在查询表402中,查询表402是上下文建模器块316的一部分。每个项包含6位概率状态索引和最可能bin值的二进制(一位)值。这七位一起定义要提供给PBADE 318的上下文索引。例如,虽然为了易于说明,图4图示为具有8个á状态,但是还可以有26或128个á状态,每个 á状态具有各自的LPS概率(以及因此具有隐含的MPS概率)。如上所述,对于编码或解码时与上下文状态á关联的MPS值,上下文状态给出MPS确实将是正确的值的表明的机率。
上下文模型在每个片段的开始以及也在每个帧的开始被初始化。上下文状态的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指示当前语法元素的类型。还将参考数据块耦合到FCD 322(图3,图5中未示出),并且还耦合到提供到下文描述的bin索引计数器的“INC”信号,以在一些情况中从FCD 322接收指示先前解码的语法元素的数据。这些语法元素作为参考数据存储在参考数据块320中,该参考数据与其他输入一起用于确定上下文索引增量信号412。先前解码的语法元素可以来自与正被解码的当前语法元素相同的片段(映像或映像段)。例如,在一些实施例中,参考数据块中存储的语法元素数据可以对应于当前语法元素表示的映像区域上边或左边的映像区域(块和/或宏块)。
在一些实施例中,对参考数据块420的输入除了指示当前语法元素的类型外,还可以指示当前宏块的类型和/或属性。
参考数据(reference data)块420响应输入信号418和/或其他信息从接收自FCD 322并且先前存储在参考数据块420中的数据中选择参考数据并将其输出。图5中在422处指示了此输出的参考数据。
第二电路分支414还包括bin索引计数器424。bin索引计数器424用于输出bin索引426,bin索引426是计数器424的当前值。计数器424耦合到控制器块(未示出)以响应FCD 322未能找到与当前bin匹配的语法元素而接收增量信号,控制器块是上下文建模器的一部分。还将增量信号提供到参考数据块420。计数器424还耦合到FCD322以便被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接收当前状态索引值并存储该状态索引值。换言之,这包含索引状态(á概率),即关联的上下文表明给出寄存器502中的MPS是不正确(因此暗示该值是正确)的机率。
PBADE 318还包括偏移量寄存器506和范围寄存器508。偏移量寄存器506存储当前偏移量值,而范围寄存器508存储当前范围值。如下文将见到的,偏移量寄存器506和范围寄存器508中存储的值从PBADE 318的前一个操作周期进行更新。以下文描述的方式从输入位流(由510指示)和位处理的并行级推导出偏移量值,而从概率查询表512输出的值推导出范围值,又通过存储在状态索引寄存器504中的状态索引值对概率查询表512编索引,下文将对此进行详细描述。
偏移量寄存器506和范围寄存器508在算术编码中使用。简言之,在算术编码中,确定有正确预测到给定值的可能性。为了便于解释,将此可能性称为概率。此概率可以是取得MPS的可能性,例如如图4所示(即,每个概率状态á具有它自己的上下文,该上下文是用于预测正确或不正确值的概率范围)。
在一些实施例中,在PBADE 318中,使用偏移量,偏移量可以在0处开始。在算术编码中,此偏移量称为“标记”值。在PBADE 318中,如果要解码的实际值确实是MPS(通过将MPS与要解码的实际值比较来确定),则将作为概率与范围寄存器508中的范围的函数的数值加上该偏移量,下文将对此进行描述。在PBADE 318中,如果要解码的实际bin确实是LPS(在将MPS与要解码的值比较之后),则偏移量寄存器506中的偏移量数值不改变,但是按LPS与范围寄存器508中的范围的函数来减小范围寄存器508中的范围,下文将对此 进行描述。
在一些实施例中,如果要解码的实际值确实是MPS,则通过将由á状态确定的MPS的可能百分比乘以范围值来增加偏移量值。如果要解码的实际值是MPS,则通过将á状态的LPS的可能百分比乘以范围值来减小寄存器508中的范围值。
除了概率查询表512外,PBADE 318还包括查询表514和516。所有这三个查询表耦合到状态索引寄存器504,以便通过存储在状态索引寄存器504中的状态索引á值来编索引。换言之,每个LUT 512、514和516可以访问示出上下文的相同表,例如如图4所示。
首先转到LUT 514和516(其可称为“转换(transition)LUT”),查询表514用于在在当前周期中选择最可能符号(MPS)值的情况下提供状态索引更新值。例如,对于图4,如果当前上下文(á状态)是状态2,则LUT 514输出状态“3”。查询表516用于在在当前周期中选择最不可能bin值的情况下提供状态索引更新值。例如,对于图4,如果当前上下文(á状态)是状态2,则LUT 516输出状态“1”。然后在复用器566中由差536来选择所选的输出状态,下文将对此进行详细描述。
概率LUT 512耦合到四输入复用器520。概率LUT 512输出作为从状态索引寄存器504接收的状态索引á的函数的概率值。概率LUT512和复用器520都是乘法器521的一部分。复用器520的每个输入从概率查询表512分别接收一组四个输出的其中一个。复用器520耦合到范围寄存器508,以便由范围寄存器508中存储的范围值的两个最低有效位来控制复用器520。范围值的两个最高有效位(MSB)的值选择概率查询表512的输出的精度级,然后由复用器520采用该精度级。
在乘法器521中,可能发生两件事。首先,LUT 512确定给定状态á的LPS的概率:四个精确的概率值--四个象限的每个象限对应于一个精确的概率值;这些值被输入到复用器520中。
其次在复用器520中,使用508的范围的两个最高有效位来选择这四个预先计算的象限值的其中之一。复用器520处的所得到的选择具有生成最不可能符号的范围的乘法效应。乘法器521表示LPS的概率值乘以象限的范围值。
为了易于解释,LPS值的此范围将表示为“rLPS”,MPS值的范围将由“rMPS”表示。rLPS与rMPS之和将等于范围寄存器508中存储的范围。
从图9起为了易于论述,514、516和521全部称为查询表611的一部分。从图9起为了易于论述,图6的其他部件称为级1621的一部分。
PBADE 318还包括判断块518。判断块518耦合到状态索引寄存器504,以便指示状态索引寄存器504中存储的状态索引á值是否等于0。如果是这样的话,判断块518输出“1”值作为输出。否则,判断块518输出“0”值作为输出。
例如,在图4中,如果á状态等于0,则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中以便在以后供选择,下文将对此进行详细描述。
此外,PBADE 318也包括减法块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的级2760,下文将对此进行详细描述。
立即转到图7,bin值选择和更新块532是PBADE 318的一部分,并且包括复用器(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门输出是“0”(逻辑假),则复用器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,PBADE 318还包括复用器546。复用器546具有耦合到减法块522以便接收差值524的输入。差值524是rMPS。复用器546的另一个输入耦合到复用器520的输出,该输出是rLPS。复用器546还耦合到判断块530以便由判断块530的输出536来进行控制。 在输出536的控制下,复用器546在差值524与复用器520选择的范围查询表值之间进行选择。如果判断块530的输出是“1”,则复用器546选择差值524作为其输出值。如果判断块530的输出是“0”,则复用器546选择从复用器520输出的范围查询表值作为复用器546的输出值。换言之,如果偏移量值小于或等于rMPS,则将rMPS作为输出547传送到偏移量/范围更新器548。如果该偏移量值大于rMPS,则将rLPS传送到偏移量/范围更新器548。
应该理解,输入到复用器544的值可以视为“偏移量更新值”,因为这些值是以下值或可用于产生以下值:该值可以是用于偏移量值与最不可能范围值的比较的偏移量值。
还应该理解,输入到复用器546的值可以视为“范围更新值”,因为这些值是以下值或可用于产生以下值,该值可以是用于偏移量值与范围值的比较的范围值。
复用器544和546选择的相应输出值都作为输入提供到由548指示并在图7中详细示出的偏移量和范围更新块。除了提供在组件526和530(减法块和判断块)处比较的范围和偏移量值的更新功能外,偏移量和范围更新块548还用作要由PBADE 318解码(扩展)成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以便在PBADE 318的初始化期间将一系列“0”位提供到范围移位块560。
偏移量和范围更新块548在LZD电路554的控制下执行操作,在一个时钟周期中执行常规基于软件的AVC-H.264/CABAC解码器所要求的再归一化(renormalization)循环的多次迭代。在一个时钟周期中执行的再归一化的迭代的有效次数由LZD电路554的输出控制。
再次参考图6,PBADE 318还包括复用器566。复用器566耦合到查询表611的查询表514、516,以便从其中接收作为状态索引寄存器504中存储的状态索引值的函数从其中选择的值。复用器566耦合到判断块530以便由判断块530的输出536来进行控制。在输出536的控制下,复用器546在来自查询表514的值与来自查询表516的值之间进行选择。如果判断块530的输出是“1”,则复用器566选择来自查询表514的值作为复用器566的输出值。如果判断块530的输出是“0”,则复用器选择来自查询表516的值作为复用器566的输出值。
例如,再次假定当前á状态是3,则从514选择例如由á状态4确定的下一个最可能上下文状态,或者从516选择例如á状态2的下一个最不可能上下文状态。如果偏移量大于rLPS,则选择下一个最不可能上下文状态,如果偏移量小于rLPS,则选择下一个最可能状态。
然后将来自复用器566的输出值存储在状态索引更新寄存器568中。该状态索引更新寄存器是PBADE 318的一部分,并且耦合到复用器566的输出。从寄存器568,将状态索引更新值从PBADE 318输出到上下文建模器块316的上下文信息更新块434(图4)以更新查询表402。状态索引寄存器568还耦合到级2760,下文将对此进行描述。
如本文描述的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也耦合到LUT 611。LUT 611的输出,即516(下“n”个最不可能状态)、514(下“n”个最可能状态)的输出以及乘法器521的输出耦合到级1621。还将状态索引线从上下文表402耦合到图6的状态索引判断块518。为了易于解释,本公开的部件(例如LUT 514)的输出也作为514来提及。
上下文表402也耦合到LUT 2A 710和LUT 2B 715。LUT 710和715的每个LUT分别具有三个输出711-713和716-718。这些输出的每个输出与乘法器521的输出521以及LUT 514、516的输出类似,但是用于下一个更可能或更不可能状态(n+1),下文将对此进行描述。而且,在一些实施例中,可以将输出的次序重新组织。在一些实施例中,最不可能状态是第一个输出,最可能状态是第二个输出,以及最不可能状态的范围是第三个输出。
在LUT 2A 710中,对于来自上下文表402的给定á状态,LUT 2A710接收从上下文建模器402接收的á状态,并查看á+1状态并输出作为á+1状态的函数的值。例如,如果从上下文建模器接收的á状态是3,则根据图4,á+1状态是4。因此,á+1状态(即状态4)的下一个最不可能状态711、下一个最可能状态712和最不可能值的范围713分别通过711-713从710传送。
例如,如果上下文建模器402的á:á=3,则LUT 2A(á+1)710值变成á=4。因此,通过711将MPS输出á+1(á=5)输出到MUX 732,并且通过712将á+1LPS级(á=3)输出到MUX 734,以及通过713将(á+1,即á状态4)百分比LPS(12%)的LPS的范围传送到MUX736。
在LUT 2B 715中,对于来自上下文表402的给定á状态,LUT 2B715查看á-1状态并输出作为á-1状态的函数的值。例如,如果á状态是3,则根据图4,á-1状态是2。因此,á-1状态(即状态2)的 下一个最不可能状态716、下一个最可能状态717和最不可能值的范围分别通过716-718从715传送。
例如,如果上下文建模器402的á:á=3,则LUT 2A(á-1)715值变成á=2。因此,通过716将MPS输出á+1(á=3)输出到MUX 732,并且通过717将á-1LPS级(á=3)输出到MUX 732,以及将(á-1,即á状态2)百分比LPS(30%)的LPS的范围传送到MUX 736。
MUX 732(表示在á+1与á-1状态的MPS之间的选择)、MUX734(表示在á+1和á-1状态的不同LPS之间的选择)以及MUX 736(表示在á+1和á-1状态的不同百分比之间的选择)的每一个作为来自级1 621的输出536的函数来进行控制,然后将这些值、为下一个最高上下文状态选择的rLPS或为下一个最低上下文状态选择的rLPS传送到级2 760,下文将结合图10对此进行更详细地描述。
对于级2 760,正如稍后将描述的,并不从上下文建模器402接收502、504、506、508等,而是从级1接收作为MPS 533、偏移量558和范围562的MPS值、偏移量(即标记)和范围。级2的差引擎也使用级1 611的状态索引寄存器568。
由此,在MUX 732、734和736中,作为级1的输出536的函数,选择LUT 2A(á+1)710输出或选择LUT 2B(á-1)715输出。如果输出536是“1”,则选择LUT 2A(á+1)710,而如果输出536是“0”,则选择LUT 2B(á-1)715。由此,基于级1输出的当前bin值来选择级2的适合状态。然后,选择输出(即710或715的输出),然后将此选择的输出作为范围LPS(n+1)、(n+1)的最可能á状态和(n+1)的最不可能á状态来传送。
在级2760中,接收作为输出536的函数的输入716和714。它们表示(á-1)状态或(á+1)的下一个最不可能转换(714)、下一个最可能转换(716),以及输出536选择的(á+1)状态的最不可能范围(747)的范围。而且,也将更新的状态索引562传送到级2 760。然后,在级2 760进行处理,该处理生成传送到级3的第二输出836。还由级2 760生成二进制bin 1输出,该输出被传送到组合器780。级2760还生成MPS(n+2)752、偏移量(n+2)754、范围(n+2)756和状态索引(即n+1的á状态)。还将输出836输出到又耦合到级3的MUX 784、786、787。在一些实施例中,从级2760,将三个bin中的第二个bin解码为bin 1。级3770耦合到级2760。
上下文表402还耦合到LUT 3A 720、LUT 3B 722、LUT 3C 824和LUT 3D 826。为了易于解释,将LUT 3A 720、LUT 3B 722指定为属于第一组719,以及将LUT 3C 824和LUT 3D 826指定为属于第二组723。
LUT 3A720、LUT 3B 722、LUT 3C 824和LUT 3D 826的每一个具有三个输出。LUT 3A720具有输出781-783;LUT 3B 722具有输出784-786;LUT 3C 824具有输出787-789;以及LUT 3D 826具有输出790-792。LUT 3A、3B、3C和3D的每一个可以具有与LUT 611、710、715基本相同的结构,因为它们均包括相应的“最可能”LUT、相应的“最不可能”LUT、相应的范围/概率LUT和耦合到相应的范围/概率LUT的相应的合并(如710、715中的情况;而非611)。
在LUT 3A 720中,对于来自上下文表402的给定á状态,LUT 3A720接收从上下文建模器402接收的á状态,确定á+1+1状态并输出作为á+1+1状态的函数的值。例如,如果从上下文建模器接收的á状态是3,则根据图4,á+1+1状态是5。因此,á+1+1状态(即状态5)的下一个最不可能状态781(á=4)、下一个最可能状态782(á=6)和最不可能值的范围分别通过781-783从720传送。
在LUT 3B 722中,对于来自上下文表402的给定á状态,LUT 3B722确定á+1-1状态并输出作为á+1-1状态的函数的值。例如,如果á状态是3,则根据图4,á+1-1状态是3。因此,á+1-1状态(即状态3)的下一个最不可能状态781(á=2)、下一个最可能状态782(á=4)和最不可能值的范围分别通过784-786从720传送。
在LUT 3C 824中,对于来自上下文表402的给定á状态,LUT 3C 824接收从上下文建模器402接收的á状态,确定á-1+1状态并输出作为á-1+1状态的函数的值。例如,如果从上下文建模器接收的á状态是3,则根据图4,á-1+1状态是3。因此,á-1+1状态(即状态3)的下一个最不可能状态787(á=2)、下一个最可能状态788(á=6)和最不可能值的范围分别通过787-789从LUT 3C 824传送。
在LUT 3D 826中,对于来自上下文表402的给定á状态,LUT 3D826接收从上下文建模器402接收的á状态,确定á-1-1状态并输出作为á-1-1状态的函数的值。例如,如果从上下文建模器接收的á状态是3,则根据图4,á-1-1状态是1。因此,á-1-1状态(即状态1)的下一个最不可能状态787(á=1)、下一个最可能状态788(á=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的情况中一样,部分地基于级1输出的当前bin值来选择级3的适合状态。
然后分别将组1 719(771、772、773)和组2723(774、775和776)的输出输入到MUX 751、753和755。然后,由级2的输出836来选择组1 719和组2 723。下文将结合图10更详细地描述差输出836。然后分别作为输入797、798和799将所选的组(即组1 719或组2 723)传送到级3 770。
相似地,对于级3 770,并不从上下文建模器402接收502、506、508等,而是从级2为下一个选择的状态(即由输出536选择的á+1 状态或á-1状态)接收作为MPS(或MLB)752、偏移量754和范围756的MPS(或MLB)、偏移量(即标记)和范围。级3的差引擎也使用级2 760的状态索引寄存器760。在一些实施例中,从级3 770,将三个bin中的第三个bin解码为bin 2。
要理解,在一些实施例中,(á+1-1)状态可能不一定等于á。例如,在图4中,状态6转换到状态7,(á+1),作为最可能状态。然后,对于LUT 3B 722,á状态从当前上下文7转换到LPS,LPS是上下文状态5。
一般来说,在并行CABAC解码器700中,在一些实施例中,使用á+1和á-1可允许基本并行处理和解码多个bin的偏移量、范围、á状态、MSB等。
现在转到图10,其中图示的是根据一些实施例的级2760和图9的耦合的电路。级2760可以具有LUT 2A710、LUT 2B 715。这些输出被输入到MUX 732、734和736中。在一些实施例中,使用范围562来选择MUX 827的输出。然后将由输出536选择的MUX 732、734和736的每个输出输入到级2 760中。
LUT 2A 710具有范围LUT(á+1)805和耦合的合并(merge)803。LUT 2A 710还具有最可能LUT 808和最不可能LUT 807。它们的输出分别耦合到MUX 732-736。
合并803的每个输入从概率查询表805接收一组四个输出的相应一个输出。由存储在状态索引寄存器568中的当前状态索引值选择特定的一组四个输出,以便状态索引值用作概率LUT 805的索引。该特定的一组四个输出是从概率LUT 803中存储的多组四个精度值中选择的。
在一些实施例中,LUT 2A 710可以按如下方式工作。在最不可能LUT 807和最可能LUT 808处接收á状态。这些LUT表的每一个然后进行到á+1状态。然后,每个表LUT 807和808查询该á状态的下一个最可能和最不可能转换。例如,如果从级1接收的á状态是3, 则为á+1状态确定最不可能807和最可能808,例如级2、4,并分别将这些值传输到MUX 734和736。
在一些实施例中,LUT 2A 710可以按如下方式工作。概率LUT805对(á+1)状态的概率(例如最不可能转换的40%可能性)编索引。然后,将此百分比传送到合并803,最后在适合的情况下,经由MUX732传送到MUX 827。在MUX 827,则由范围寄存器562乘上该概率,从而得到(á+1)的下一个状态的最不可能概率的范围值。然后将该值传送到MUX 732。注意,在一些实施例中,此值可以具有多个不同精度的输出。为了易于解释,将概率LUT 805和合并803称为乘法器821。
LUT 2B 715具有概率LUT(á-1)815和耦合的合并813,它们与MUX 732一起起乘法器823的作用。LUT 2b 715还具有最不可能LUT807和最可能LUT 809。它们的输出分别耦合到MUX 732-734。
在一些实施例中,LUT 2B 715可以按如下方式工作。在最不可能LUT 817和最可能LUT 818处接收á状态。这些LUT表的每一个然后进行到á-1状态。然后,每个表LUT 817和818查询该á-1状态的下一个最可能和最不可能转换。例如,如果从级1接收的á状态是3,则为á-1状态(例如级2)确定最不可能807和最可能808,并将这些值传输到MUX 734和736(即á状态1和á状态3)。
在一些实施例中,LUT 2B 715可以按如下方式工作。范围LUT815对(á-1)状态的概率(例如最不可能转换的40%可能性)编索引。然后,将此百分比传送到合并813,然后(在适合的情况下),经由MUX 732传送到MUX 827。在MUX 827,然后由范围寄存器562乘上该概率,从而得到(á-1)的下一个级的最不可能概率的范围值。然后将该值传送到MUX 866。
然后由输出536来选择MUX 732、734、736的输出。如果输出是1,则选择LUT 2A 710的值。如果输出是0,则选择LUT 2B 715的值。
图10还包括级(stage)2 760。一般来说,在一些实施例中,级2 760 可以按与级1 621的相似方式工作,下文将简要描述,其中着重于它与级1 621和级3 770的关系。将级2 621的输出传送到级3 770。图11和图12是示出级2 760的其他细节的示意图。将bin 1输出到bin 1780(图9A),然后将其传送到FCD 322。
级2760具有与其关联的最可能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输出“1”值作为输出。否则,判断块818输出“0”值作为输出。
级2 760还包括减法块822。减法块822耦合到范围寄存器862并且耦合到4∶1MUX 827的输出。减法块822用于从范围寄存器562中存储的范围值减去MUX 827所选的rLPS值。此减法的结果是由824指示的差值。换言之,减法块822生成作为其输出的MPS的范围(rMPS),因为已经从该范围值中减去LPS的范围。rMPS和rLPS都输入到MUX 846中以便在后面进行选择,下文将对此进行论述。
而且,级2760包括减法块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)被传送到上下文建模器(即图4)并传送到图9B的级3 770。
在图11中,复用器834耦合到判断块830(图10)的输出(在图10和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。AND门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门输出是“1”(逻辑真),则复用器840选择最可能bin值的相反值作为复用器840的输出值。如果AND门输出是“0”(逻辑假),则复用器840选择最可能bin值作为其输出值。然后将来自复用器580的输出值存储在最可能bin值更新寄存器842中并作为MLB 852输出到级3770。最可能bin值更新寄存器842是bin值选择和更新块832的一部分,并且耦合到复用器840的输出。
转回到图10,级2760还包括复用器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以便接收差值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)以供级3770使用。
而且,偏移量和范围更新块848包括范围移位块960。范围移位块960耦合到LZD电路954,以便由LZD电路954进行控制。范围移位块960还耦合到复用器846(图5)的输出,以便接收从复用器846输出的值。在LZD电路954的控制下,范围移位块960从复用器846的输出移出多个位,其中移出的位的数量与输入移位和逻辑运算块956在当前周期中移出的输入位的数量相同。移位块960还可以执行逻辑OR运算,并可以从右边用“0”位来填充。来自范围移位块 960的所得到的输出用于更新范围寄存器756(图9)以供级3770使用。
偏移量和范围更新块848还可以包括初始化块964。初始化块964耦合到范围移位块960以便在级2760的初始化期间将一系列“0”位提供到范围移位块960。
偏移量和范围更新块848在LZD电路954的控制下执行操作,在一个时钟周期中执行常规基于软件的AVC-H.264/CABAC解码器所要求的再归一化循环的多次迭代。在一个时钟周期中执行的再归一化的迭代的有效次数由LZD电路954的输出控制。
再次参考图10,级2760还包括复用器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个LUT 3A、3B、3C和3D。8个LUT的每一个可以具有与LUT 3A、3B、3C和3D中的构成部件相似的构成部件。而且,与第四二进制算术解码器级关联的8个LUT可以通过三层复用器(未示出)耦合到第四二进制算术解码器级,而非通过示出的将LUT 3A、3B、3C和3D耦合到级3的两层复用器740、741、743、745、747、749、751、753、755。正如有关级3的情况,将8个LUT耦合到第四二进制算术解码器级的多层复用器可用于根据当前是否从级1-3的每个级输出最可能bin值来为第四级选择适合的状态。
在其他实施例中,可以包括任何数量的两个或两个以上二进制算术解码器级。
本文示出单个上下文建模器,用于为多个二进制算术解码器级提供上下文信息。在其他实施例中,可以提供两个或两个以上上下文建模器,使得并非每个二进制算术解码器级都由相同的上下文建模器来提供服务。
如本文以及所附权利要求中使用的,二进制值的“相反值”是另一个二进制值;即“1”是“0”的相反值,“0”是“1”的相反值。
本文描述的多个实施例仅出于说明目的。本文描述的多种特征无需全部一起使用,可以将这些特征的任何一个或多个特征结合在单个实施例中。因此,本领域技术人员将从本文描述认识到可以用多种修改和替换来实施其他实施例。
Claims (20)
1.一种二进制算术解码设备,包括:
第一对查询表;
第一复用器,所述第一复用器用于在所述第一对查询表的第一查询表的输出与所述第一对查询表的第二查询表的输出之间进行选择;
第二对查询表;
第三对查询表;
第二复用器,所述第二复用器用于在所述第二对查询表的第一查询表的输出与所述第三对查询表的第一查询表的输出之间进行选择;以及
第三复用器,所述第三复用器用于在所述第二对查询表的第二查询表的输出与所述第三对查询表的第二查询表的输出之间进行选择;
其中所述第一、第二和第三复用器全部由所述第一、第二和第三复用器共用的控制信号来控制。
2.如权利要求1所述的设备,其中所述多对查询表和所述复用器是用于将压缩编码的视频信号解码的电路的一部分。
3.如权利要求2所述的设备,其中所述多对查询表和所述复用器包含在二进制算术解码引擎中。
4.如权利要求2所述的设备,其中:
如果选择最可能bin值为当前输出bin值,则:
控制所述第一复用器来选择所述第一对查询表的所述第一查询表的输出;
控制所述第二复用器来选择所述第二对查询表的所述第一查询表的输出;以及
控制所述第三复用器来选择所述第二对查询表的所述第二查询表的输出;以及
如果选择最不可能bin值为当前输出bin值,则:
控制所述第一复用器来选择所述第一对查询表的所述第二查询表的输出;
控制所述第二复用器来选择所述第三对查询表的所述第一查询表的输出;以及
控制所述第三复用器来选择所述第三对查询表的所述第二查询表的输出。
5.如权利要求4所述的设备,其中:
所述最可能bin值是作为输入提供到第一二进制算术解码器级的第一最可能bin值;
所述最不可能bin值是作为所述第一最可能bin值的相反值的第一最不可能bin值;以及
所述当前输出bin值是从所述第一二进制算术解码器级输出的第一当前输出bin值;
所述设备还包括:
第四复用器,所述第四复用器用于在所述第二复用器的输出与所述第三复用器的输出之间进行选择;
其中:
如果第二二进制算术解码器级将作为输入提供到所述第二二进制算术解码器级的第二最可能bin值输出而作为第二当前输出bin值,则控制所述第四复用器来选择所述第二复用器的输出;以及
如果所述第二二进制算术解码器级将作为所述第二最可能bin值的相反值的第二最不可能bin值输出而作为所述第二当前输出bin值,则控制所述第四复用器来选择所述第三复用器的输出。
6.如权利要求5所述的设备,还包括:
第四对查询表;
第五对查询表;
第五复用器,所述第五复用器用于在所述第四对查询表的第一查询表的输出与所述第五对查询表的第一查询表的输出之间进行选择;
第六复用器,所述第六复用器用于在所述第四对查询表的第二查询表的输出与所述第五对查询表的第二查询表的输出之间进行选择;
第六对查询表;
第七对查询表;
第七复用器,所述第七复用器用于在所述第六对查询表的第一查询表的输出与所述第七对查询表的第一查询表的输出之间进行选择;
第八复用器,所述第八复用器用于在所述第六对查询表的第二查询表的输出与所述第七对查询表的第二查询表的输出之间进行选择;
第九复用器,所述第九复用器用于在所述第五复用器的输出与所述第六复用器的输出之间进行选择;以及
第十复用器,所述第十复用器用于在所述第七复用器的输出与所述第八复用器的输出之间进行选择。
7.如权利要求6所述的设备,其中:
如果所述第一二进制算术解码器级选择所述第一最可能bin值为所述第一当前输出bin值,则:
控制所述第五复用器来选择所述第四对查询表的所述第一查询表的输出;
控制所述第六复用器来选择所述第四对查询表的所述第二查询表的输出;
控制所述第七复用器来选择所述第六对查询表的所述第一查询表的输出;以及
控制所述第八复用器来选择所述第六对查询表的所述第二查询表的输出;以及
如果所述第一二进制算术解码器级选择所述第一最不可能bin值为所述第一当前输出bin值,则:
控制所述第五复用器来选择所述第五对查询表的所述第一查询表的输出;
控制所述第六复用器来选择所述第五对查询表的所述第二查询表的输出;
控制所述第七复用器来选择所述第七对查询表的所述第一查询表的输出;以及
控制所述第八复用器来选择所述第七对查询表的所述第二查询表的输出。
8.如权利要求7所述的设备,其中:
如果所述第二二进制算术解码器级输出所述第二最可能bin值作为所述第二当前输出bin值,则:
控制所述第九复用器来选择所述第五复用器的输出;以及
控制所述第十复用器来选择所述第七复用器的输出;以及
如果所述第二二进制算术解码器级输出所述第二最不可能bin值作为所述第二当前输出bin值,则:
控制所述第九复用器来选择所述第六复用器的输出;以及
控制所述第十复用器来选择所述第八复用器的输出。
9.如权利要求2所述的设备,其中所述电路包括至少一个上下文建模器和多个二进制算术解码器级,所述多个二进制算术解码器级的其中至少一个耦合到所述至少一个上下文建模器的至少其中一个,所述查询表用于将数据提供到所述二进制算术解码器级。
10.如权利要求9所述的设备,其中所述多个二进制算术解码器级中的每个二进制算术解码器级耦合到所述至少一个上下文建模器的其中之一或耦合到所述多个二进制算术解码器级中的前一个二进制算术解码器级。
11.一种二进制算术解码系统,包括:
视频信号源,所述视频信号源用于提供压缩编码的视频信号;以及
耦合到所述视频信号源的视频解码器,所述视频解码器用于将所述视频信号源提供的所述压缩编码的视频信号解码,所述视频解码器包括:
第一对查询表;
第一复用器,所述第一复用器用于在所述第一对查询表的第一查询表的输出与所述第一对查询表的第二查询表的输出之间进行选择;
第二对查询表;
第三对查询表;
第二复用器,所述第二复用器用于在所述第二对查询表的第一查询表的输出与所述第三对查询表的第一查询表的输出之间进行选择;以及
第三复用器,所述第三复用器用于在所述第二对查询表的第二查询表的输出与所述第三对查询表的第二查询表的输出之间进行选择;
其中所述第一、第二和第三复用器全部由所述第一、第二和第三复用器共用的控制信号来控制。
12.如权利要求11所述的系统,其中:
如果选择最可能bin值为当前输出bin值,则:
控制所述第一复用器来选择所述第一对查询表的所述第一查询表的输出;
控制所述第二复用器来选择所述第二对查询表的所述第一查询表的输出;以及
控制所述第三复用器来选择所述第二对查询表的所述第二查询表的输出;以及
如果选择最不可能bin值为当前输出bin值,则:
控制所述第一复用器来选择所述第一对查询表的所述第二查询表的输出;
控制所述第二复用器来选择所述第三对查询表的所述第一查询表的输出;以及
控制所述第三复用器来选择所述第三对查询表的所述第二查询表的输出。
13.如权利要求12所述的系统,其中:
所述最可能bin值是作为输入提供到第一二进制算术解码器级的第一最可能bin值;
所述最不可能bin值是作为所述第一最可能bin值的相反值的第一最不可能bin值;以及
所述当前输出bin值是从所述第一二进制算术解码器级输出的第一当前输出bin值;
所述系统还包括:
第四复用器,所述第四复用器用于在所述第二复用器的输出与所述第三复用器的输出之间进行选择;
其中:
如果第二二进制算术解码器级将作为输入提供到所述第二二进制算术解码器级的第二最可能bin值输出而作为第二当前输出bin值,则控制所述第四复用器来选择所述第二复用器的输出;以及
如果所述第二二进制算术解码器级将作为所述第二最可能bin值的相反值的第二最不可能bin值输出而作为所述第二当前输出bin值,则控制所述第四复用器来选择所述第三复用器的输出。
14.如权利要求13所述的系统,还包括:
第四对查询表;
第五对查询表;
第五复用器,所述第五复用器用于在所述第四对查询表的第一查询表的输出与所述第五对查询表的第一查询表的输出之间进行选择;
第六复用器,所述第六复用器用于在所述第四对查询表的第二查询表的输出与所述第五对查询表的第二查询表的输出之间进行选择;
第六对查询表;
第七对查询表;
第七复用器,所述第七复用器用于在所述第六对查询表的第一查询表的输出与所述第七对查询表的第一查询表的输出之间进行选择;
第八复用器,所述第八复用器用于在所述第六对查询表的第二查询表的输出与所述第七对查询表的第二查询表的输出之间进行选择;
第九复用器,所述第九复用器用于在所述第五复用器的输出与所述第六复用器的输出之间进行选择;以及
第十复用器,所述第十复用器用于在所述第七复用器的输出与所述第八复用器的输出之间进行选择。
15.如权利要求14所述的系统,其中:
如果所述第一二进制算术解码器级选择所述第一最可能bin值为所述第一当前输出bin值,则:
控制所述第五复用器来选择所述第四对查询表的所述第一查询表的输出;
控制所述第六复用器来选择所述第四对查询表的所述第二查询表的输出;
控制所述第七复用器来选择所述第六对查询表的所述第一查询表的输出;以及
控制所述第八复用器来选择所述第六对查询表的所述第二查询表的输出;以及
如果所述第一二进制算术解码器级选择所述第一最不可能bin值为所述第一当前输出bin值,则:
控制所述第五复用器来选择所述第五对查询表的所述第一查询表的输出;
控制所述第六复用器来选择所述第五对查询表的所述第二查询表的输出;
控制所述第七复用器来选择所述第七对查询表的所述第一查询表的输出;以及
控制所述第八复用器来选择所述第七对查询表的所述第二查询表的输出。
16.如权利要求15所述的系统,其中:
如果所述第二二进制算术解码器级输出所述第二最可能bin值作为所述第二当前输出bin值,则:
控制所述第九复用器来选择所述第五复用器的输出;以及
控制所述第十复用器来选择所述第七复用器的输出;以及
如果所述第二二进制算术解码器级输出所述第二最不可能bin值作为所述第二当前输出bin值,则:
控制所述第九复用器来选择所述第六复用器的输出;以及
控制所述第十复用器来选择所述第八复用器的输出。
17.一种二进制算术解码设备,包括:
第一二进制算术解码器级;
第一组查询表,所述第一组查询表耦合到所述第一二进制算术解码器级以便向所述第一二进制算术解码器级提供更新和范围数据;
第二二进制算术解码器级,所述第二二进制算术解码器级耦合到所述第一二进制算术解码器级以便从所述第一二进制算术解码器级接收偏移量和范围数据;
第二组查询表;
第三组查询表;
第一组三个复用器,所述第一组复用器中的每个复用器从所述第二组查询表中的相应查询表接收一个输入,并从所述第三组查询表中的相应查询表接收第二输入,并且具有耦合到所述第二二进制算术解码器级的输出;
第三二进制算术解码器级,所述第三二进制算术解码器级耦合到所述第二二进制算术解码器级以便从所述第二二进制算术解码器级接收偏移量和范围数据;
第四组查询表;
第五组查询表;
第六组查询表;
第七组查询表;
第二组三个复用器,所述第二组复用器中的每个复用器从所述第四组查询表中的相应查询表接收一个输入,并从所述第五组查询表中的相应查询表接收第二输入;
第三组三个复用器,所述第三组复用器中的每个复用器从所述第六组查询表中的相应查询表接收一个输入,并从所述第七组查询表中的相应查询表接收第二输入;以及
第四组三个复用器,所述第四组复用器中的每个复用器从所述第二组复用器中的相应复用器接收一个输入,并从所述第三组复用器中的相应复用器接收第二输入,并且具有耦合到所述第三二进制算术解码器级的输出。
18.如权利要求17所述的设备,其中所述二进制算术解码器级中的每个二进制算术解码器级包括在两个输出bin值之间进行选择的相应级复用器。
19.如权利要求18所述的设备,其中所述二进制算术解码器级中的每个二进制算术解码器级包括相应的比较块,所述相应的比较块用于比较范围值和偏移量值,并且耦合到相应级复用器以便控制所述相应级复用器。
20.如权利要求19所述的设备,其中所述二进制算术解码器级中的每个二进制算术解码器级还包括由相应比较块控制的至少三个另外的相应级复用器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/474,897 US7262722B1 (en) | 2006-06-26 | 2006-06-26 | Hardware-based CABAC decoder with parallel binary arithmetic decoding |
US11/474,897 | 2006-06-26 | ||
PCT/US2007/071605 WO2008002804A1 (en) | 2006-06-26 | 2007-06-19 | Hardware-based cabac decoder with parallel binary arithmetic decoding |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101480054A CN101480054A (zh) | 2009-07-08 |
CN101480054B true CN101480054B (zh) | 2010-12-22 |
Family
ID=38433154
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800237547A Expired - Fee Related CN101480054B (zh) | 2006-06-26 | 2007-06-19 | 利用并行二进制算术解码的基于硬件的cabac解码器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7262722B1 (zh) |
CN (1) | CN101480054B (zh) |
GB (1) | GB2450287B (zh) |
WO (1) | WO2008002804A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9462282B2 (en) | 2011-07-11 | 2016-10-04 | Sun Patent Trust | Image decoding method, image coding method, image decoding apparatus, image coding apparatus, and image coding and decoding apparatus |
US9525881B2 (en) | 2011-06-30 | 2016-12-20 | Sun Patent Trust | Image decoding method, image coding method, image decoding apparatus, image coding apparatus, and image coding and decoding apparatus |
US9591311B2 (en) | 2011-06-27 | 2017-03-07 | Sun Patent Trust | Image decoding method, image coding method, image decoding apparatus, image coding apparatus, and image coding and decoding apparatus |
Families Citing this family (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7804903B2 (en) * | 2005-06-27 | 2010-09-28 | Intel Corporation | Hardware-based CABAC decoder |
KR100644713B1 (ko) * | 2005-10-31 | 2006-11-10 | 삼성전자주식회사 | 컨텍스트 기반 적응적 이진 산술 코딩 복호기에서 원소구문을 복호화하는 방법 및 이를 위한 복호화 장치 |
US8306125B2 (en) * | 2006-06-21 | 2012-11-06 | Digital Video Systems, Inc. | 2-bin parallel decoder for advanced video processing |
US7504970B2 (en) * | 2006-08-17 | 2009-03-17 | Raytheon Company | Data encoder |
US20080075376A1 (en) * | 2006-09-26 | 2008-03-27 | James Wilson | Iterative process with rotated architecture for reduced pipeline dependency |
US8411709B1 (en) | 2006-11-27 | 2013-04-02 | Marvell International Ltd. | Use of previously buffered state information to decode in an hybrid automatic repeat request (H-ARQ) transmission mode |
US7970215B2 (en) * | 2007-03-30 | 2011-06-28 | Intel Corporation | Automatic generation of compact code tables |
US20090010326A1 (en) * | 2007-07-05 | 2009-01-08 | Andreas Rossholm | Method and apparatus for parallel video decoding |
US8897393B1 (en) | 2007-10-16 | 2014-11-25 | Marvell International Ltd. | Protected codebook selection at receiver for transmit beamforming |
US8542725B1 (en) | 2007-11-14 | 2013-09-24 | Marvell International Ltd. | Decision feedback equalization for signals having unequally distributed patterns |
US7714753B2 (en) * | 2007-12-11 | 2010-05-11 | Intel Corporation | Scalable context adaptive binary arithmetic coding |
JP4893657B2 (ja) * | 2008-02-29 | 2012-03-07 | ソニー株式会社 | 算術復号装置 |
US8565325B1 (en) | 2008-03-18 | 2013-10-22 | Marvell International Ltd. | Wireless device communication in the 60GHz band |
US8542748B2 (en) | 2008-03-28 | 2013-09-24 | Sharp Laboratories Of America, Inc. | Methods and systems for parallel video encoding and decoding |
US7557740B1 (en) * | 2008-04-18 | 2009-07-07 | Realtek Semiconductor Corp. | Context-based adaptive binary arithmetic coding (CABAC) decoding apparatus and decoding method thereof |
US7592937B1 (en) * | 2008-06-02 | 2009-09-22 | Mediatek Inc. | CABAC decoding unit and method |
US8138956B2 (en) * | 2008-06-02 | 2012-03-20 | Mediatek Inc. | CABAC encoder and CABAC encoding method |
US8300704B2 (en) * | 2008-07-22 | 2012-10-30 | International Business Machines Corporation | Picture processing via a shared decoded picture pool |
US8761261B1 (en) | 2008-07-29 | 2014-06-24 | Marvell International Ltd. | Encoding using motion vectors |
US8498342B1 (en) | 2008-07-29 | 2013-07-30 | Marvell International Ltd. | Deblocking filtering |
US8345533B1 (en) | 2008-08-18 | 2013-01-01 | Marvell International Ltd. | Frame synchronization techniques |
US8681893B1 (en) | 2008-10-08 | 2014-03-25 | Marvell International Ltd. | Generating pulses using a look-up table |
US20100127904A1 (en) * | 2008-11-26 | 2010-05-27 | Horizon Semiconductors Ltd. | Implementation of a rapid arithmetic binary decoding system of a suffix length |
US8520771B1 (en) | 2009-04-29 | 2013-08-27 | Marvell International Ltd. | WCDMA modulation |
US7961122B1 (en) | 2010-02-03 | 2011-06-14 | Himax Media Solutions, Inc. | Multi-bin CABAC bypass bin decoder |
US7978102B1 (en) | 2010-03-09 | 2011-07-12 | Himax Media Solutions, Inc. | Multi-bin CABAC decision bin decoder |
TWI396450B (zh) * | 2010-03-11 | 2013-05-11 | Himax Media Solutions Inc | 高運算頻率的二進制運算解碼裝置 |
CN102201816B (zh) * | 2010-03-25 | 2014-01-01 | 承景科技股份有限公司 | 并联的五旁路位全文自适应二进制算术编码解码器 |
US8817771B1 (en) | 2010-07-16 | 2014-08-26 | Marvell International Ltd. | Method and apparatus for detecting a boundary of a data frame in a communication network |
US8344917B2 (en) | 2010-09-30 | 2013-01-01 | Sharp Laboratories Of America, Inc. | Methods and systems for context initialization in video coding and decoding |
US9313514B2 (en) | 2010-10-01 | 2016-04-12 | Sharp Kabushiki Kaisha | Methods and systems for entropy coder initialization |
CN101986708A (zh) * | 2010-10-29 | 2011-03-16 | 北京中星微电子有限公司 | 一种视频解码方法及解码器 |
US10123053B2 (en) * | 2011-05-23 | 2018-11-06 | Texas Instruments Incorporated | Acceleration of bypass binary symbol processing in video coding |
USRE47366E1 (en) | 2011-06-23 | 2019-04-23 | Sun Patent Trust | Image decoding method and apparatus based on a signal type of the control parameter of the current block |
MX2013013508A (es) | 2011-06-23 | 2014-02-27 | Panasonic Corp | Metodo de decodificacion de imagenes, metodo de codificacion de imagenes, aparato de decodificacion de imagenes, aparato de codificacion de imagenes y aparato de codificacion y decodificacion de imagenes. |
RU2603552C2 (ru) | 2011-06-24 | 2016-11-27 | Сан Пэтент Траст | Способ декодирования изображения, способ кодирования изображения, устройство декодирования изображения, устройство кодирования изображения и устройство кодирования и декодирования изображения |
TWI581615B (zh) | 2011-06-24 | 2017-05-01 | Sun Patent Trust | A decoding method, a coding method, a decoding device, an encoding device, and a coding / decoding device |
CN105554510B (zh) * | 2011-06-28 | 2019-06-28 | 三星电子株式会社 | 对视频进行解码的方法和设备 |
CN103563377B (zh) | 2011-06-28 | 2017-05-10 | 太阳专利托管公司 | 解码方法及解码装置 |
MX2013010892A (es) | 2011-06-29 | 2013-12-06 | Panasonic Corp | Metodo de decodificacion de imagenes, metodo de codificacion de imagenes, aparato de decodificacion de imagenes, aparato de codificacion de imagenes y aparato de codificacion y decodificacion de imagenes. |
WO2013001769A1 (ja) | 2011-06-30 | 2013-01-03 | パナソニック株式会社 | 画像復号方法、画像符号化方法、画像復号装置、画像符号化装置及び画像符号化復号装置 |
US9432666B2 (en) * | 2012-03-29 | 2016-08-30 | Intel Corporation | CAVLC decoder with multi-symbol run before parallel decode |
US10455247B2 (en) | 2014-06-29 | 2019-10-22 | Lg Electronics Inc. | Method and apparatus for performing arithmetic coding on basis of concatenated ROM-RAM table |
US10158874B2 (en) * | 2015-09-30 | 2018-12-18 | Apple Inc. | Parallel bypass and regular bin coding |
EP3188038B1 (en) * | 2015-12-31 | 2020-11-04 | Dassault Systèmes | Evaluation of a training set |
US20230059794A1 (en) * | 2021-08-23 | 2023-02-23 | Mediatek Inc. | Context-based adaptive binary arithmetic coding decoder capable of decoding multiple bins in one cycle and associated decoding method |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6256653B1 (en) * | 1997-10-23 | 2001-07-03 | Advanced Micro Devices, Inc. | Multi-function bipartite look-up table |
US6049399A (en) * | 1997-11-04 | 2000-04-11 | Winbond Electronics Corp. | Method and apparatus with reduced look-up tables for converting luminance-chrominance color space signals to RGB color space signals |
KR100232144B1 (ko) * | 1997-11-28 | 1999-12-01 | 구자홍 | 디지탈 티브이의 룩업 테이블 처리장치 및 그 방법 |
US6856701B2 (en) * | 2001-09-14 | 2005-02-15 | Nokia Corporation | Method and system for context-based adaptive binary arithmetic coding |
US7055018B1 (en) * | 2001-12-31 | 2006-05-30 | Apple Computer, Inc. | Apparatus for parallel vector table look-up |
US6611214B1 (en) * | 2002-02-15 | 2003-08-26 | Lsi Logic Corporation | ROM code compression |
WO2003092169A1 (en) * | 2002-04-26 | 2003-11-06 | Ntt Docomo, Inc. | Signal encoding method, signal decoding method, signal encoding device, signal decoding device, signal encoding program, and signal decoding program |
PT1467491E (pt) * | 2002-05-02 | 2007-03-30 | Fraunhofer Ges Forschung | Codificação aritmética de coeficientes de transformação |
EP1571755A3 (de) * | 2002-05-02 | 2005-10-19 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Verfahren und Anordnung zur arithmetischen Enkodierung und Dekodierung mit initialisierung eines Wahrscheinlichkeitsmodelles |
US6781529B1 (en) * | 2002-10-24 | 2004-08-24 | Apple Computer, Inc. | Methods and apparatuses for variable length encoding |
US6798240B1 (en) * | 2003-01-24 | 2004-09-28 | Altera Corporation | Logic circuitry with shared lookup table |
US6943580B2 (en) * | 2003-02-10 | 2005-09-13 | Altera Corporation | Fracturable lookup table and logic element |
US7185035B1 (en) * | 2003-10-23 | 2007-02-27 | Altera Corporation | Arithmetic structures for programmable logic devices |
JP4677901B2 (ja) * | 2003-10-29 | 2011-04-27 | 日本電気株式会社 | 算術符号の復号器または符号化器と逆2値化変換器または2値化変換器との間に中間バッファが挿入された復号装置または符号化装置 |
US6956510B1 (en) * | 2004-05-14 | 2005-10-18 | Marvell International Ltd. | Methods, software, circuits and systems for coding information |
KR100648258B1 (ko) * | 2004-08-02 | 2006-11-23 | 삼성전자주식회사 | 고속의 디코딩을 수행하는 파이프라인 구조의 내용 기반적응적 이진 산술 디코더 |
TWI245571B (en) * | 2004-11-05 | 2005-12-11 | Ali Corp | Variable-length decoding apparatus and method for the image format of a digital video camera |
US7804903B2 (en) | 2005-06-27 | 2010-09-28 | Intel Corporation | Hardware-based CABAC decoder |
-
2006
- 2006-06-26 US US11/474,897 patent/US7262722B1/en not_active Expired - Fee Related
-
2007
- 2007-06-19 CN CN2007800237547A patent/CN101480054B/zh not_active Expired - Fee Related
- 2007-06-19 GB GB0818844A patent/GB2450287B/en not_active Expired - Fee Related
- 2007-06-19 WO PCT/US2007/071605 patent/WO2008002804A1/en active Application Filing
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9591311B2 (en) | 2011-06-27 | 2017-03-07 | Sun Patent Trust | Image decoding method, image coding method, image decoding apparatus, image coding apparatus, and image coding and decoding apparatus |
US9525881B2 (en) | 2011-06-30 | 2016-12-20 | Sun Patent Trust | Image decoding method, image coding method, image decoding apparatus, image coding apparatus, and image coding and decoding apparatus |
US9462282B2 (en) | 2011-07-11 | 2016-10-04 | Sun Patent Trust | Image decoding method, image coding method, image decoding apparatus, image coding apparatus, and image coding and decoding apparatus |
Also Published As
Publication number | Publication date |
---|---|
CN101480054A (zh) | 2009-07-08 |
US7262722B1 (en) | 2007-08-28 |
WO2008002804A1 (en) | 2008-01-03 |
GB0818844D0 (en) | 2008-11-19 |
GB2450287B (en) | 2011-11-02 |
GB2450287A (en) | 2008-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101480054B (zh) | 利用并行二进制算术解码的基于硬件的cabac解码器 | |
US7804903B2 (en) | Hardware-based CABAC decoder | |
US7079057B2 (en) | Context-based adaptive binary arithmetic coding method and apparatus | |
US20020101367A1 (en) | System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms | |
US20020091905A1 (en) | Parallel compression and decompression system and method having multiple parallel compression and decompression engines | |
US20050021572A1 (en) | Algorithms for block-level code alignment of software binary files | |
CN101790889A (zh) | 用于基于上下文的自适应二进制算术译码位流的多级解码的架构 | |
US20220092031A1 (en) | Data compression method and computing device | |
CN101951516A (zh) | 基于h.264/avc中cabac的并行编码实现电路及编码方法 | |
US5592162A (en) | Interval width update process in the arithmetic coding method | |
CN101414830A (zh) | 平行处理至少两个二进制值的方法与相应算术编码系统 | |
Tsern et al. | A low power video-rate pyramid VQ decoder | |
GB2333000A (en) | Finite state machine coding of information | |
CN102801974A (zh) | 基于cabac的图像压缩熵编码器 | |
WO2007102518A1 (ja) | 算術符号化装置、算術符号化方法、算術符号化プログラム及びプログラムを格納したコンピュータで読み取り可能な記録媒体 | |
CN100593954C (zh) | 一种对哥伦布码进行解码的装置及方法 | |
JP3230933B2 (ja) | データ伸長装置、データ伸長方法、デコーディング装置、デコーディング方法、エンコーディング装置、及びエントロピー・デコーダ | |
JP3459759B2 (ja) | 算術復号化装置 | |
US6012077A (en) | Method and apparatus for indicating overflow status of bit-variable data employing pipelining adder | |
CN113238988B (zh) | 优化深度神经网络的参数的处理系统、集成电路及板卡 | |
CN101458679B (zh) | 统一反向离散余弦变换(idct)微码处理器引擎 | |
Schneider et al. | A new power estimation technique with application to decomposition of boolean functions for low power | |
Wehrung | Projective classes as images of accessible functors | |
GB2608030A (en) | Power-aware transmission of quantum control signals | |
Zheng et al. | Efficient pipelined CABAC encoding architecture |
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: 20101222 Termination date: 20180619 |