专用算术编码指令的制作方法

文档序号:11142214阅读:236来源:国知局
专用算术编码指令的制造方法与工艺

本发明主张2014年5月27日申请的共同拥有的美国非临时专利申请案14/288,018号的优先权,其内容以全文引用的方式明确地并入本文中。

技术领域

本发明大体上涉及微处理器指令。



背景技术:

技术的进步已产生较小且更强大的计算装置。举例来说,当前存在多种便携式个人计算装置,包含无线计算装置,例如便携式无线电话、个人数字助理(PDA)及传呼装置,其体积小,重量轻且易于由用户携带。更具体地说,便携式无线电话(例如蜂窝式电话及互联网协议(IP)电话)可经由无线网路传达语音及数据包。另外,许多所述无线电话包含并入于其中的其它类型的装置。举例来说,无线电话还可包含数字静态相机、数字摄像机、数字记录器及音频档案播放器。此外,所述无线电话可处理可执行指令,包含可用以对因特网进行接入的软件应用程序(例如,网页浏览器应用程序)。因此,这些无线电话可包括显著计算能力。

为达成高效率数据传送,表示视频档案的视频位流可在发射到例如无线电话的计算装置之前经编码。基于上下文的适应性二进制算术译码(CABAC)可用于连续地编码视频档案。通用指令可在CABAC编码期间使用以编码二进位(例如,位)。然而,归因于相对较大的处理时间,通用指令可为效率低的。



技术实现要素:

本发明公开用于编码视频流的设备及方法。使用上下文适应性二进制算术译码(CABAC)编码方案编码位(例如,“二进位”)包含递归更新“区间”及“当前”码间隔的“偏移”。区间可包含第一子间隔(例如,最小可能符号(LPS))及第二子间隔(例如,最大可能符号(MPS))。如果二进位经编码为MPS(例如,逻辑“1”),那么区间可等于MPS的区间(例如,rMPS)及偏移,所述偏移可表示为“低区”且可保持不变(例如,lownew=low)。替代地,如果二进位经编码为LPS(例如,逻辑“0”),那么区间可等于LPS的区间(例如,rLPS)且偏移可等于偏移与MPS的区间的和(例如,lownew=low+rMPS)。所述偏移为经编码位流。

根据所描述的技术,使用CABAC编码视频流的专用算术编码指令(例如专用CABAC指令)可由处理器执行。处理器可经配置以执行通用指令及执行专用算术编码指令。举例来说,专用算术编码指令接受第一区间、第一偏移及第一状态作为输入。基于专用算术编码指令的一或多个输出,处理器可存储第二状态、重新对准第一区间以产生第二区间,及重新对准第一偏移以产生第二偏移。

举例来说,在专用算术编码指令的执行期间,第一区间(例如,9个位)可存储在第一寄存器(例如,32位寄存器)中且第一偏移(例如,10个位)可存储在第二寄存器(例如,32位寄存器)中。第一寄存器可包含前导零、第一区间(例如,9个位)及尾随零。位位置(例如,“bitpos”)可指示第一寄存器中之前导零的数目且可使用计数前导零(CLZ)指令获得。因此,在特定实例中,尾随零的数目为(32-9-bitpos)=(23-bitpos)。一或多个位可从第一寄存器检索且用作索引以在查找表中寻找LPS的区间的值。LPS的区间的值可经左偏移尾随零的数目以将LPS的区间的值与第一寄存器中的第一区间(例如,9个位)对准。在每一编码反复后,第一寄存器中的二进位可经重新归一化(renormalized)以使得下一反复中所使用的第一区间(例如,9个位)的最有效位(MSB)等于1。

在重新归一化期间,可将第二寄存器的特定字节提供(例如,输出)到位流。举例来说,当区间的MSB小于1(对应于偏移的增加)时,可将第二寄存器的第一及第二字节提供到位流,可将第二寄存器的第三字节左偏移到第一字节位置,且可清除第二寄存器的第四字节以重新归一化第二寄存器(例如,偏移)及第一寄存器(例如,区间)。

使用专用算术编码指令(例如,单一指令)编码二进位与使用多个通用指令相比可增加编码速度。举例来说,专用算术编码指令的使用将产生经编码视频流位的时间从多个处理器执行循环(即,大于2个循环)(使用通用指令)减少到2个处理器执行循环。

