用于可变长度码的高效解码的方法

文档序号:7867125阅读:175来源:国知局
专利名称:用于可变长度码的高效解码的方法
技术领域
本公开的方面总体上涉及解码。特别地,本公开的一个方面涉及解码可变长度码。
背景技术
新的多媒体应用的不断增加的计算复杂性和数据速率要求需要信号处理系统提供高效且灵活的压缩和解压缩例程。编码是用来压缩诸如图像和视频文件之类的媒体文件的技术。可以用在各种用户设备中的图像编码和解码标准的例子是联合图像专家组(JPEG)0JPEG标准利用了用于基于分别用于编码和解码操作的离散余弦变换(DCT)和离散余弦逆变换(IDCT)来压缩静止图像的有损压缩技术。在JPEG标准中,可以使用8x8的样本数据阵列(称作数据块)以用于处理,其中样本数据可以对应于静止图像信号的亮度(Y)或色度(Cr和Cb)信息。在JPEG术语中,将四个8x8亮度块、一个8x8 Cr块和一个8x8 Cb数据块称作最小编码单元(MCU)。这种类型的JPEG编码被称作YUV420。存在其他类型的JPEG编码,举例来说,例如YUV444。另外,例如由JPEG标准规定的解码操作可以利用计算密集型算法,例如霍夫曼解码算法,其是可变长度编码(VLC)技术。在这方面,霍夫曼解码可能利用片上计算和/或存储器资源的大部分,这会增加处理时间并且降低总体系统效率。因此,具有解决上面讨论的问题中的一个或多个的方法、系统和计算机程序产品将是有利的。

发明内容
本发明的一个方面涉及一种用于解码可变长度码的方法。所述方法包括接收可变长度码。所述可变长度码是多个比特。随后,所述方法识别出在所述多个比特的开头处前导比特被连续地重复的次数。所述前导比特被预定为I或O之一。接下来,所述方法通过使用前导比特被重复的次数来在码字表中识别出码字。本发明的另一方面涉及一种用于解码可变长度码的系统。所述系统包括存储器单元、连接到存储器单元的处理单元、以及解码模块。所述解码模块被配置成接收可变长度码。所述可变长度码是多个比特。所述解码模块还被配置成识别出在所述多个比特的开头处前导比特被连续地重复的次数。所述前导比特被预定为I或O之一。所述解码模块还被配置成通过使用前导比特被重复的次数来在码字表中识别出码字。本发明的又一方面涉及一种包括逻辑的计算机程序产品,所述逻辑被编码在有形介质上以用于解码可变长度码。所述逻辑包括用于接收可变长度码的指令。所述可变长度码是多个比特。所述逻辑还包括用于识别出在所述多个比特的开头处前导比特被连续地重复的次数的指令。所述前导比特被预定为I或O之一。所述逻辑还包括用于通过使用前导比特被重复的次数来在码字表中识别出码字的指令。


