本文中所揭示的标的物主张2007年8月17日申请的标题为“编码和/或解码数字内容(ENCODING AND/OR DECODING DIGITAL CONTENT)”的美国序列号11/840,880的优先权,其全部以引用的方式并入本文中。
具体实施方式
在以下详细描述中,陈述众多特定细节以提供对所主张标的物的彻底理解。然而,所属领域的技术人员将理解,可在没有这些特定细节的情况下实践所主张标的物。在其它例子中,未详细描述所属领域的技术人员知晓的方法、程序、组件和/或电路,以便不混淆所主张标的物。
在整个此说明书中对“一个实施例”的参考可指结合特定实施例所描述的特定特征、结构或特性可包括在所主张标的物的至少一个实施例中。因而,在整个此说明书中在各处出现的短语“在一个实施例中”和/或“一实施例”不一定意欲指代同一实施例或所描述的任一特定实施例。此外,应理解,所描述的特定特征、结构和/或特性可以各种方式组合于一个或一个以上实施例中。当然,一般来说,这些和其它问题可随特定上下文而变化。因此,这些术语的描述和使用的特定上下文可提供关于针对所述特定上下文得出的结论的有用指导。
同样,如本文所使用的术语“和”、“或”以及“和/或”可包括多种意义,所述意义将至少部分视使用术语的上下文而定。通常,如果用于关联一列表(例如,A、B和/或C),则“和/或”既定指A、B或C以及A、B和C。但是,应注意此仅为一说明性实例且所主张的标的物不限于此实例。
除非另外特别规定,否则在整个此说明书中,例如“处理”、“计算”、“推算”、“选择”、“形成”、“启用”、“禁止”、“识别”、“起始”、“查询”、“获得”、“代管(hosting)”、“保持”、“表示”、“修改”、“接收”、“发射”、“存储”、“验证”、“授权”、“确定”和/或其类似物的术语指代可由例如计算机和/或其它计算平台的系统执行的动作和/或过程,所述系统能够操纵和/或变换可表示为系统的处理器、存储器、寄存器和/或其它信息存储、发射、接收和/或显示装置内的电子、磁和/或其它物理量的数据。因此,计算平台指代包括具有处理和/或存储呈信号或电子数据的形式的数据的能力的系统或装置。因而,在此上下文中,计算平台可包含硬件、软件、固件和/或其任一组合。此外,除非另外特别规定,否则如本文参看流程图或以其它方式描述的过程还可全部或部分通过计算平台来执行和/或控制。
所主张的标的物至少部分与数据压缩/解压缩方法或技术(例如,无损、大致无损、和/或相对无损数据压缩/解压缩方法或技术)的实施例以及可涉及方法或技术实施例的系统或设备的实施例有关。举例来说,在某些情况中,可需要实现可与无损压缩过程技术水平相当的音频数据压缩比。另外,在某些情况下,可需要达到所述压缩比同时还减少或简化压缩和/或解压缩方法的计算复杂性。举例来说,在便携式装置中,电池寿命可为相关的考虑因素,使得可需要实现与其它方法类似的压缩但采用较少处理功率的压缩方案以有效地延长装置的电池寿命和/或改进装置的一个或一个以上其它性能特性,同时还满意地解决可与装置相关联的带宽约束。作为额外实例,还可需要较低的计算复杂性以用于减少与传输和接收经压缩的音频数据相关联的等待时间。在此上下文中,术语音频数据指代以数字信号形式表示的音频信息。当然,前述仅为结合压缩和/或解压缩过程可能需要的特征的说明性实例;然而,所主张的标的物不限于此方面。
图1描绘例如用以编码音频数据的系统的编码系统的实施例100的示意图,但是所主张的标的物在范围上不一定限于编码音频数据。举例来说,可编码图像数据、视频数据和其它形式的数字内容。在此上下文中,术语图像数据和视频数据意指以数字信号形式表示的图像或视频信息。参看图1,编码系统实施例100可包含可操作以接收一个或一个以上连续脉码调制(PCM)的音频样本(例如,一个或一个以上数字信号样本)的压缩方案。如本文中所使用,“音频样本”或“数字信号样本”可指对应于音频数据的一个或一个以上方面的数字信号和/或值。举例来说,音频样本可包含音频信号(例如数字信号样本)的集合或序列的一部分,所述部分具有特定大小,持续特定时间量,具有特定频率范围或具有一个或一个以上其它特定特性。但是,当然,这些仅为关于音频样本的实例且所主张的标的物不限于此方面。举例来说,在此特定实施例中,音频样本可经分组成一个或一个以上数据块,例如块110和/或112。如本文所使用,“块”可指被组织成群组的一个或一个以上音频样本或数字信号样本。举例来说,一个或一个以上音频信号样本可至少部分基于所述一个或一个以上音频信号的一个或一个以上特性而被组织成块。但是,这些又仅为关于音频样本的实例,而所主张的标的物则不限于此方面。
仅作为一个实例,块110和/或112可包含一个或一个以上连续音频样本,例如十一个连续音频样本,其中每一音频样本在被压缩之前可(例如)具有特定数目个位,但是,当然所主张的标的物在范围上不限于此方面。虽然依据十一个音频样本描述此实施例,但可替代地使用较小和/或较大的块长度。同样,虽然对于此特定实施例,采用长度为16位的音频样本,但是同样又可采用较大数目的位或较小数目的位。此外,在一些情况下,音频块110和/或112可包含偶数个样本。或者,在一些情况下,音频块110和/或112可包含奇数个样本。因此,所主张的标的物不应限于任何特定数目个音频样本。当然,在一些情况下,使用较小或较大的样本块可以若干方式中的任一者来影响压缩性能。举例来说,在一些情况下,较小的块长度可导致压缩上的减少。或者,在一些情况下,较大的块长度可导致等待时间或计算复杂性增加。无论如何,这些仅为关于块长度的实例以阐明所主张的标的物不应限于所提供的实例或任一特定块长度。
再次参看图1,可将PCM音频样本值表示为经组织成一个或一个以上群组(例如块110和/或112)的一系列带正负号的整数值。至少部分视特定实施例而定,整数值可表示音频样本的多种特性中的任一者。举例来说且不限制地,所述值可表示在给定时间点处的信号样本(在此实例中为音频信号)的振幅。因而,不限制地,在一些情况下,可将块110和/或112中的值表示为经分组成11个连续音频样本的块的一系列带正负号的整数值。另外,在一些情况下,可将块110和/或112中的值表示为(例如)经分组成连续音频样本的一个或一个以上块的一系列带正负号或不带正负号的定点数或浮点数。在此实施例中,编码系统实施例100可操作以将块110和/或112的样本分类成升序,使得经分类的块中的逐次音频样本具有高于先前音频样本的数值。举例来说,编码系统实施例100可包含分类模块113。在一些情况下,分类模块113可操作以对PCM音频样本的块110和/或112进行分类,使得每一块含有音频样本值114的经分类序列。尽管描述为升序分类,但是音频样本114的经分类序列可替代地包含以不同方式布置的分类,例如降序分类。如本文所使用,术语“分类”可指至少部分基于与数据相关联的一个或一个以上方面来连续地布置数据。举例来说,对一个或一个以上音频样本进行分类可包含至少部分基于与个别音频样本相关联的数值来布置所述一个或一个以上音频样本,其中数值表示音频样本的可在样本中变化的特性(例如且不限于信号振幅)。当然,应注意这些仅为关于对音频值进行分类的说明性实例且所主张的标的物不限于此方面。
在一实施例中,分类过程还可产生排列值(图1中描绘为值116),其中所述排列值可包含可用于将块110和/或112中的PCM音频数字信号样本值恢复到样本值被分类前的次序的信息。如本文所使用,“排列值”可指可至少部分指示经分类样本值的集合在样本值被分类之前的次序的信息。因而,在一些情况下,“排列值”可用于将经分类的音频样本值的集合返回到样本值被分类前的次序。在一实施例中,排列值116可包含可与经分类数据的块相关联且可提供信息以使得可将经分类数据的块恢复到具有在被分类之前存在的次序的符号。通常,但不一定,经设计以有效复原分类的重新排序过程可为更一般的解码过程的部分,如下文更全面地论述。举例来说,在不失一般性的情况下,在一实施例中,解码过程可至少部分采用排列值以将经分类的样本值恢复到其在被分类之前的次序,图1中说明为对应于块110和/或112。但是,应注意这些仅为关于排列值的说明性实例且所主张的标的物不限于此方面。
在一实施例中,可与对PCM音频数字信号样本值进行分类至少部分同时期和/或同时地计算排列值116。举例来说,假定未经分类的样本值(与块110和/或112中的经分类音频数字信号样本值相关联)可表示为如下:
{V0,V1,V2,...Vn}
在分类过程的一个实施例中,对于特定块中的值的集合,可将第一值V0移动到n个位置中的任一者,可将第二值V1移动到n-1个位置中的任一者等等。此导致总共n!(n的阶乘)个可能排列值,每一排列值对应于值的块的所有可能唯一次序中的特定唯一次序。
多种方式潜在可用于编码排列值。所主张的标的物在范围上不限于任何特定方法。而是,可采用多种方法中的任一者且下文提供若干实例。可通过使用以ceil(log2(p))数目的位进行的常规二进制译码来编码移动而编码排列值,其中p为对于特定移动的可能值的数目。在音频样本值的块包含11个音频样本值的实施例中,此方法产生可以大致4+4+4+3+3+3+3+2+2+1个位或29个位编码的排列值。作为一替代方案,可需要使用不同方案来编码排列以产生更紧凑的结果。举例来说,可需要以如log2(n)一样少的位编码排列,其中n对应于音频样本值的块中的值的数目。举例来说,如果n等于11,则在一些情况下,可需要以如25.25一样少的位来编码排列值。但是,当然,这些仅为关于编码排列值的说明性实例且所主张的标的物决不限于此特定实例。
用于编码排列值的另一可能技术可涉及阶乘价(factoradics)的使用。在此实施例中,如下文更详细地描述,如果对n个音频样本值的块进行分类,则在一个特定实施例中,个别值的移动可被编号为M0到Mn。在一实例中,采用块长度11,个别移动可被编号为M0到M10。举例来说,在此实施例中,可根据下式来编码排列值:
在此实例中,排列值包含个别移动乘以逐次变大的阶乘的和。举例来说,假定块110包括11个值,在一些情况下,与经分类的样本114相关联的排列值116可以大致26个位来编码。但是,此又仅为关于排列值的说明性实例且所主张的标的物不限于此方面。
在采用插入分类过程的实施例中,如下文所描述,编码排列值可与分类过程同时发生。但是,当然,所主张的标的物在范围上不限于采用插入分类过程。当然,可采用任一分类过程。然而,在(例如)如上文提出的采用插入分类的实施例中,分类模块113可处理音频样本值的块(例如块110)且与排列编码116同时产生经分类的样本值(例如,经分类的样本值114)的集合。在不失一般性的情况下,以下出于说明的目的论述一特定实例。
图2A为描绘根据一实施例的用于未经分类的音频样本200的集合的分类过程的示意图。在此实施例中,分类过程又包含插入分类。举例来说,插入分类可通过从未经分类的值中取得逐次值并确定将特定值插入于经分类样本值的集合中的何处而建立经分类值的集合。在此实施例中,经分类样本值的集合最初为空,使得如果使用基于零的索引则在位置0处插入第一值。在此实施例中,可在位置0或位置1处插入来自未经分类值的集合的下一值。另外,可在位置0、位置1或位置2处插入来自未经分类值的集合的第三值。分类过程可继续直到来自未经分类值的集合的所有值被插入一位置中为止。在此实施例中,将在一值待插入的点的任一侧的值向左或向右移位以为后续值让出空间。此外,至少部分选择插入特定值的点,使得所述特定值在所述特定值待插入的点的任一侧的值之间。因此,输出列表可包含值的经分类的集合。在此实施例中,排列值可对应于值被插入的一系列位置。举例来说,对于N个音频样本值的集合,存在N!个不同或唯一的插入位置组合。
再次参看图2A,在此实施例中,分类过程开始于未经分类音频样本的集合中的第一值201。在此实例中,分类过程产生用于第一值201的0插入位置。分类过程进行到下一值202且确定所述值是大于还是小于第一值201。在此实例中,第二值202大于第一值201,因此将第二值202插入在第一值201之后且其被指派有插入位置1。分类过程通过未经分类的音频样本值200的后续值进行,且对于一值,至少部分基于所述值的比较来确定用于所述值的插入位置或定位。返回到我们的实例,过程进行第三值203且确定一插入定位。此处,例如,第三值203大于第一值201,但小于第二值202。因此,将第三值203插入在第一值201之后且在第二值202之前。当然,此又仅为一实例且所主张的标的物在范围上决不限于此特定实例。分类过程进一步指派用于第三值203的插入位置1。再次参考我们的实例,分类过程进行到第四值204。此值大于第一值201、第二值202和第三值203。因此,分类过程将第四值204插入在第二值202后且将插入位置3指派给其。最后,在我们的实例中,分类过程进行到第五值205。此值小于第一值201且分类过程将第五值205插入在第一值201之前。还将插入值0指派给第五值205。在此实施例中,分类过程现已产生音频样本值210的经分类的集合以及排列值212,在一实施例中,排列值212包含插入值的集合。但是,当然,再次应注意这些仅为关于分类过程的说明性实例且所主张的标的物不限于此方面。
图2B为描绘用于将经分类的音频样本值恢复到音频样本值被分类之前的次序(此处称为初始次序)的未分类或重新排序过程的示意图。现参看图2B,重新排序过程至少部分使用排列值212以将经分类的音频样本值200恢复到初始次序。在一实施例中,重新排序过程可至少部分通过颠倒由排列值212表示的插入值的次序而将音频样本值200恢复到初始次序。此产生移除位置的列表220,其可用于从经分类的音频样本值210中移除音频样本值。当移除一值时,移动左边或右边的值以缩短差距。在图2B中所示的实例中,第一移除位置为位置0。因此,重新排序过程从线221中移除在0位置处的值且将那个值置放于经恢复列表中。移除点的列表220中的下一移除位置为3。因此,重新排序过程从线222中移除在3位置处的值且将那个值置放于经恢复列表220的下一位置中。下一移除位置为1,此导致重新排序过程从线223中移除位置1中的值且将那个值置放于经恢复列表220的下一位置中。下一移除点再次为1,且因此重新排序过程从线224的位置1中移除值且将其置放于经恢复列表220的下一位置中。最终,最后移除位置为0,且重新排序过程将来自位置0的剩余值置放于经恢复列表220中的下一位置中。但是,应注意到这些仅为关于重新排序过程的说明性实例,且所主张的标的物不应限于此。
在此特定实施例中,可通过执行一个或一个以上运算以解码排列值来确定移除位置。举例来说,如果使用阶乘价编码排列值,则可通过使排列值除以逐次变小的阶乘来确定移除位置。在经分类的数字信号样本值的集合包括n个值的情况下,可通过使排列值除以n!来确定第一移除位置。可通过使第一计算的余数除以n-1!来确定第二移除位置。同样,可通过使来自先前计算的余数除以逐次变小的阶乘来确定后续移除位置直到确定所有移除位置为止。或者,在一实施例中,可使用乘法过程来取代除法。举例来说,排列值的缩放近似值可乘以1/N!。接着可使此值右移以确定第一移除点。然而,在一些情况下,归因于舍入误差,此过程可能产生比正确值大一的移除点值。可通过使所确定的移除点值乘以适当阶乘值(例如,对于第一移除点为N!),并验证乘积不大于排列值来检测此类型的误差。如果乘积大于排列值,则使所确定的移除点值减一而产生针对特定移除点的正确值。类似乘法和验证过程可同样用于确定后续移除点。对于更特定的实例,在于经分类的数字信号样本值的集合中存在11个值的情况下,可通过使排列值除以11!来确定第一移除位置。可通过使来自第一计算的余数除以11-1!来确定第二移除位置,如此类推直到确定所有移除位置为止。但是,当然,应注意这些仅为关于重新排序过程的说明性实例且所主张的标的物不限于此方面。
再次返回到图1,编码系统100可进一步包括差模块118。差模块118可包含能够至少部分对经分类的值114进行操作以产生或计算表示经分类值114集合的邻近值之间的差的残差或增量(delta)集合的一个或一个以上过程。举例来说,编码系统100可确定序列的值(此处称为初始值),所有其它值被确定为与所述序列的值相关。此初始值可为经分类值的块或序列中的值中的任一者,例如序列中的第一值、序列中的最后值或序列中的中间值。在此实例中,差模块118接着可确定或计算初始值与邻近值之间的差以产生对应于邻近值的残差值。差模块118接着可确定或计算邻近值与下一邻近值之间的差以产生对应于下一邻近值的残差值。举例来说,初始值可包含中间值且差模块118可计算初始值与初始值左边的第一值之间的差。差模块接着可计算在初始值左边的第一值与其左边的下一邻近值之间的差。同样,差模块118可类似地计算初始值右边的逐次值之间的差。此过程可继续,直到存在对应于初始值左边和右边的每一值的残差值为止。在一特定实施例中,可通过使用值已被分类或排序以使得其的值增加或减少的知识将残差值表示为正值。因为初始值可具有正值或负值,所以可能需要编码表示初始值的正负号的位值。举例来说,在其中将奇数个值的中间值用作初始值的实施例中,可通过残差值所对应的音频值与初始值的相对位置来说明残差值是正还是负。举例来说,在升序分类中,表示初始值左边的值的残差将已知为具有低于初始值的值,使得将不需要编码所计算增量的负值,因为相对位置传达与残差值相关联的正值或负值。但是,在一些情况下,可能需要提供指示初始值自身是正值还是负值的机制。
注意,出于压缩的目的,可存在应用修正型离散余弦变换(MDCT)或类似过程的一些优点。图5为根据一个实施例的将音频样本值编码成两个或两个以上子带并恢复来自经编码的子带的音频样本值的示意图。在此实施例中,在上文参看图1和图2A所论述的分类过程之前的音频样本值的块可被分割成一个或一个以上相等或不相等宽度的频率子带。举例来说,编码系统100可进一步包含可逆变换模块500。在此实施例中,可通过可逆变换模块500对音频样本值操作以产生两个或两个以上子带。在图5中所描绘的实例中,将音频样本值分割成编号为0到7的8个子带,但是,如上文所论述,可使用其它数目的子带且所主张的标的物因此不限于所提供的实例。举例来说,编码系统可将样本分割成任何数目的子带。虽然实例可包括4、8、16或32,但是当然数目可为奇数或偶数且无需为二的幂。
在一个实施例中,可逆变换模块500可包含下文更详细描述的整数可逆修正型离散余弦变换(MDCT)。对于其它实例,可逆变换模块500可包含小波变换、扩展重叠变换和/或分层重叠变换。但是,应注意,这些仅为关于编码系统的说明性实例且所主张的标的物不限于此方面。
举例来说,修正型离散余弦变换(MDCT)假定周期输入信号样本实现所要结果,例如一个或一个以上最佳结果。然而,在一实施例中,样本值(例如,PCM音频样本值)不一定相对于MDCT输入周期为周期性的。因而,在一实施例中,如下文更详细地描述,可需要至少部分包括窗化函数,以处理样本值的块之间的边缘效应。但是,再次应注意这些仅为关于编码系统的说明性实例且所主张的标的物不限于此方面。
还需要所述压缩过程是完全可逆或所谓的整数可逆的。在一些情况下,整数可逆性可为(例如)用于实施无损编解码器的要求。如果变换或过程为整数可逆,则可归因于采用有限长度(例如32位)的数字值的截断效应而发生的误差可被复原,这是所要特征。MDCT的一个优点为其使用整数可逆的一系列矩阵来实施的能力,但是所主张的标的物在范围上不限于此方面。可满意地采用许多其它变换。然而,因为在此处可在一实施例中采用下文更详细地描述的修正型MDCT,所以针对此特定实施例说明一方法,其中将待实施为压缩/解压缩过程的部分的运算分解为较简单的运算,使得执行每简单运算一个乘-加,下文更详细地描述。因而,对于此特定实施例,压缩/解压缩的实施方案包含每一运算为整数可逆的一系列运算。
MDCT的此特定实施可涉及以旋转形式实施各种运算。然而,例如可(例如)通过旋转矩阵实施的旋转运算可以适于经由整数运算实施的方式而分解成较简单矩阵,借此保留MDCT的实施的整数可逆性。如上文所阐释,可需要整数可逆性以用于结合无损编解码器的实施来解码。在此实例中,这些矩阵可用于对MDCT实施有效因式分解,例如将MDCT因式分解成一窗化运算和一IV型DCT。但是,再次应注意此仅为关于可逆变换的说明性实例且所主张的标的物不限于此方面。
在一实施例中,可(例如)根据如下关系[1]将旋转矩阵分解成三个矩阵的乘积:
b≡sinθ
在不失一般性的情况下,对于上述方程式,-π≤θ<π。如上文所提出,如果我们引入以下标记法,则我们可界定一系列整数可逆运算以实施旋转。举例来说,在以下标记法中,Q(x)指代量化运算子。一个实例可包含下取整数运算子(floor operator),其在一些情况下可等于不超过输入值的最大整数。举其它实例,在以下标记法中,x0和x1为整数。
因此,使用上述标记法,可根据如下关系[2]实施关系[1]的旋转:
x0+=Q(aθx1)
x1+=Q(bθx0)
x0+=Q(aθx1)
同样,使用此相同标记法,可根据如下关系[3]颠倒关系[2]的旋转的旋转:
x0-=Q(aθx1)
x1-=Q(bθx0)
x0-=Q(aθx1)
举例来说,上述关系[3]的第一运算复原关系[2]的第三运算的效应,而与由于与数字计算相关联的有限长度而引入的误差等无关。
排列和求反类似地为整数可逆的,因为这些运算可通过重新命名变量和执行整数求反来完成。因而,如所需要的,可表示为经因式化成旋转、排列和求反的矩阵的运算是整数可逆的。
对于此实施例,至少部分采用MDCT,因为DCT为一周期函数,而样本值的块为非周期性的,如先前所提出。因而,需要将窗函数应用于MDCT以在块之间平滑以解决周期性的此缺乏。同样,一种窗化的方法涉及采用旋转运算。采用所述运算的一个优点在于,如上文所描述,所述运算可被分解成一系列整数可逆运算,如先前所描述。
因而,窗化可包含涉及根据如下关系[4]的在块t-1的第二半与块t的第一半之间的旋转的运算,其中t指代当前块,且其中N为子带的数目:
因此,可(例如)将窗化的MDCT界定如下:
m=0,…,N-1
Xt(m)=对于块t的副频带m的变换值
ω(k)=窗化函数
x(i)=块化之前的第i个输入样本
xt(k)=x(t·N+k)=第k个输入;块t的样本;50%重叠
因此,以下关系将MDCT的此特定实施例描述为DCT-IV(先于使用关系[4]的旋转所实施的窗化运算),如下:
k=0,…,N
作为一简化实例,使用上文直接所示的旋转和N=4可得到以下:
因而,在此实例中,为实施此平滑方法,可需要保留先前块的一些样本值,如由下标t-1所指示。
为实施整数可逆DCT-IV,注意可应用Wang因式分解以获得将N点DCT-IV矩阵([CN IV])分解成稀疏矩阵的乘积,对于稀疏矩阵来说,整数可逆性是可能的且计算上并不难以实施。如本文中所使用,“稀疏矩阵”可包含大多数矩阵项等于0的任何矩阵。但是,应注意这些仅为关于编码数字样本的说明性实例且所主张的标的物不限于此方面。
返回到图1的编码系统,编码系统100可进一步包含莱斯(Rice)译码模块120。在一实施例中,可(例如)使用莱斯码或自适应莱斯码来编码包含增量值而非初始样本值的特定数据块。举例来说,莱斯码可包含在一些情况下可提供所要数据压缩的参数化运行长度译码方案。举例来说,如果数据集合中的小值的数目超过或大大超过数据集合中的大值的数目,则莱斯码可提供所要压缩。可影响莱斯译码方案的效率的一个方面为莱斯译码参数k(莱斯K)的选择。莱斯译码操作可以用于非负整数N的参数K来执行,如下:如果(例如)S对应于N的K最低有效位,且P对应于N除以2K的整数商(朝零四舍五入),则可(例如)通过编码一行中的P个零随后为一个一而将P编码为一元码,且S可经编码为长度为K的二进制码。举例来说,如果选择无效K值,则可能以对于经编码的值为大体上大的编码值结束。然而,如果选择有效K值,则经编码的数据应小于经编码的值或比经编码的值压缩得更多。在一实施例中,由编码系统100用以编码初始值和/或残差值的K值将被提供给解码系统(下文参看图5所描述)以用于在解码经编码的数据流中使用。
在至少一个实施例中,所要K值可能不会从音频样本值的一块到音频样本值的另一块有很大变化。举例来说,如果编码系统实施例100正对对应于音乐的音频样本值操作,则K值通常可在几个值中的一者之间变化。因此,在一些情况下,实际上可不必提供K值(又称为莱斯译码值)以作为经编码的信号样本值的部分。举例来说,包括莱斯K增量值以及经编码的信号样本可为有利的,其中增量表示当前K值与用于经编码音频的先前块的K值之间的差。但是,此又仅为关于编码音频数据的说明性实例且所主张的标的物不限于此方面。
在另一可能实施例中,可至少部分基于一个或一个以上残差值的量值来确定所要K值。举例来说,对于具有最大值xmax的样本值的块,在一些情况下,可根据以下关系来限制所要K值:
在一些情况下,此可导致所要K值限于N、N+1、N+2或N+3。在此实施例中,可不必应用有界莱斯码,因为在多数情况下,预期经编码的残差值实现压缩。同样,如果K*表示经选择以执行莱斯译码的K值,则在一些情况下,可需要以K*+1译码选定的残差。举例来说,在上文所描述的将块的中间值用作初始值的实施例中,在块末端处的残差的变化通常使得如果使用K*+1来对那些值进行莱斯译码则可能存在有益结果,但是所主张的标的物在范围上不限于此方面。此外,对于一些实施例,可需要比较子带的莱斯编码值与已被二进制编码的那些值以确定二进制译码是否提供较佳结果。作为一实例,此可(例如)发生在涉及音频信号样本的情况中,其中静默被译码。在此实施例中,音频样本值的块的第一子带可以上文指示的K值来尝试性编码。产生较佳压缩的K值可用于编码音频样本值的已被变换成多个子带的特定块的额外子带。但是,应注意这些仅为关于编码音频样本的说明性实例且所主张的标的物不限于此方面。
图3为根据一个实施例的经压缩的数据流300的示意图。现参看图3,个别数据块(例如块1)可包含多种信息。举例来说,块1可包括排列值、莱斯k增量值,和残差值的集合以及对应于与音频样本的初始值相关联的正负号的正负号位。但是,应注意此仅为关于经压缩的数据流的说明性实例且所主张的标的物不限于此方面。
图4为根据一个实施例的解码系统400的示意图。现参看图4,解码系统实施例400可接收经编码和/或经压缩的数据的块。举例来说,解码系统实施例400可接收经编码的数据,例如参看图3所描述的经压缩的数据块中的一者。在一实施例中,解码经编码的数据块实质上可包含上文描述的编码方法的实施例的逆向,但是所主张的标的物不限于此方面。举例来说,解码系统实施例400可接收经编码的数据的块,其中经编码的数据的块包括排列值、经编码的残差值的集合、莱斯k增量和/或对应于初始值的正负号的正负号位。在一实施例中,解码系统实施例400可将莱斯k增量添加到与经编码的数据的先前块相关联的先前莱斯K以确定与经编码的数据的当前块相关联的莱斯K值。解码系统400可使用所确定的莱斯K值以例如使用莱斯解码模块420来解码经编码残差值的集合。然而,应注意,此仅为关于解码数字值的说明性实例且所主张的标的物不限于此实例。
解码系统400可进一步包含联合模块430。在一实施例中,联合模块430可重新建构经分类的样本。举例来说,联合模块430可以初始值开始。如上文所论述,初始值可对应于值的经分类集合中的第一值、值的经分类集合中的最后值或值的经分类集合中的中间值。在编码系统采用升序分类的实施例中,初始值对应于经分类的值的集合中的最小值。在此实例中,联合模块430将依次添加逐次残差值以重新建构以升序的经分类的样本。在另一实施例中,初始值可对应于值的经分类集合中的中心值。在此实施例中,联合模块430可添加或减去逐次残差值(视其相对于初始值的位置而定)以重新建构样本值。在此实施例中,联合模块430可产生样本值的经分类集合432。但是,应注意这些仅为关于重新建构经分类的值的说明性实例且所主张的标的物不限于此方面。
在一实施例中,解码系统400可进一步包含重新排序模块440。重新排序模块440可至少部分使用所接收的排列值以(例如)通过使用未分类方法来将样本的经分类集合432恢复到其初始次序或在被分类之前的次序。举例来说,重新排序模块440可采用例如上文参看图2B所描述的方案的未分类方案。当然,应注意此仅为关于解码值的说明性实例且所主张的标的物不限于此方面。
在一实施例中,可至少部分通过采用阶乘价来表示排列值。在此实施例中,可至少部分因式化排列值以产生上文参看图2B所论述的移除位置的列表。在一个实施例中,通过将值除以逐次变小的阶乘以获得商和余数来因式化排列值。举例来说,使用为11的样本块大小,经编码的排列值首先除以10!。在此实施例中,可通过重新排序模块440将商视为第10个移除位置。解码系统实施例400现可将余数除以9!。可通过重新排序模块440将所得商视为第9个移除位置。解码系统实施例400同样可将来自此运算的余数除以8!,以确定第8个移除位置和用于在确定第7个移除位置中使用的余数。解码系统实施例400可继续将来自先前运算的余数与逐次变小的阶乘相除以确定经分类值的集合的移除位置。重新排序模块430接着可使用移除位置的集合(如上文所描述)以重新建构值的集合的初始次序。但是,再次应注意此仅为关于解码值的说明性实例且所主张的标的物不限于此方面。
再次参看图5,在此实例中,可逆变换模块500可基于所接收的PCM音频样本产生表示不同频率子带的8个单独数据块。在此实施例中,频率子带数据的块可各自包括11个值,但是,当然所主张的标的物不限于这些实例。在一些情况下,表示音乐的音频值可在低频中包括比在高频中多的能量。如图5中所示,对应于高频范围的较高编号的子带可包括比对应于较低频范围的较低编号频率子带小的值。在这些情况下,可使用比较低频率子带少的位来编码较高频率子带。然而,应注意,在一些情况下,可能产生大于输入值的输出值。举例来说,在一些情况下,在由MDCT处理后的16位PCM输入样本值可产生多达19位的输出值。但是,当然应注意此仅为关于编码音频值的说明性实例且所主张的标的物不限于此方面。
在此实施例中,可单独地编码由可逆变换模块500产生的子带,例如上文关于编码系统100所描述。举例来说,可如上文所描述不考虑其它子带使用压缩过程的实施例(例如,上文描述的那些)将子带编码为单独流。子带的经编码数据可交错于经压缩的数据流中,如参看图6所示,其中经压缩的数据流包含一系列帧,其中一帧包括八个块,且一块包括十一个压缩值。但是,再次应注意这些仅为关于编码数据的说明性实例且所主张的标的物不限于此方面。
再次参看图5,在此实施例中,子带数据的块(在上文参看图3和图2B所论述的分类过程后)可用于恢复原始音频样本值。举例来说,解码系统实施例300可进一步包含反向可逆变换模块510。在此实施例中,可通过反向可逆变换模块510来操作子带数据以产生原始音频数据。在图5中所描绘的实例中,展示对应于8个子带的数据块,但是,如上文所论述,可使用其它数目的子带且因此所主张的标的物不限于所提供的实例。举例来说,编码系统可将样本分割成任何数目的子带,例如如先前所论述的4、8、16或32个子带。在一个实施例中,反向可逆变换模块510可包含反向完全整数可逆修正型离散余弦变换。在另一实施例中,可通过若干其它可能可逆变换(例如,小波变换、扩展重叠变换和/或分层重叠变换)中的任一者来操作音频样本值。再次参看图5,在一个实施例中,可通过反向可逆变换模块510来接收8个子带数据块。在此实例中,反向可逆变换模块510可基于所接收的8个子带数据块而产生原始8个PCM音频样本。再次应注意这些仅为关于编码和/或解码的说明性实例且所主张的标的物不限于此方面。
图6为描绘根据一个实施例的经压缩的数据流600的示意图。参看图6,经压缩的数据流600可包含一个或一个以上数据帧,例如,帧0、、帧1、帧2直到帧n。。如所示,关于实例帧(例如帧2),帧包含对应于由可逆变换500产生的子带的数据块。在此实例中,可逆变换模块500产生8个子带,使得经压缩的数据流中的帧包含对应于8个所产生的子带的8个数据块。但是,再次应注意可使用任何数目的子带且所主张的标的物不限于所提供的实例。如图6中所示,关于对应于子带1的子带数据的实例块,可根据上文关于编码系统实施例100所描述而编码子带数据的块。举例来说,子带数据的块可包括排列值、莱斯K增量值、子带数据的块的残差值的集合和对应于来自子带数据块的初始值的正负号位。
在一实施例中,可使用上文关于解码系统实施例400所描述的解码技术来解压缩经压缩的数据流。举例来说,解码系统实施例400可接收经压缩的数据。至少部分基于莱斯K差分,解码系统实施例400可确定用于解码子带数据的块中的残差值的K值。如上文所提及,对于一些实施例,值K+1可用于可预期具有较高变化的残差,例如在块的末端点处的残差值。解码系统实施例400可连同莱斯解码模块420一起使用所确定的K值以确定子带数据的块的残差的集合。在一实施例中,解码系统实施例400可连同联合模块430一起使用初始值和残差值以产生经分类的样本。另外,解码系统实施例400可至少部分基于所产生的分类样本使用重新排序模块440来产生原始子带数据。一旦已从经压缩的数据流恢复原始子带数据,解码系统实施例400便可至少部分使用反向可逆解码模块510以从所恢复的子带数据重新建构原始音频样本。但是,当然这些仅为关于解码数据的说明性实例且所主张的标的物不限于此方面。
图7A描绘根据一实施例的编码方法700的流程图。关于框700,编码方法700可初始包括两个可能路径,路径702和路径704。关于路径702和框705,编码方法700可计算原始码长度,(例如)用于二进制编码PCM样本的序列。关于路径704,编码方法实施例700还可对PCM样本值的序列执行若干操作。举例来说,参看方框706,编码方法实施例700可(例如)使用上文描述的分类技术中的一者来对样本值进行分类以产生样本值的经分类集合。经分类样本的集合可(例如)包含升序分类的样本值的集合或降序分类的样本值的集合。此外,参看方框708,编码方法实施例700可计算样本的经分类集合的残差的集合。举例来说,编码方法实施例700可确定初始样本值且计算初始样本值与位于初始样本值左边和/或右边的邻近样本之间的差。作为另一实例,编码方法实施例700可进一步计算逐次邻近样本值之间的差以产生对应于样本值的经分类集合的残差值的集合。但是,当然应注意这些仅为关于编码方法的说明性实例且所主张的标的物不应限于此方面。
再次特定参看图7和框710,编码方法实施例700可进一步计算所要莱斯K值以用于编码样本值的经分类集合。举例来说,在一些情况下,使用所要莱斯K值进行编码可提供边际压缩益处。关于框712,编码方法实施例700可将经二进制编码的样本值的位长度与沿路径704编码的那些样本值的位长度进行比较。因而,编码方法实施例700可确定路径704是否正相对于路径702提供压缩以及是遵循路径716还是路径718来编码后续数据块和/或其它子带。但是,此又仅为关于编码数据的说明性实例且所主张的标的物不限于此方面。
关于方框714,编码方法实施例700可确定是使用来自路径702的编码还是来自路径704的编码。如果(例如)应用路径702,则编码方法实施例700可遵循路径716。关于方框720,编码方法实施例700可提供一码以指示采用二进制译码。举例来说,编码方法实施例700可将一个或一个以上位序列指定为一码以通知解码方法实施例后续数据块可被编码为二进制,而非使用莱斯编码来编码。但是,应注意此仅为关于编码方法实施例的说明性实例且所主张的标的物不限于此方面。
现参看框722,编码方法实施例700现可编码一位宽度。在此实施例中,位宽度可(例如)包含关于后续经二进制编码的数据将为多长的指示。关于框724,编码方法实施例700可对音频样本值进行二进制编码,(例如)以用于后续传输。但是,应注意这些仅为关于编码方法的说明性实例。
然而,如果编码方法实施例700确定沿路径704编码的音频样本值具有小于来自路径702的经二进制编码的音频样本值的位长度,则编码方法实施例700可沿路径718进行。关于框726,编码方法实施例700可提供用于样本值的经分类集合的排列值。关于框728,编码方法实施例700可提供莱斯K值或莱斯K增量。关于框730,编码方法实施例700可对所计算的残差值进行莱斯编码。不管编码方法实施例700选择哪一路径,在沿任一路径编码音频样本后,编码方法实施例700接着可准备经编码的音频样本以用于(例如)在框732处传输或存储,其视特定实施例而定。但是,再次应注意这些仅为关于编码方法的说明性实例且所主张的标的物不限于此方面。
如图7A中所示以及如上文所论述,可至少部分基于音频样本值的先前编码的块来编码音频样本值的后续块。举例来说,在框710处,编码方法实施例700可至少部分基于先前莱斯K值来计算一所要莱斯K值,如框734中所示。此外,关于框728,可通过计算所确定的所要莱斯K值与先前莱斯K值之间的差来确定莱斯K增量。但是,这些又仅为关于编码方法的说明性实例且所主张的标的物不限于此方面。
图7B描绘根据一实施例的多通道编码方法750。关于图7B,在一些情况下,可以不同方式至少部分处理多通道音频以增加压缩。举例来说,如果多通道音频的通道中的一者或一者以上紧密相关,则相对于可通过单独编码每一通道而实现的压缩,在一些情况下可通过至少部分基于第二通道来编码一个通道而实现额外压缩。在一些情况下,可对多通道音频进行编码,使各通道被视为编码方法、系统或设备的单独输入流。然而,在一些情况下,如果(例如)在左通道与右通道之间存在相对紧密的相关性,则可(例如)对于立体声音频实现额外的压缩。
在一个此类实施例中,可使用可逆“中间/侧边”向量旋转变换来组合左通道音频数据与右通道音频数据,在一些情况下,此可实现比单独地编码通道高的压缩比。再次参看图7B,多通道编码方法实施例750可在方框752处读取一个或一个以上音频样本值(例如PCM音频样本值)。关于方框754,多通道编码方法750可对音频样本执行可逆变换,例如上文所论述的修正型DCT。关于框756,多通道编码方法实施例750可将音频样本值的对应于左通道与右通道两者的尝试性子带编码为独立数据流,如上文参看图7A所论述。关于框758,多通道编码方法实施例750还可对对应于左通道和右通道的尝试性子带执行中间/侧边向量旋转。关于框760,多通道编码方法实施例750接着可对经变换的子带进行尝试性编码。关于框762,多通道编码方法实施例750接着可确定经尝试性编码的子带中的哪一者已实现较佳的压缩比,且至少部分基于此确定来决定如何编码所述子带。在一些情况下,如上文描述,可对每一子带执行尝试性编码。然而,对第一子带执行尝试性编码可能是计算上需要的。举例来说,如果第一子带通常具有比剩余子带多的能量,则可存在剩余子带将实现类似于尝试性子带的压缩比的良好概率。在这些情况下,可能需要基于在尝试性子带中实现较佳压缩的那一方法来编码剩余子带。举例来说,如果来自框756的经尝试性编码的子带比来自框760的经尝试性编码的子带压缩得更多,则多通道编码方法实施例750可在框764处进行选择以通过进行到框766而用与关于框756所使用的方法相同的方法来编码剩余子带。然而,如果来自框760的经尝试性编码的子带比来自框756的经尝试性编码的子带压缩得更多,则多通道编码方法实施例750可在框764处选择用与关于框756所使用的方法相同的方法来编码剩余子带且直接进行到框768。关于框770,多通道编码方法实施例750可检查以查看是否仍有额外子带用于特定数据块。如果仍有额外子带,则多通道编码方法实施例750可沿路径772进行且重复适当操作以用于编码剩余子带。然而,如果无额外子带用于特定数据块,则多通道编码方法实施例750可沿774进行且返回到方框752以开始编码PCM样本值的更多块。在一些情况下,可对于左和右通道音频样本值的每一块作出使用左/右或中间/侧边的决策。当然,应注意这些仅为关于多通道编码方法实施例的说明性实例且所主张的标的物不限于此方面。
图8A描绘根据一实施例的解码方法实施例800的流程图。关于框802,解码方法实施例800可测试二进制码的所接收的经编码音频样本值。如果检测到二进制码,则解码方法实施例800可在框804处确定沿路径805进行二进制解码。然而,如果未检测到二进制代码,则解码方法实施例800可在框804处确定沿路径806进行MDCT解码。关于路径805,解码方法实施例800可在框808处处理经编码音频的位宽度。解码方法实施例800接着可在框810处读取音频样本值。但是,应注意这些仅为关于解码方法的说明性实例且所主张的标的物不限于此方面。
关于路径806,解码方法实施例800可在框812处读取来自所接收的经编码音频的排列值。关于框814,解码方法实施例800可读取来自所接收的经编码音频的莱斯K值或莱斯K增量值。关于框816,解码方法实施例800可至少部分基于先前莱斯K值和所接收的莱斯K增量来计算莱斯K值。关于框818,解码方法实施例800可至少部分基于一个或一个以上经编码的残差值和所确定的莱斯K值来对来自所接收的经编码的音频的一个或一个以上残差值进行莱斯解码。关于框820,解码方法实施例800可使用经解码的残差值以重新建构音频样本值的集合,例如经分类音频样本值的集合。关于框822,解码方法实施例800接着可至少部分使用来自框812的排列值以将初始次序恢复到经排序的音频样本值的集合,例如上文参看图2B所描述。但是,应注意这些仅为关于解码方法实施例的说明性实例且所主张的标的物不限于此方面。
图8B为根据一实施例的多通道解码方法实施例850的流程图。在此实施例中,多通道解码方法实施例850可接收经编码的多通道音频。关于框852,多通道解码方法实施例850可读取来自所接收的经编码的多通道音频的模式位。在此实施例中,模式位可向多通道解码方法实施例850提供关于所接收的经编码的多通道音频已被编码的模式的信息。举例来说,模式位可向多通道解码方法实施例850通知所接收的经编码多通道音频是以通道编码成单独数据流还是所接收的经编码多通道音频以中间/侧边转换来编码,如上文参看图7B所论述。关于框854,多通道解码方法实施例850可进行以解码经编码的多通道音频的第一子带。多通道解码方法实施例850可沿路径856或路径858进行,其至少部分视来自框852的读取模式位而定。
如果多通道解码方法实施例850沿路径858进行,则在框860处,多通道解码方法实施例850将在进行到框862之前对当前子带执行反向中间-侧边转换。如果多通道解码方法实施例850沿路径856进行,则其将直接进行到框862。关于框862,多通道解码方法实施例850将确定是否存在与当前子带相关联的额外子带。如果存在额外子带,则多通道解码方法实施例850将返回到框852且重复上述过程以用于额外子带。然而,如果不存在额外子带,则多通道解码方法实施例850将进行到框864。关于框864,多通道解码方法实施例850将对子带执行反向可逆变换(例如上文论述的反向修正型DCT)。关于框866,多通道解码方法实施例850将提供经恢复的PCM音频样本值以用于回放或用于其它处理,但是,再次应注意,这些仅为关于解码方法的说明性实例且所主张的标的物不限于此方面。
在先前描述中,已描述所主张的标的物的各种方面。出于阐释的目的,陈述特定数目、系统和/或配置以提供对所主张的标的物的彻底理解。然而,受益于本发明的所属领域的技术人员应明白,可在没有特定细节的情况下实践所主张的标的物。在其它例子中,省略和/或简化所属领域的技术人员将理解的特征,以免混淆所主张的标的物。虽然本文中已说明和/或描述某些特征,但是所属领域的技术人员现将作出许多修改、替代、改变和/或等效物。因此,应理解,所附权利要求书意欲涵盖处于所主张的标的物的真实精神内的所有所述修改和/或改变。