在特定方面中,设备包含存储器及耦合到所述存储器的处理器。处理器经配置以执行专用算术编码指令。专用算术编码指令接受包含第一区间、第一偏移及第一状态的多个输入且基于所述多个输入产生一或多个输出。基于专用算术编码指令的一或多个输出,处理器经配置以存储第二状态、重新对准第一区间以产生第二区间,及重新对准第一偏移以产生第二偏移。

在另一特定方面中,方法包含在处理器处执行专用算术编码指令。专用算术编码指令接受包含第一区间、第一偏移及第一状态的多个输入且基于所述多个输入产生一或多个输出。方法还包含基于专用算术编码指令的一或多个输出,存储第二状态、重新对准第一区间以产生第二区间及重新对准第一偏移以产生第二偏移。

在另一特定方面中,非暂时性计算机可读媒体包含专用上下文适应性二进制算术(CABAC)编码指令,所述专用CABAC编码指令接受包含第一区间、第一偏移及第一状态的多个输入且基于所述多个输入产生一或多个输出。专用CABAC编码指令由处理器执行。专用CABAC编码指令导致处理器存储第二状态、重新对准第一区间以产生第二区间及重新对准第一偏移以产生第二偏移。

在另一特定方面中,设备包含用于存储通用指令及专用算术编码指令的装置。设备还包含用于执行从用于存储的装置检索的通用指令的装置。设备进一步包含用于执行从用于存储的装置检索的专用算术编码指令的装置。专用算术编码指令接受包含第一区间、第一偏移及第一状态的多个输入。基于所述多个输入,专用算术编码指令经执行以产生一或多个输出。基于一或多个输出,第二状态经存储、第一区间经重新对准以产生第二区间且第一偏移经重新对准以产生第二偏移。

由所公开的方面中的至少一者提供的一个特定优势是在微处理器处编程及执行专用算术编码指令的能力。专用算术编码指令的使用可减少编码经熵编码的视频位流(例如H.264CABAC视频位流或H.265CABAC视频位流)的处理器执行循环的数目。本发明的其它方面、优势及特征将在审阅包含以下章节的完整申请案之后变得显而易见:【附图说明】、【具体实施方式】及【权利要求书】。

附图说明

图1为可操作以执行专用算术编码指令的系统的特定说明性方面的图;

图2为使用专用算术编码指令修改CABAC区间及偏移的说明性方面;

图3为将信息存储在经配置以执行专用算术编码指令的处理器的寄存器中的方法的特定说明性方面的图;

图4为执行专用算术编码指令的逻辑的特定说明性方面的架构图;

图5为说明重新归一化区间及偏移的方法的流程图;

图6为执行专用算术编码指令的方法的特定说明性方面的流程图;及

图7为包含具有通用指令及专用算术编码指令的指令集的无线装置的框图。

具体实施方式

参看图1,展示了可操作以执行专用算术编码指令的系统100的特定说明性方面。系统100包含经耦合到存储器120的处理器110。