在附图中,相同的附图标记通常指代贯穿不同视图的相同部分。附图不一定是按比例的。在下列描述中,参照下列附图来描述本公开的方面,其中:
图1是根据本公开的一个方面的媒体检索系统的框 图2是根据本公开的一个方面的媒体解码系统的框 图3是根据本公开的一个方面的码字表;
图4是根据本公开的一个方面的码字表;
图5是根据本公开的一个方面的用于解码可变长度码的流程 图6是根据本公开的一个方面的用于在表中找到码字的流程 图7是根据本公开的一个方面的用于在表中找到码字的流程 图8是根据本公开的一个方面的用于解码可变长度码的流程图;以及 图9是根据本公开的一个方面的用于解码可变长度码的流程图。
具体实施例方式下列的详细描述参照了附图,所述附图通过说明的方式示出本公开的特定细节和方面。在这里使用词“示例性”是指“用作例子、实例、或说明”。在这里被描述为“示例性”的本公开或设计的任何方面不必被解释为相对于本公开或设计的其他方面是优选的或有利的。图1是根据本公开的一个方面的媒体检索系统的框图。媒体检索系统2包括源4和用户设备12。在本公开的一个方面中,源4包括媒体6,并且可以通过有线连接和/或无线地被连接到用户设备。在本公开的另一方面中,源4也可以是用户设备12的一部分。用户设备12包括用于显示媒体6的显示器16。在本公开的一个方面中,源4包括具有分辨率8的媒体6。源4可以是因特网上的网站、存储器源(例如存储器卡或硬盘驱动器)、用户设备(例如移动设备或膝上型计算机)、或者另一类型的源。在本公开的另一方面中,源4可以是用户设备12中的存储器。举例来说,源4可以是利用用户设备12上的照相机捕获的图像。媒体6可以是视频或图像。媒体6可以利用任何编码类型来编码。举例来说,媒体6可以利用JPEG、MPEG、H.264、或者某一其他类型的媒体编码类型来编码。媒体6具有分辨率8。分辨率8可以是媒体6的原生分辨率。举例来说,在本公开的一个方面中,分辨率8可以是具有800x600的分辨率的SVGA (超级视频图形阵列)。分辨率8可以是任何分辨率,包括但不限于QVGA、VGA、SVGA、XGA, WXGA、以及其他类型的分辨率。在本公开的一个方面中,用户设备12包括用于解码媒体6的解码单元14。用户设备12还包括具有分辨率18的显示器16。在本公开的一个方面中,用户设备12可以是包括解码单元的设备。举例来说,用户设备12可以是但不限于膝上型计算机、平板计算机、移动电话、照相机、或者包含解码单元的任何其他类型的设备。在本公开的一个方面中,只要用户设备12能够访问解码单元,用户设备12也可以是不具有解码单元的设备。另外,用户设备12可以能够访问媒体文件。举例来说,用户设备12可以被配置成通过因特网、连接到用户设备12的存储设备、无线地访问的设备、通过使用用户设备12上的照相机、和/或媒体6的某一其他合适源4来访问媒体文件。在本公开的一个方面中,解码单元14是进行编码器的反向操作的设备,其解除编码从而可以检索原始信息。解码单元14可以被配置成解码已被编码的数据的比特流。在本公开的一个方面中,已经使用霍夫曼编码技术对数据进行了编码。所述数据可以是媒体,例如图像文件。在本公开的一个方面中,用户设备12可以通过使用显示器16来显示媒体6。显示器16可以是监视器和/或任何其他类型的显示设备。显示器16具有分辨率18。在本公开的一个方面中,分辨率18可以是具有320x240的分辨率的QVGA (四分之一视频图形阵列)。然而,分辨率18可以是任何分辨率,包括但不限于QVGA、VGA、SVGA、XGA, WXGA、以及其他类型的分辨率。另外,用户设备12可以包括一个或多个存储器元件(例如存储器元件20)以用于存储将被用在实现如在这里所概述的与应用管理相关联的操作中的信息。在适当的情况下并且基于特定需要,这些设备还可以在任何合适的存储器元件(例如随机存取存储器(RAM)、只读存储器(ROM)、现场可编程门阵列(FPGA)、可擦可编程只读存储器(EPR0M)、电可擦可编程ROM (EEPROM)等等)、软件、硬件中或者在任何其他合适的部件、设备、元件或物体中保存信息。在这里所讨论的任何存储器或存储物品应当被解释为被包含在如在这里所使用的宽泛术语“存储器元件”之内。此外,在这里的用于解码可变长度码的操作可以由编码在一个或多个有形介质中的逻辑来实施,其可以包括非瞬时性介质(例如提供在专用集成电路(ASIC)中的嵌入式逻辑、数字信号处理器(DSP )指令、潜在地包括将由处理器或其他类似机器执行的目标码和源码的软件等等)。在这些实例的一些中,一个或多个存储器元件(例如存储器元件20)可以存储用于在这里所描述的操作的数据。这包括存储器元件能够存储被执行来实施在这里所描述的活动的软件、逻辑、代码、或处理器指令。另外,用户设备12可以包括处理单元22。处理单元22可以是处理器、多核处理器、单核处理器、微控制器、控制器电路、或者任何其他类型的处理设备。处理单元可以执行与所述数据相关联的任何类型的指令以实现在这里所详述的操作。在本公开的一个方面中,处理器可以把元件或物品(例如数据)从一个状态或事物变换成另一状态或事物。在另一例子中,可以利用固定逻辑或可编程逻辑(例如由处理器执行的软件/计算机指令)来实施在这里所概述的活动,并且在这里所标识出的元件可以是某种类型的可编程处理器、可编程数字逻辑(例如FPGA、EPROM、EEPR0M)、或者ASIC,其包括数字逻辑、软件、代码、电子指令、闪速存储器、光盘、CD-ROM、DVD ROM、磁卡或光卡、适合用于存储电子指令的其他类型的机器可读介质、或其任何合适的组合。图1中的媒体检索系统2的说明不意图暗示对于可以实施本公开的一个方面的方式的物理或体系结构限制。可以使用其他部件以作为所示出的部件的补充和/或替换。在本公开的一个方面中,一些部件可能是不必要的。此外,给出各个框以说明一些功能部件。当在本公开的一个方面中实施时,这些框中的一个或多个可以被组合和/或被划分成不同的框。举例来说,在本公开的一个方面中,源4可以位于用户设备12内。图2是根据本公开的一个方面的媒体解码系统的框图。媒体解码系统24包括源4和用户设备12。媒体解码系统24是可以解码媒体文件并且显示经解码的媒体文件的系统。在本公开的一个方面中,用户设备12包括解码单元14、显示器16、第一表38和第二表42。解码单元14可以包括解码模块26、逆量化单元44、离散余弦逆变换单元46、以及重组单元48。在本公开的一个方面中,解码单元14可以是熵解码器。熵解码器可以包括数据扩展方法,通过所述数据扩展方法来对先前编码的符号进行解码。在本公开的一个方面中,解码单元14可以解码使用霍夫曼编码器已被编码的数据。然而,可以对其他类型的编码器进行解码,例如算术编码器、Fibonacci编码器、以及其他编码器。在本公开的一个方面中,逆量化单元44可以被配置成基于二进制值来识别出数值。所述数值可以包括二进制值的基数10表示。在另一方面中,逆量化单元44可以把数值转换成其他数值,而不管所述数值的表示如何。举例来说,如果量化单元将一个数乘以3,则逆量化单元44可以将该数除以3。在本公开的一个方面中,离散余弦逆变换单元46可以对来自逆量化单元44的接收到的数值块执行离散余弦逆变换。接收到的数值块可以包括与8x8块相关联的YUV颜色空间信息的频率表示。离散余弦逆变换单元46可以是后处理的一部分。所述8x8块可以包括布置成行和列的像素,其中每行可以包括8个像素。每个像素可以包括YUV信息。所述YUV信息可以从存储器中被检索,并且在后处理期间被转换成RGB表示。在另一方面中,JPEG可以不限于YUV。举例来说,JPEG可以被编码在RGB颜色模型中。在本公开的一个方面中,当媒体6是图像时,所述图像被划分成8x8像素块。在接收到来自离散余弦逆变换单元46的信息之后,利用在其间执行的可能的其他步骤,重组框整理8x8块以形成图像。所述图像最终被转发到显示器16,以用于例如在监视器上显示该图像。对于解码模块26、逆量化单元44、离散余弦逆变换单元46、以及重组单元48的说明不意图暗示对于可以实施本公开的一个方面的方式的物理或体系结构限制。可以使用其他部件以作为所示出的部件的补充和/或替换。举例来说,可能有在解码的过程中使用的、未示出的部件。举例来说,颜色变换单元、上采样单元、后处理单元、比特解包器、逆Z字形单元、以及其他单元没有被示出,但是可以结合本公开的一个方面来使用。在本公开的一个方面中,解码模块26可以接收已经利用一种类型的编码器(例如霍夫曼编码器)进行了编码的比特流。解码模块26可以包括可变长度码28和阈值36。可变长度码28可以是来自源4的比特流的一部分。在可变长度码28之前和之后可以有其他比特。在本公开的一个方面中,可变长度码28包括多个比特30。多个比特30还可以包括比特串34和前导比特32。前导比特32可以是被预定为处于可变长度码28的开头的该类型的比特。举例来说,前导比特32可以是“I”。解码模块26可以被配置成对在可变长度码28的开头处的前导比特的数目进行计数。解码模块26还可以被配置成把前导比特的数目与阈值36进行比较。基于所述比较,解码模块26可以访问第一表38或第二表42。在本公开的一个方面中,第一表38和第二表42包括码字,例如码字40。码字40可以与可变长度码28相关联。
解码模块26可以被实施为软件或硬件。当实施为软件时,解码模块26可以使用计算机代码来识别码字以及访问第一表38和第二表42。具有伪码形式的代码的例子可以如下显现:
权利要求
1.一种用于解码可变长度码的方法,所述方法包括: 接收可变长度码,其中所述可变长度码是多个比特; 识别出在所述多个比特的开头处前导比特被连续地重复的次数,其中所述前导比特被预定为I或O之一;以及 通过使用所述前导比特被重复的所述次数来在码字表中识别出码字。
2.根据权利要求1所述的方法,其中,识别出码字的步骤包括: 确定所述数目是否小于阈值;以及 响应于确定所述数目小于阈值,在第一码字表中识别出码字。
3.根据权利要求2所述的方法,还包括: 响应于确定所述数目等于或大于阈值,在第二码字表中识别出码字。
4.根据权利要求2所述的方法,其中,在所述第一表中识别出码字的步骤包括: 使用所述数目来识别出所述第一表的第一轴上的位置; 使用所述多个比特中的比特串来识别出所述第一表的第二轴上的位置;以及 使用第一轴上的所述位置和第二轴上的所述位置来识别出码字。
5.根据权利要求2所述的方法,其中,所述阈值是9,并且其中所述前导比特是I。
6.根据权利要求4所述的方法,其中,任何前导比特之后都跟随有O比特,并且其中所述比特串是跟随在所述O比特之后的3个比特。
7.根据权利要求3所述的方法,其中,在所述第二表中识别出码字的步骤包括: 识别出所述多个比特中的比特串; 将所述比特串匹配到所述第二表中的条目;以及 识别出与所述条目相关联的码字。
8.根据权利要求7所述的方法,其中,所述比特串是在所述多个比特的开头处的9个比特之后的7个比特。
9.根据权利要求1所述的方法,其中,所述可变长度码来自图像文件。
10.根据权利要求1所述的方法,其中,在所述表中识别出码字的步骤包括: 使用所述数目来识别出所述表的第一轴上的位置; 使用所述多个比特中的比特串来识别出所述表的第二轴上的位置;以及 使用第一轴上的所述位置和第二轴上的所述位置来识别出码字。
11.根据权利要求10所述的方法,其中,任何前导比特之后都跟随有O比特,并且其中所述比特串是跟随在所述O比特之后的任何比特。
12.一种用于解码可变长度码的系统,所述系统包括: 存储器单元; 连接到所述存储器单元的处理单元; 解码模块,其被配置成:接收可变长度码,其中所述可变长度码是多个比特;识别出在所述多个比特的开头处前导比特被连续地重复的次数,其中所述前导比特被预定为I或O之一;以及通过使用所述前导比特被重复的所述次数来在码字表中识别出码字。
13.根据权利要求12所述的系统,其中,所述解码模块被配置成识别出码字包括所述解码模块被配置成: 确定所述数目是否小于阈值;以及响应于确定所述数目小于阈值,在第一码字表中识别出码字。
14.根据权利要求13所述的系统,其中,所述解码模块还被配置成: 响应于确定所述数目等于或大于阈值,在第二码字表中识别出码字。
15.根据权利要求13所述的系统,其中,在第一表中识别出码字的过程中,所述解码模块还被配置成: 使用所述数目来识别出所述第一表的第一轴上的位置; 使用所述多个比特中的比特串来识别出所述第一表的第二轴上的位置;以及 使用第一轴上的所述位置和第二轴上的所述位置来识别出码字。
16.根据权利要求13所述的系统,其中,所述阈值是9,并且其中所述前导比特是I。
17.根据权利要求14所述的系统,其中,在所述第二表中识别出码字的过程中,所述解码模块还被配置成: 识别出所述多个比特中的比特串; 将所述比特串匹配到所述第二表中的条目;以及 识别出与所述条目相关联的码字。
18.—种包括逻辑的计算机程序产品,所述逻辑被编码在有形介质上以用于解码可变长度码,所述逻辑包括用于下述的指令: 接收可变长度码,其中所述可变长度码是多个比特; 识别出在所述多个比特的开头处前导比特被连续地重复的次数,其中所述前导比特被预定为I或O之一;以及 通过使用所述前导比特被重复的所述次数来在码字表中识别出码字。
19.根据权利要求18所述的计算机程序产品,还包括用于下述的指令: 确定所述数目是否小于阈值;以及 响应于确定所述数目小于阈值,在第一码字表中识别出码字。
20.根据权利要求19所述的计算机程序产品,还包括用于下述的指令: 响应于确定所述数目等于或大于阈值,在第二码字表中识别出码字。
全文摘要
本发明公开了用于可变长度码的高效解码的方法。一种用于解码可变长度码的方法、系统和计算机程序产品被公开。解码模块被配置成接收可变长度码。所述可变长度码是多个比特。解码模块还被配置成识别出在所述多个比特的开头处前导比特被连续地重复的次数。前导比特被预定为1或0之一。解码模块还被配置成通过使用前导比特被重复的次数来在码字表中识别出码字。
文档编号H04N7/30GK103139566SQ20121050252
公开日2013年6月5日 申请日期2012年11月30日 优先权日2011年11月30日
发明者M.泽格特罗普 申请人:英特尔移动通信有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1