处理器110包含经配置以执行通用指令的通用指令执行逻辑112。通用指令可包含共同执行的处理器指令,例如LOAD、STORE、JUMP、ADD、INCREMENT等。通用指令执行逻辑112可包含执行通用指令的通用载入-存储逻辑。处理器110还包含经配置以执行专用算术编码指令的专用算术编码指令执行逻辑114。专用算术编码指令可由处理器110执行以基于熵译码方案(例如上下文适应性二进制算术译码(CABAC)方案)编码视频流。在特定方面中,可根据由国际电信联盟颁布的264视听及多媒体系统标准(H.264,名称为“用于通用视听服务的进阶视译码(Advanced video coding for generic audiovisual services)”)将专用算术编码指令用于编码视频流。在另一方面中,可根据由国际电信联盟颁布的265视听及多媒体系统标准(H.265,名称为“H系列:视听及多媒体系统,运动视频的视听服务-译码的基础结构(Series H:Audiovisual and Multimedia Systems,Infrastructure of audiovisual services-coding of moving video)”将专用算术编码指令用于编码视频流。

在特定方面中,通用指令及专用算术编码指令由处理器110的共同执行单元执行。举例来说,共同执行单元可包含通用指令执行逻辑112及专用算术编码指令执行逻辑114两者。在说明性方面中,专用算术编码指令为不可部分完成的指令,其可由处理器110执行而不将所述专用算术编码指令分隔成将由通用指令执行逻辑112执行的一或多个通用指令。专用算术编码指令可为处理器110的指令集的单一指令且可在处理器110的较小数目的循环(例如,少于三个执行循环)中执行。在特定方面中,处理器110为管线式多线程超长指令字(VLIW)处理器。

存储器120可包含随机接入存储器(RAM)、只读存储器(ROM)、寄存器存储器,或其任何组合。虽然存储器120在图1中经说明为与处理器110分离,但存储器120实际上可为处理器110的嵌入式存储器(例如,高速缓冲存储器)。

在操作中,处理器110可用于编码视频流。当编码视频流的特定位时,处理器110可从存储器120检索专用算术编码指令且逻辑114可执行所检索指令。

应了解,图1的系统100可使得能够执行专用算术编码指令(例如,当编码视频流时)。与使用多个通用指令执行视频编码演算法的处理器相比,经配置以执行专用算术编码指令的处理器(例如,处理器110)可更快地编码视频流。举例来说,如本文进一步所描述,与通过使用通用指令相比,执行专用算术编码指令的能力可使处理器能够在更少的执行循环中执行复杂及耗时的编码操作。

参看图2,公开使用专用算术编码指令修改CABAC区间及偏移的说明性方面200、220。CABAC为一种二进制算术译码形式。大体来说,二进制算术译码的特征可为两个量:当前间隔“区间”及当前间隔区间中的当前“偏移”。

为编码特定位,基于最小可能符号(LPS)及最大可能符号(MPS),首先将当前区间细分成两个部分。举例来说,LPS可为“0”符号、MPS可为“1”符号且当前区间可为在0与1之间的区间。大体来说,如果R为当前区间的宽度、rLPS为第一部分的宽度、rMPS为第二部分的宽度、pLPS为遇到最小可能符号的机率及pMPS为遇到最大可能符号的机率,那么rLPS=R×pLPS且rMPS=R×pMPS=R-rLPS。因此,在最小可能符号的机率高于最大可能符号的机率时,对应于最小可能符号的部分将具有大于对应于最大可能符号的部分的宽度rMPS的宽度rLPS。也就是说,当pLPS>pMPS时,rLPS>rMPS。类似地,当pMPS>pLPS时,rMPS>rLPS。每一二进位可经编码为MPS或LPS,且可基于经编码的二进位而反复地更新rLPS及rMPS,如下文所解释。

举例来说,如图2的第一方面200中所说明,专用算术编码指令202可经执行以将二进位204编码为MPS(例如,将二进位编码为逻辑“1”)。在特定方面中,专用算术编码指令202可由图1的处理器110的专用算术编码指令执行逻辑114执行。区间206及低区208(例如,偏移)可表征二进位204。如图所示,区间206可等于二进位204的rLPS 210与二进位204的rMPS 212的和。执行专用算术编码指令202以将二进位204编码为MPS产生经编码的二进位214。经编码的二进位214的区间216等于二进位204的rMPS 212,且经编码的二进位214的低区218(例如,偏移)等于二进位204的低区208。

作为另一实例,如图2的第二方面220中所说明,专用算术编码指令222可经执行以将二进位204编码为LPS(例如,将二进位编码为逻辑“0”)。在特定方面中,专用算术编码指令222可由图1的处理器110的专用算术编码指令执行逻辑114执行。执行专用算术编码指令222以将二进位204编码为LPS可产生经编码的二进位234。经编码的二进位234的区间236等于二进位204的rLPS 210,且经编码的二进位234的低区(例如,偏移)等于二进位204的低区208与二进位204的rMPS 212的和。在特定方面中,专用算术编码指令202及专用算术编码指令222可为相同指令。

参照图2中所描绘的方面200、220,偏移(例如分别为低区218、低区238)可写入到位流(经编码的二进位)。如图2中所说明,经编码的二进位214的区间216及经编码的二进位234的区间236可小于二进位204的区间206(例如,所述区间可随每一编码步骤而减小)。因此,可在编码每一二进位后或在区间值降到阈值以下时重新归一化区间及低区。举例来说,可在区间的最有效位(MSB)低于1(例如,MSB=0)时重新归一化由一9位二进制数表示的区间。关于图5更详细描述重新归一化。

根据H.264或H.265的CABAC编码为状态相关操作。也就是说,编码视频流可包含保持除区间及偏移之外的信息(例如,状态、位位置及MPS位)。对于H.264或H.265,区间为一9位的数量且偏移为至少9位的数量。rLPS的计算可由存储CABAC常数且经区间及状态编索引的256个字节的64×4查找表来求取近似值。因为查找表中的值为由H.264标准或H.265标准定义的常数,所以查找表可为硬译码的。替代地,查找表可为可编程的(例如,可重写的)。

专用CABAC编码指令(例如,专用算术编码指令202、222)可重新对准区间、重新对准偏移及查找CABAC常数,如本文所描述。专用CABAC编码指令可接受CABAC状态位、CABAC MPS位、位位置(bitpos)、九个CABAC区间位、至少九个CABAC偏移位及输入值位(例如,输入值二进位)作为输入。专用CABAC编码指令可产生包含新CABAC状态位、新CABAC MPS位、九个CABAC区间位及至少九个CABAC偏移位的输出。如上文所解释,编码过程可在某些反复后经重新归一化以使得MPS的MSB的值为1。举例来说,专用CABAC编码指令可根据以下伪码操作:

应注意,虽然如本文中所阐述的等式及表达式使用类似于C或C++程序设计语言的语法,但所述表达式是用于说明的目的且实际上可以具有不同语法的其它程序设计语言表示。

以上伪码可经封装到函数ENCBIN()(下文所说明)中且经编码的H.264或H.265视频位可在两个处理器循环中产生。

在特定方面中,专用CABAC编码指令的使用将产生经编码视频流位的时间从多个处理器执行循环(即,大于2个循环)(使用通用指令)减少到2个处理器执行循环。

参看图3,公开将信息存储在经配置以执行专用算术编码指令360的处理器的寄存器中的方法的特定说明性方面。在说明性方面中,专用算术编码指令360为H.264CABAC编码指令。在另一说明性方面中,专用算术编码指令360为H.265CABAC编码指令。在特定方面中,专用算术编码指令360可对应于图2的专用算术编码指令202、222中的一者。

在专用算术编码指令360的执行期间,二进位350(例如,专用CABAC编码指令360的输入值位350)可存储在预测寄存器340中。存储在预测寄存器340中的二进位350可在决策或视频编码算法中使用。处理器110可载入及存储用于在两个输入寄存器对310及320中执行专用算术编码指令360的数据。在特定方面中,寄存器对310及320为成对的32位寄存器。

处理器可存储在专用算术编码指令于输出寄存器对330中执行的期间所产生的数据。在特定方面中,输出寄存器对330为一对32位寄存器。

第一输入寄存器对310的第一寄存器Rtt.w0 311可存储输入状态301及输入MPS位302。在特定方面中,Rtt.w0 311的位0至5(表示为Rtt.w0[0:5])存储输入状态301且Rtt.w0[8]存储输入MPS位302。第一输入寄存器对310的第二寄存器Rtt.w1 312可存储输入位位置(bitpos)303。举例来说,Rtt.w1[0:4]可存储输入bitpos 303。

第二输入寄存器对320的第一寄存器Rss.w0 321可存储输入区间304。举例来说,Rss.w0[0:8]可存储输入区间304的9个位。第二输入寄存器对320的第二寄存器Rss.w1322可存储输入偏移305。在特定方面中,Rss.w1[0:8]存储输入偏移305的9个位。

输出寄存器对330的第一寄存器Rdd.w0 331可存储输出状态308、输出MPS位307及输出区间306。举例来说,Rdd.w0[0:5]可存储6位输出状态308,Rdd.w0[8]可存储输出MPS位307且Rdd.w0[23:31]可存储输出区间306。输出寄存器对331的第二寄存器Rdd.w1 332可以归一化方式存储输出偏移309。

应了解,处理器可将用于专用CABAC编码指令的输出数据“封装”到两个输入寄存器对中。应注意,虽然专用CABAC编码指令360在本文中已参考H.264视频压缩标准及/或H.265视频压缩标准进行解释,但专用CABAC编码指令360可用于编码其它算术译码的位流。举例来说,专用CABAC编码指令360可用于编码根据联合图像专家群3000(JPEG3000)图像压缩标准编码的位流。应注意,虽然图3说明预测寄存器、两个输入寄存器对及一个输出寄存器对,但专用CABAC编码指令360可使用任何数目及组合的输入及输出寄存器来交替地执行。应进一步注意,虽然如本文所描述的专用CABAC编码指令360利用9位区间及9位偏移,但是所述位长度仅用于说明性目的。其它算术编码算法可使用其它长度,且如本文所描述的专用算术编码指令可接受任何位长度的数据作为输入且产生任何位长度的数据作为输出。

参看图4,展示执行专用算术编码指令的逻辑400的特定说明性方面的架构图。在说明性方面中,专用算术编码指令为H.264CABAC编码指令。在另一说明性方面中,专用算术编码指令为H.265CABAC编码指令。

可检索6个输入变数且将其提供到逻辑400。举例来说,输入状态301可从第一输入寄存器对310的第一寄存器Rtt.w0 311检索,输入MPS位302可从第一输入寄存器对310的第一寄存器Rtt.w0 311检索,输入bitpos 303可从第一输入寄存器对310的第二寄存器Rtt.w1 312检索,输入区间304可从第二输入寄存器对320的第一寄存器Rss.w0321检索,输入偏移305(例如,低区)可从第二输入寄存器对320的第二寄存器Rss.w1 322检索,且输入二进位350可从预测寄存器340检索。

输入bitpos 303及输入区间304可经提供到左移位器443。左移位器443可经配置以使输入区间304移位输入bitpos 303。使输入区间304移位输入bitpos 303可产生经移位区间445。输入状态301可用作CABAC H.264/H.265常数查找表422中的索引。4个CABAC常数423由于索引操作而产生且经输入到四合一多路复用器424中,所述多路复用器基于经移位区间445输入所选择的CABAC常数。所选择的CABAC常数可对应于LPS(例如,rLPS 427)的宽度。经移位区间445及rLPS 427可经提供到减法器412。减法器412可从经移位区间445减去rLPS 427(例如,Range-rLPS)以产生MPS的宽度(例如,rMPS 448)。

CABAC H.264/H.265常数查找表422还可产生新LPS状态常数425及新MPS状态常数426。新LPS状态常数425及新MPS状态常数426可经提供到二合一多路复用器474。输入二进位350及输入MPS位302可经提供到比较器414。比较器414可确定输入二进位350及输入MPS位302是否相等。响应于输入二进位350与输入MPS位302相等的确定,比较器414产生逻辑高电压信号(例如,逻辑“1”)。响应于输入二进位350与输入MPS位302不相等的确定,比较器414产生逻辑低电压信号(例如,逻辑“0”)。比较器414的输出经提供到逻辑-与门418、到二合一多路复用器470的控制输入、到二合一多路复用器474的控制输入及到二合一多路复用器476的控制输入。

输入偏移305(“低区”)可经提供到二合一多路复用器470及到加法器449。rMPS448还可经提供到加法器449。加法器449经配置以将rMPS 448与输入偏移305相加,且将结果(例如,和)提供到二合一多路复用器470。基于比较器414的输出,二合一多路复用器470可输出输入偏移305作为输出偏移309或输出输入偏移305与rMPS 448的和作为输出偏移309。举例来说,当输入二进位350经编码为LPS(例如,输入二进位350不等于输入MPS位302)时,比较器414可将逻辑高电压信号提供到二合一多路复用器470的控制输入。响应于接收到逻辑高电压信号,二合一多路复用器470可输出输入偏移305与rMPS 448的和作为输出偏移309。当输入二进位350经编码为MPS(例如,输入二进位350等于输入MPS位302)时,比较器414可将逻辑低电压信号提供到二合一多路复用器470的控制输入。响应于接收到逻辑低电压信号,二合一多路复用器470可输出输入偏移305作为输出偏移309。

输出状态308可与比较器414的输出相关。举例来说,当输入二进位350经编码为LPS(例如,输入二进位350不等于输入MPS位302)时,比较器414可将逻辑高电压信号提供到二合一多路复用器474的控制输入。响应于接收到逻辑高电压信号,二合一多路复用器474可输出新LPS状态常数425作为输出状态308。当输入二进位350经编码为MPS(例如,输入二进位350等于输入MPS位302)时,比较器414可将逻辑低电压信号提供到二合一多路复用器474的控制输入。响应于接收到逻辑低电压信号,二合一多路复用器474可输出新MPS状态常数426作为输出状态308。

输出区间306可与比较器414的输出相关。举例来说,当输入二进位350经编码为LPS(例如,输入二进位350不等于输入MPS位302)时,比较器414可将逻辑高电压信号提供到二合一多路复用器476的控制输入。响应于接收到逻辑高电压信号,二合一多路复用器476可输出rLPS 427作为输出区间306。当输入二进位350经编码为MPS(例如,输入二进位350等于输入MPS位302)时,比较器414可将逻辑低电压信号提供到二合一多路复用器476的控制输入。响应于接收到逻辑低电压信号,二合一多路复用器476可输出rMPS 448作为输出区间306。

输入状态301还可经提供到反向器420。反向器420可经配置以将输入状态301反向且将结果提供到逻辑-门与418。当比较器414的输出及反向器420的输出对应于逻辑高电压信号时(例如,当输入二进位350等于输入MPS位302且输入状态301为逻辑“0”时),逻辑-与门418可将逻辑高电压信号提供到二合一多路复用器472的控制输入。图4中所说明的输入状态301为逻辑“0”(例如,“==0”)。然而,输入状态301还可为逻辑“1”(例如,“==1”)。如果输入二进位350不等于输入MPS位及/或如果输入状态301为逻辑“1”,那么逻辑-与门418可将逻辑低电压信号提供到二合一多路复用器472的控制输入。

输入MPS位302可经提供到二合一多路复用器472。输入MPS位302也可由反向器416反向。反向器的输出(例如,经反向的输入MPS位)可经提供到二合一多路复用器472。输出MPS位307可取决于逻辑-与门418的输出。举例来说,当逻辑-与门418将逻辑高电压信号提供到二合一多路复用器472的控制输入时(例如,当输入二进位350等于输入MPS位302且输入状态301为逻辑“0”时),二合一多路复用器472输出经反向的输入MPS位作为输出MPS位302。否则,二合一多路复用器472输出输入MPS位302作为输出MPS位307。

应了解,因为许多处理器包含移位器,所以图4的逻辑400可通过存储常数查找表422且添加几个电路元件(例如比较器、加法器、反向器及多路复用器)而实施于所述处理器中。因此,处理器可经配置以通过在不要求对处理器进行大量变更的情况下实施图4的逻辑400来执行专用算术编码指令。

参看图5,流程图500说明重新归一化区间及偏移的方法。偏移可对应于输出寄存器对331的第二寄存器Rdd.w1 332中的位。举例来说,第二寄存器Rdd.w1 332可将8个位(例如,第一字节low.ub[0])存储在第一部分ub[0]中、将第二字节low.ub[1]存储在第二部分ub[1]中、将第三字节low.ub[2]存储在第三部分ub[2]中且将第四字节low.ub[3]存储在第四部分ub[3]中。存储在第二寄存器Rdd.w1 332中的字节可对应于输出偏移309。

如关于图2所解释,当区间的值降到阈值以下时,区间及偏移可经重新归一化。举例来说,由一9位二进制数表示的区间可在区间的最有效位(MSB)为0(例如,区间小于二进制“100000000”)时经重新归一化。参看图5,在502处,处理器(例如,图1的处理器110)可确定输出区间306是否小于十六进制值0x100(例如,小于256)。在504处,如果输出区间306不小于十六进制值0x100,那么输出偏移309及输出区间309不需要重新归一化且所述程序结束。

在506处,如果输出区间306小于十六进制值0x100,那么处理器可确定存储在第三寄存器Rdd.w1 332的第二部分ub[1]中的第二字节low.ub[1]是否等于十六进制值0xFF(例如,255)。举例来说,处理器可确定第二字节low.ub[1]的每一位是否为逻辑“1”位。响应于第二字节low.ub[1]等于十六进制值0xFF的确定,在508处,经缓冲字节(例如,待写入到输出位流的字节)的数目可增加。在510处处理器可接着将第一字节low.ub[0]移位到第二部分ub[1]中、将十六进制值0x00载入到第一部分ub[0]中且将输出区间306向左移位8个位。在504处,方法可结束。

响应在506处第二字节low.ub[1]不等于十六进制值0xFF的确定,在512处,处理器可确定经缓冲字节的数目是否大于0。响应于经缓冲字节的数目大于0的确定,在518处,处理器可将第四字节low.ub[3]输入到位流。举例来说,处理器可将第四字节low.ub[3]作为经编码位流发射到解码器。在520处,处理器可确定经缓冲字节的数目是否大于1。响应经缓冲字节的数目大于1的确定,在522处,处理器可将第三字节low.ub[2]输入到位流,且在524处,可减少经缓冲字节的数目。当经缓冲字节的数目大于1时,在520到524处的操作可继续。响应于在520处的经缓冲字节的数目不大于1的确定,在516处,处理器可将第二字节low.ub[1]移位到第四部分ub[3]中且将十六进制值0xFF移位到第三部分ub[2]中。随后,在510处,处理器可将第一字节low.ub[0]移位到第二部分ub[1]中、将十六进制值0x00载入到第一部分ub[0]中且将输出区间306向左移位8个位。在此之后,在504处,方法可结束。

响应于在512处的经缓冲字节的数目不大于0的确定,在514处,处理器可将经缓冲字节的数目设定为1。接下来,在516处,处理器可将第二字节low.ub[1]移位到第四部分ub[3]中且将十六进制值0xFF移位到第三部分ub[2]中。随后,在510处,处理器可将第一字节low.ub[0]移位到第二部分ub[1]中、将十六进制值0x00载入到第一部分ub[0]中且将输出区间306向左移位8个位(例如,一个字节)。在504处,方法可结束。

图5的流程图500可避免检查输出偏移309的载体位的需要及导出逻辑“0”或逻辑“1”是否应写入到位流的需要。举例来说,如果存在当在专用算术编码指令360的执行期间更新输出偏移309时产生的载体,那么所述载体可经由第三字节low.ub[2]自动传播到第四字节low.ub[3](例如,最有效字节)。流程图500还可通过选择性地将多个字节输入(例如,写入)到基于大量经缓冲字节的位流来减小重新归一化的重复率。

参看图6,展示了执行专用算术编码指令的方法600的特定说明性方面。在说明性方面中,方法600可由图1的处理器110或图4的逻辑400执行。

方法600包含:在602处,在处理器处执行专用上下文适应性二进制算术(CABAC)编码指令。举例来说,处理器110可执行一或多个专用算术编码指令,例如专用算术编码指令202、222或专用算术编码指令360。专用算术编码指令202、222、360可接受输入状态301(例如,第一状态)、输入MPS位302、输入位位置(bitpos)303、输入区间304(例如,第一区间)、输入偏移305(例如,第一偏移)及输入二进位350作为输入。

方法600还可包含在604处,基于专用CABAC编码指令的一或多个输出,存储第二状态、重新对准第一区间以产生第二区间,及重新对准第一偏移以产生第二偏移。举例来说,执行专用算术编码指令可产生输出偏移309(例如,第二偏移)、输出MPS位307、输出状态308(例如,第二状态)及输出区间306(例如,第二区间)。参看图3,输出MPS位307可经存储在输出寄存器对330的第一寄存器Rdd.w0 331中,第二输入寄存器对320的第一寄存器Rss.w0 321中的输入区间304可在输出寄存器对330的第一寄存器Rdd.w0 331中经重新对准,且第二输出寄存器对320的第二寄存器Rss.w1 322中的输入偏移305输入偏移可在输出寄存器对330的第二寄存器Rdd.w1 332中经重新对准。

图6的方法600可使得能够执行专用算术编码指令(例如,当编码视频流时)。与使用多个通用指令执行视频编码算法(例如,CABAC)的处理器相比,经配置以执行专用算术编码指令的处理器(例如,处理器110)可更快地编码视频流。举例来说,与通过使用通用指令相比,执行专用算术编码指令的能力可使处理器能够在更少的执行循环中执行复杂及耗时的编码操作。

图7为无线装置700的框图。无线装置700内的存储器732包含通用指令752及专用算术编码指令754。无线装置700包含经耦合到存储器732的处理器710,例如数字信号处理器。在说明性方面中,处理器710可包含图1的处理器110,且存储器732可包含图1的存储器120。存储器732可为计算机可读存储媒体。

在特定方面中,在编码应用程序中或存储在存储器732处的一些其它编码软件中使用通用指令752及专用算术编码指令754。举例来说,可在用于编码视频的CABAC编码应用程序中使用通用指令752及专用算术编码指令754。无线装置700还包含执行专用算术编码指令754的逻辑712。在说明性方面中,逻辑712包含图4的逻辑400。在特定方面中,逻辑712为经配置以执行通用指令752及专用算术编码指令754的处理器710的执行单元。

在特定方面中,专用算术编码指令754为单一指令。在特定方面中,通用指令752及专用算术编码指令754使无线装置700能够编码符合H.264的经CABAC编码的视频流或符合H.265的经CABAC编码的视频流。逻辑712由处理器710使用以执行专用算术编码指令754。在特定方面中,执行专用算术编码指令754包含检索、处理及存储数据,如本文中关于图4所描述。

图7还展示耦合到处理器710及显示器728的可选显示控制器726。编码器/解码器(编解码器)734也可经耦合到数字信号处理器710。扬声器736及麦克风738可耦合到编解码器734。图7还指示无线控制器740可经耦合到处理器710及天线742。在特定方面中,处理器710、显示控制器726、存储器732、编解码器734及无线控制器740包含于系统级封装或系统单芯片装置722中。在特定方面中,输入装置730及电源744经耦合到系统单芯片装置722。此外,在特定方面中,如图7所说明,显示器728、输入装置730、扬声器736、麦克风738、天线742及电源744位于系统单芯片装置722的外部。然而,每一者可(例如)经由接口或控制器耦合到系统单芯片装置722的组件。在说明性方面中,无线装置700为蜂窝式电话、智能电话或个人数字助理(PDA)。因此,无线装置700可编码视频流且经由天线742发射经编码的视频流。可使用通用指令752及由处理器710的逻辑712执行的一或多个专用算术编码指令754来编码视频流。

应注意,虽然图7描绘了无线装置700,但是逻辑712、通用指令752及专用算术编码指令754可替代地包含于其它装置中,例如机顶盒、音乐播放机、视频播放机、娱乐单元、导航装置、通信装置、固定位置数据单元或计算机。

结合所描述的方面,公开一种包含用于存储通用指令及专用算术编码指令的装置的设备。举例来说,用于存储的装置可包含用以存储通用指令及专用算术编码指令的图1的存储器120、图7的存储器732、一或多个其它装置、电路或模块,或其任何组合。

设备还可包含可用于执行通用指令及专用算术编码指令的装置。举例来说,用于执行的装置可包含图1的处理器110、图1的通用指令执行逻辑112、图1的专用算术编码指令执行逻辑114、图3的预测寄存器340、图3的第一输入寄存器对310、图3的输入寄存器对320、图3的输出寄存器对330、图4的逻辑400、图7的处理器710、图7的执行专用算术编码指令754的逻辑712,用以执行通用指令及专用算术编码指令的一或多个其它装置、电路或模块,或其任何组合。

本领域技术人员将进一步了解,可将结合本文中所公开的方面所描述的各种说明性逻辑区块、配置、模块、电路及算法步骤实施为电子硬件、由处理器执行的计算机软件,或两者的组合。上文已大体上在功能性方面描述各种说明性组件、区块、配置、模块、电路及步骤。此功能性是实施为硬件还是处理器可执行指令取决于特定应用及强加于整个系统上的设计约束。对于每一特定应用来说,本领域技术人员可以变化的方式实施所描述的功能性,但不应将所述实施决策解释为导致脱离本发明的范围。

结合本文中所公开的方面所描述的方法或算法的步骤可直接体现于硬件、由处理器执行的软件模块或所述两者的组合中。软件模块可驻存于随机接入存储器(RAM)、闪速存储器、只读存储器(ROM)、可编程只读存储器(PROM)、可擦程序只读存储器(EPROM)、电可擦出可编程只读存储器(EEPROM)、寄存器、硬盘、可移动磁盘、只读光盘(CD-ROM),或此项技术中已知的任何其它形式的非暂时性存储媒体中。示范性存储媒体耦合到处理器,使得处理器可从存储媒体读取信息及将信息写入到所述存储媒体。在替代例中,存储媒体可集成到处理器。处理器及存储媒体可驻存于特定用途集成电路(ASIC)中。ASIC可驻存于计算装置或用户终端机中。在替代例中,处理器及存储媒体可作为离散组件驻存于计算装置或用户终端机中。

提供所公开方面的先前描述以使得本领域技术人员能够制作或使用所公开的方面。对于本领域技术人员来说,对这些方面的各种修改将易于显而易见,且可在不背离本发明的范围的情况下将本文中所定义的原理应用于其它方面。因此,本发明并不旨在限于本文中所展示的方面,而应符合可能与如以下权利要求书所定义的原理及新颖特征相一致的最广泛范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1