第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > 用于处理音频数据的系统和方法与流程

用于处理音频数据的系统和方法与流程

时间:2024-09-26 22:01:34

相关推荐

用于处理音频数据的系统和方法与流程

本公开一般涉及编解码器和数字数据格式,尤其涉及编码和解码数字音频的混合形式。

背景技术:

随着基于ip的多媒体作为传统广播服务的替代品的使用变得更加突出,应用程序需要更加有活力、稳健和高质量。例如,对数字音频进行编码以进行传输或存储可能会引入不需要的伪像,对这些伪像进行解码和渲染时会影响声音质量。一种示例性伪像称为预回声。预回声是音频编解码器伪像,在解码信号中,可以在实际声音之前听到声音的回声。预回声可由量化和其他不精确性引起,这些不精确性在从时域转换到频域然后再转换回时域时发生,例如使用mdct将时域信号转换为频域,然后使用逆mdct将其转换回时域。这种效果是由于错误在变换块大小上的扩散,导致音频内容的前导和尾随回声。这种效果在带有尖锐脉冲和瞬态信号的音频(例如打击乐器,如响板)中尤其明显。现有的编解码器技术无法以期望的比特率有效地控制或消除这些伪像。此外,媒体分发已经开始从传统的网络广播服务(即专用、受控且昂贵的)转变为基于ip网络的分发,这种分发并非专用、受控且昂贵的,而是分布式的、有活力的、较便宜的,并且不需要固定比特率。然而,由于分布式网络固有的延迟和服务质量问题,流媒体服务还没有完全发展。但是,随着流媒体服务的发展,内容的分发和管理方式也需要发展。

技术实现要素:

本文中的技术提供了一种计算机实现的系统和方法,通过如下方式对采样的音频信号进行编码:对采样的音频信号进行编码和解码、识别编码的音频样本中的潜在预回声事件、从采样的音频信号和解码的样本音频信号生成误差信号、并对在将潜在的预回声事件和误差信号与编码的样本音频信号处理成比特流的过程中生成的数据进行编码,以便在下游解码时可以重新创建误差信号并移除潜在的预回声事件。

在一方面,提供了用于处理音频数据的编码器。编码器包括计算机可用的非暂时存储资源和一个或多个通信地耦合到存储资源的处理器,其中处理器被配置为执行存储在存储资源中的应用程序代码指令。编码器可以将采样的音频信号滤波成多个频带分量,并通过对频带分量进行脉冲编码调制,为多个频带中的每个频带生成量化数字分量。编码器可以识别和标记所生成的量化数字分量内的预回声事件的可能性,并且通过使用逆脉冲编码调制对量化数字分量解码来进一步生成滤波音频样本的近似信号。然后,编码器可以通过将近似信号与采样的音频信号进行比较来产生误差信号,并对误差信号和量化数字分量进行处理。

在另一方面,编码器通过如下方式来处理误差信号和量化数字分量:处理延迟的音频信号和量化数字分量的q带值、根据q带值确定预回声事件的可能性、并使用延迟的音频信号和q带值为误差信号确定比例因子和mdct块大小。mdct块大小是根据q带值的大小和包含q带值的波段来确定的。根据mdct块大小和延迟的音频信号确定比例因子。利用mdct块的大小可以将误差信号转换成更高分辨率的频率分量。对比例因子和频率分量进行量化,并且对量化后的行、块大小和量化比例因子进行编码以包含在比特流中。

在另一方面,编码器可以通过使用至少一个伪正交镜像滤波器(pqmf)将音频采样滤波到多个频带分量中来过滤采样的音频信号。编码器可以通过使用脉冲编码调制技术将多个频带分量调制成多个量化频带值来生成量化数字分量。编码器可以使用逆脉冲编码调制技术和至少一个逆伪正交镜像滤波器(ipqmf)将多个量化带值解码为近似信号。编码器可以检测多个量化频带值中与音频方位数据相邻的预回声事件。

在另一方面,编码器可以使用伪正交镜像滤波器(pqmf)组将采样的音频信号滤波到多个频带分量中。编码器还可以使用自适应脉冲编码调制(apcm)产生量化数字分量。编码器还可以使用自适应差分脉冲编码调制(adpcm)产生量化数字分量。

在另一方面,编码器可以通过使用与音频数据和pqmf输出阈值相关的定时信息,从生成的量化数字分量识别预回声事件。编码器还对经过变换和量化的误差信号和量化的比例因子进行编码。

附图说明

图1a是根据某些示例性实施例的描绘编码器的框图。

图1b是根据某些示例性实施例的描绘解码器的框图。

图2是根据某些示例性实施例的描绘音频编码器的元件的框图。

图3是根据某些示例性实施例的描绘子带编码装置的框图。

图4是根据某些示例性实施例的描绘apcm量化器的框图。

图5是根据某些示例性实施例的描绘步长控制器的框图。

图6是根据某些示例性实施例的描绘编码装置控制器的框图。

图7是根据某些示例性实施例的描绘mdct编码装置的框图。

图8是根据某些示例性实施例的描绘两个mdct的数据块,每个mdct的块长度为8。

图9是根据某些示例性实施例的描绘块长度为2和8的两个mdct的数据块。

图10是根据某些示例性实施例的描绘块长度为2、8和2的三个mdct的数据块。

图11是根据某些示例性实施例的描绘比特流的编码属性值的数据字节。

图12是根据某些示例性实施例的以可变字节数存储无符号整数值的示例。

图13是根据某些示例性实施例的以可变字节数存储有符号整数值的示例。

图14是根据某些示例性实施例的描绘比特流数据包配置的数据包图。

图15是根据某些示例性实施例的描绘音频数据包的可解码样本数据如何可不与固定时间间隔对齐的框图。

图16是根据某些示例性实施例的描绘解码器算法逻辑流的算法。

图17是根据某些示例性实施例的描绘从经编码的音频样本数据重构音频样本的框图。

图18是根据某些示例性实施例的描绘用于解码编码的子带数据的子带解码器的框图。

图19是根据某些示例性实施例的描绘子带解码器逆apcm的框图。

图20是根据某些示例性实施例的描绘mdct解码器的框图。

图21是根据某些示例性实施例的描绘计算机器和系统应用的框图。

具体实施方式

本发明给出的示例性实施例针对用于将输入信号编码为比特流数据包数据的系统、方法和计算机程序产品,,并以感知无损或接近感知无损的方式从比特流数据包数据解码,并且提供可更有效地呈现程序数据的打包比特流的结构和内容。

现在参考附图详细描述示例性实施例,其中,不同附图中相同的数字表示类似(但不一定相同)的元件。

图1a和1b描绘了根据示例性实施例的用于编码和解码音频信号和辅助数据的通常表示为10的系统。系统10包括编码器12和解码器18,分别如图1a和图1b所示。编码器12可以对不同类型的多个信号进行编码,并将编码信息组合成单个编码比特流16。不同类型的信号包括程序配置数据14a、音频信号14b、数据信号14c、空间和运动数据14d和环境属性数据14e。每种类型的信号都与编码器相关联。如图1a所示,程序编码器12a能够对程序配置数据14a进行编码,音频编码器12b能够对音频信号进行编码,数据信号编码器12c能够对数据信号14c进行编码,空间编码器12d能够对空间和运动数据14d进行编码,环境编码器12e能够对环境属性数据14e进行编码。由编码器12a-12e生成的比特流数据使用多路复用器(mux)22多路复用以形成单个编码比特流16。系统10还包括解码器18,如图1b所示。解码器18解码单个编码比特流16并产生解码的程序配置数据20a、解码的音频信号20b、解码的数据信号20c、解码的空间和运动数据20d以及解码的环境属性数据20e。解复用器(demux)24可对单个编码比特流16解复用,提取解复用比特流并将其输入到相应的解码器18a-18e。

程序配置数据14a可以在比特流中包括侧数据,用于定义对于特定程序实际应该解码哪些信道。例如,在同一比特流中可能存在本地化为不同语言的多个音频信道,程序配置数据14a可以识别要解码的信道,例如解码西班牙语程序vs意大利语程序。可以跳过与要解码的所需程序不匹配的信道数据。单个比特流可以包括适当数量的信道配置。任何给定的程序都可以为给定类型的音频信号或数据信号包选择要解码的信道。

音频信号14b可根据需要划分为子类别。作为操作示例,音频信号14b可分为五类:单信道、低频信道、对话信道、信道对和运动信道。单个信道可以用来表示单个音频信道。低频信道可用于表示单个音频信道,但通常用于低频音频内容。对话信道可用于表示音频对话的单个信道,例如演员表演。信道对可用于表示通常为立体声对的两个声道音频,例如左声道和右声道。运动信道可用于表示单个音频信道,但可包括动画空间信息,从而允许对音频内容进行动画处理以随时间移动。单个比特流可以包括上述任一类别的零个或多个音频信道的组合。音频数据的分类(如上述示例)可用于表示如何对音频和任何相关空间信息进行编码、优化或以其他意图使用的方式。例如,可以将信道对的两个音频信道一起编码,以减少在两个类似音频信道(例如,左声道和右声道)的编码之间可能出现的不希望的伪像。在另一示例中,可以通过使一个音频信道在空间上与另一个音频信道具有固定偏移来优化信道对的空间表示,从而潜在地减小空间信息的表示的数据大小。在另一示例中,空间表示可以在不同类别之间有所不同,例如对于大多数类别仅具有静态位置数据,而对于运动信道具有动画动作。可以随着时间对音频信号14b以恒定采样率进行采样,例如从模数转换器(adc)的输出进行采样。例如,编码器12b支持的采样率可以包括44.1khz、48khz、88.2khz和96khz,这取决于要求或所需的质量。

数据信号14c可以出于各种目的将侧数据包括到比特流中,例如字幕、相册艺术、工作室信息、演员传记、视频等。编解码器10支持将新类型的数据添加到比特流中,同时保持与旧版本解码器18的向后兼容。在操作的实施例中,可以使用数据信道来表示任何类型的数据。比特流中可以包含零个或多个数据信道。与音频信道类似,数据信道可以被信道选择性地解码。例如,可以将不同语言的字幕分割成不同的数据信道,使得程序可以选择所需的数据信道来解码以实现所期望的本地化。

关于空间环境的环境属性数据14e可以包括在比特流中。此信息用于模拟环境的特征,例如音乐厅vs小场地或小隧道。例如,环境信息可以随着时间而变化,以反映电影中环境的变化,并且可以命令在解码器中构造的新的环境引擎。

图2描绘了根据特定示例性实施例的音频编码器12b的框图。音频编码器12b通常包括低通有限脉冲响应(fir)滤波器52、子带编码装置54、z-n延迟分量56、编码装置控制器58、加法器60、mdct编码装置62和音频数据包汇编器64。音频编码器12b处理采样的音频信号,并且对于采样的集合,生成编码的比特流,例如,用于流媒体播放器的比特流。子带编码装置54将音频样本处理成多个频带分量,并通过使用自适应脉冲编码调制(apcm)或自适应差分脉冲编码调制(adpcm)将这些频带分量量化为量化的带值。在示例性实施例中,子带编码装置54生成三个输出:量化带值(q带值)、编码的量化带值(编码的q带值)和近似信号。q带值被输入到编码装置控制器58以检测预回声事件。编码的q带值被进一步添加到比特流中。通过首先使用逆apcm或逆adpcm将q带值转换回多个频带分量,然后将频带分量转换回音频样本来创建近似信号。生成误差信号(其是原始音频输入和近似信号之间的差)并将其提供给mdct编码装置62。编码装置控制器58确定用于对误差信号进行编码的比例因子和修改的离散余弦变换(mdct)块大小。mdct编码装置62使用确定的mdct块大小将误差信号转换为频率分量行值(mdct行值)。然后,对mdct块大小、比例因子和mdct行值进行量化和编码以包含在比特流中。

在一个实施例中,低通fir52接收音频信号14b并移除不需要的高频内容,例如接近奈奎斯特速率的内容和人类难以听到或听不到的内容。例如,88.2khz和96khz的音频采样率的奈奎斯特速率分别为44.1khz和48khz,远远超过了人耳~20khz的上限灵敏度。延迟分量56将采样信号的延迟版本馈送给加法器60和编码装置控制器58。可以从延迟的原始信号中减去从子带编码装置54生成的近似信号以产生误差信号。误差信号是原始音频信号和近似信号之间的差异。

编码装置控制器58接收和处理经滤波和延迟的音频信号和q带值,并生成mdct块大小和比例因子,mdct编码装置62可使用生成的mdct块大小和比例因子对误差信号进行编码,从而将预回声效应最小化或消除。作为响应,mdct编码装置62使用mdct块大小值和比例因子对误差信号进行mdct编码。然后,编码mdct数据可以被提供给音频数据包汇编器64,以便以后作为到相关音频信道数据包的输出被包括到单个编码的比特流16中。下面进一步描述子带编码装置54、编码装置控制器58和mdct编码装置62的细节。

图3描绘了根据某些示例性实施例的子带编码装置54的框图。在一个实施例中,子带编码装置54包括子带编码器70和子带解码器72。子带编码器70可以使用抽取器74(例如,对于更高的采样率)、伪正交镜像滤波器(pqmf)组76、子带量化器78和无损数据编码器80来量化和编码滤波后的音频信号14b。子带量化器78可以使用apcm或adpcm系统。实际上,子带编码装置54包括pqmf组76和子带量化器78,其可用于对采样音频数据的频带进行滤波和脉冲编码调制以产生apcm或adpcm量化输出。量化输出可以包括伪像,例如作为量化的一部分或作为信号混叠的结果而产生的伪像,这些伪像将被引入到下游音频处理中。由子带量化产生的量化带值始终用于确定预回声信息,这将在下面讨论。然而,子带解码器72根据需要通过标记比特流中的apcm或adpcm量化输出来选择性地不使用,或使用部分或全部apcm或adpcm量化输出。数据编码器80可以根据比特流中的标志的需要对量化输出进行编码以进行传输,其中数据编码器80可以是霍夫曼编码器或其他无损编码器。

量化输出可被发送到子带解码器72以生成原始输入样本的近似值。将参考图17-19讨论子带解码器72的解码功能的具体细节。尽管应该清楚,在讨论编码处理时,子带解码器72是在音频信号编码器12b的上下文中实现的。然而,一般而言,如前面所讨论的,从延迟输入音频信号14b中减去解码的数字音频样本,即近似信号,以生成误差信号。可选地,不使用、使用部分或使用全部量化输出来生成近似信号。因此,近似信号可以包括或不包括频带数据。当近似信号为0时,误差信号可以是整个信号。可以将原始采样音频信号的延迟版本和q带值提供给编码装置控制器54以计算mdct块大小和比例因子,其与误差信号一起提供给mdct编码装置62。此外,量化输出可以提供给数据编码器80,以使用无损数据编码(例如霍夫曼或算术编码)进行无损编码。

对于较高的采样率(例如88.2khz和96khz),音频信号14b可以通过抽取器74,但应理解,较低的采样率(例如44.1khz和48khz),可以不经抽取直接使用。无论是经抽取器74处理后提供音频信号14b,还是直接提供音频信号14b,pqmf组76产生在原始信号中发现的一系列频率信息。作为示例配置,pqmf组76可以包括16个pqmf,并且每个pqmf可以是有限脉冲响应(fir)滤波器的集合。可以向pqmf组76提供音频输入样本块,并且可以确定每个滤波器组的响应值。每个滤波器值可以被输入到子带量化器78中以生成每个滤波器的量化值。

作为示例,子带量化器78将滤波后的采样数据分成15个频带,但也可以分成更多或更少频带。此外,子带量化器78可以使用每个频带的检测阈值(例如20到40db)来功能性地处理来自pqmf滤波音频信号的频带信号。可以以指示信号是噪声伪像的方式标记(即量化)与音频承载信号相邻的噪声伪像。

图4描绘了根据示例性实施例的单个apcm量化器90的框图,作为从子带量化器78实现的示例。apcm量化器90包括加法器92、自适应量化器94、逆自适应量化器96和步长控制器98。本质上,apcm量化器90使用步长控制器98将输入值映射到较小的值集合,其中映射自适应地改变。参考图3,量化输出产生多个数字表示。可选地,当采用自适应差分脉冲编码调制(adpcm)量化器代替apcm量化器时,可以使用预测器来可能地减小差分信号值。

在实施例的操作中,在加法器92的正输入端接收要编码的输入音频信号。加法器92的负输入端接收由逆自适应量化器96生成的近似信号作为反馈信号。加法器92生成提供给自适应量化器94的差分信号。自适应量化器94接收差分信号,并生成将差分信号表示为表示不同信号电平的一系列量化信号的输出信号。由自适应量化器94输出的量化信号是编码器90的输出量化信号。步长控制器98(参见下面描述的图5)检测瞬态信号以确定自适应量化器94和逆自适应量化器96所采用的步长。逆自适应量化器96基于由自适应量化器94输出的量化信号和由步长控制器98设置的当前步长值生成近似信号。

图5描绘了通常表示为98的步长控制器的实施例的框图,其可用于(例如)自适应量化器94的实施例或逆自适应量化器96的实施例中。如图所示,步长控制器98包括基于当前量化信号选择对数乘法器的对数乘法器选择器100。对数乘法器选择器100可以基于历史数据(例如先前的量化信号)选择对数乘法器,并且可以包括查找表(lut),其可以在更新下载等中(例如)基于历史数据更新。对数乘法器选择器100可以根据基于当前和先前量化信号的统计概率选择对数乘法器。步长控制器98还包括加法器110,加法器110从所选择的对数乘法器接收第一正输入,并向步长限制器112提供输出。步长限制器112检查所有频带上的步长,并且如果有任何值低于最小值,则设置最小值。最小值可以包括固定值或可变值,这取决于正在使用的频带及其统计信息。将步长限制器112的输出提供给延迟电路114。延迟电路114的输出被提供给乘法器116和指数电路118。乘法器116将延迟电路114的输出乘以比例或泄漏因子β(该比例或泄漏因子β通常接近且小于1)并将结果提供给加法器110的第二正输入。泄漏系数通常可以是常数,但在一些实施例中可以是(例如,基于先前的步长控制信号或其他历史数据)可变的。选择接近且小于1的比例因子β有助于减少选择不正确步长(例如由于传输误差)的影响,因为引入的误差将衰减。

在操作中,指数电路118基于延迟电路106的输出生成步长控制信号。如图所示,将步长控制信号提供给自适应量化器94和逆自适应量化器96。如图所示,量化器步长控制器98以对数方式操作,这可以简化计算。一些实施例可以使用查找表来更快获得结果,但这样获得的结果较不精确。其他实施例可以以线性方式操作,并且可以(例如)采用乘法器代替加法器110,并采用指数电路代替乘法器116。如图所示的步长控制器98以对数方式操作,并且基于步长控制信号选择的步长以指数方式变化。

在一实施例中,量化器步长控制器98可根据如下所示的式1操作:

dn+1=βdn+m(cn)式1

其中dn是对数域中的步长,m(cn)是基于当前量化信号选择的对数乘法器,β是比例因子或泄漏系数。

图6描绘了根据特定示例性实施例的编码装置控制器58的框图。编码装置控制器58包括预回声检测器130和心理声学模型单元132。实际上,编码装置控制器58收集延迟的音频信号和q带值,然后确定mdct块大小和比例因子,以供mdct编码装置62进一步处理。更具体地参考图6,预回声检测器130可以检测预回声并基于输入音频信号的特性来确定mdct块大小,并且将所确定的mdct块大小信息输入到心理声学模型单元132和mdct编码装置62以供进一步处理。预回声检测器130可以一直运行。但在其他实施例中,它可以选择性地运行。当使用平稳或缓慢变化的信号运行时,子带编码装置54提供q带值的小绝对值。当可以引起预回声的音频信号(例如)在具有尖锐脉冲的音频中,以及在预回声特别明显的冲击乐器等瞬态信号中处理时,由于自适应脉冲编码调制的自适应特性,可以传递地出现q带值的一个或多个大的绝对值。当绝对q带值超过给定阈值时,预回声检测器130可以检测这种变化并指示存在预回声事件。然后触发将块长度(大小)切换到特定块长度(大小)或以下的要求。通过采用较短的块长度,可以抑制预回声。可以基于几个因素来选择较短的块长度,例如q值的大小和包含q值的频带。每个频带的阈值和块长度要求可能有所不同。例如,在较低频带中超过阈值可能要求块长度为256或更小,而在较高频带中超过类似阈值可能要求块长度为64或更小。如果超过的阈值多于一个,则使用最严格(最小)的块长度。此外,直接从大块长度转换到小块长度可能会导致不良失真。预回声检测器130可以通过预取音频内容来向前看,使得它可以随着时间在块长度上向上或向下转换。例如,与直接从块长度4096切换到块长度128不同,预回声检测器130可以生成块长度以从4096过渡到1024过渡到256过渡到128,从而减少任何单个大转换导致的不良失真,同时仍然为要求128块长度的音频实现该块长度。

心理声学模型单元132可以利用由预回声检测器130指示的mdct块大小信息,然后将比例因子输出到mdct编码装置62。在一个实施例中,心理声学模型单元132可以采用由运动图像专家组(mpeg)标准化的mpeg-1心理声学模型2,其反映了人类听觉的特性并且减少了音频信号的感知冗余。有关mpeg-1心理声学模型2的更多信息,请参阅iso/iec11172-3:1993,《信息技术——以高达1.5mbit/s的速率对数字存储媒体的运动图像和相关音频进行编码——第3部分:音频》,1993年8月。

图7描绘了根据示例性实施例的mdct编码装置62的框图。mdct编码装置62包括mdct处理器140、量化器142、节生成器和数据编码器144。实际上,mdct编码装置62使用mdct将误差信号转换为频域,将得到的mdct行值和比例因子值量化,并且对量化的mdct行和量化的比例因子值进行编码,将结果提供为编码mdct数据,可将该编码mdct数据打包以将其包含在单个编码的比特流16中。在一个实施例中,mdct处理器140使用来自误差信号的样本以及先前的mdct块长度、当前的mdct块长度和下一个mdct块长度。mdct对误差信号进行从时域到短时频域的转换,产生一组mdct行值。行值的计数可以称为mdct块长度或mdct块大小。从数学上讲,使用2次方的块长度是有利的。例如,对于48khz及以下的采样率,可以合理地使用64、128、256、512、1024、2048和4096的块长度。在较高的采样率(例如96khz及以下)下,可以合理地使用128、256、512、1024、2048、4096和8192的块长度。在更高的采样率(例如192khz及以下)下,可以合理地使用256、512、1024、2048、4096、8192和16384等块长度。每个输入样本使用两个重叠的mdct编码两次。类似地,解码器18使用逆mdct对两个mdct的结果进行解码,以便重新生成原始输入样本。当转换到频域时(如使用正弦窗口)数据将被加窗。但是,如果mdct块长度不匹配,则窗口可能会扭曲,导致不同大小之间的转换。由于每个样本都被编码两次,因此窗口化必须以这样的方式进行:通过对两个逆mdct的结果求和,可以在解码器中重新生成原始样本。实际上,可以使用前一个mdct输入样本的后半部分和新输入样本的另一半来执行新的mdct;其中,如果两个mdct具有相同的块长度,则一半等于块长度。在本例中,对每个mdct的输入是mdct块长度的两倍。当下一个mdct的块长度从上一个块开始变化时,重叠的样本数也不同。图8至图10将讨论几个简化示例。

可以将比例因子值量化为整数db表示,以减少在比特流中表示这些值所需的比特数:

比例因子db=基底(20*logl0(比例因子/2-24))。

生成的比例因子db值可以箝位到一个范围,例如[0,255]。如果针对比特流对比例因子值进行量化和/或箝位,则mdct编码装置62应基于量化比例因子db值计算新的比例因子值,以便与mdct解码器256所完成的数学运算一致(下文讨论)。mdct行值可以通过将每一行除以其关联的比例因子值并将结果四舍五入为整数值来量化。在一实施例中,mdct行可以被分离成比例因子带,其中同一比例因子带中的所有行共享一公共比例因子db值。因此,可以存储q行(量化)值和每个比例因子频带的比例因子db,以便对mdct的结果进行编码,使得mdct解码器256可以进行逆mdct。可以省略(即将其视为零)表示难以听到或不可能听到的高频mdct行值。

节生成器和数据编码器144用于在比特流中无损地存储量化比例因子db和mdct行值。其目的是使用尽可能少的比特来表示编码信息。作为一示例性实施例,可以将信息分离为部分,并根据特定部分的需要使用不同的霍夫曼码本。每个部分将包含一个或多个连续的比例因子带。可以基于在部分中找到的最大绝对q值来选择用于对该部分的量化(q)mdct行值进行编码的霍夫曼码本,从而对较小的绝对q值使用较小的霍夫曼表示。另一改进可以是将多个q值合并为单个值进行霍夫曼编码。例如,可以将0、0、0、0的4q值组合起来形成单个霍夫曼符号,使得编码的q值可以用比分别编码4q值中的每一个更少的比特来表示。另一个潜在的改进可以是针对宽带音频内容与窄带音频内容调谐不同的霍夫曼码本,使得霍夫曼码本针对宽带内容调谐后,宽带内容将倾向于用较少的比特来表示,而霍夫曼码本针对窄带内容调谐后,窄带内容将倾向于用较少的比特来表示。示例性实现可以是最初为每个比例因子带创建节,然后如果表示合并节的比特大小小于表示未合并节的比特大小,则将相邻节合并在一起。请参阅下表(表1)作为使用多个霍夫曼码本的示例。在该表中,有16个可能的霍夫曼码本值,包括15个实际的霍夫曼码本,以及在一节中所有q值都为0的常见情况下使用的码本值0。表的第一列显示码本值。表的第二列是该码本可表示的最大绝对q值。第三列显示了码本的类型(例如,针对窄带进行了调谐vs针对宽带进行了调谐)。第四列显示了要组合在一起以形成关联码本的霍夫曼符号的q值数量。

表1

因此,例如,如果在一节中找到的最大绝对(q)值是4,那么你可以使用霍夫曼码本7到15。注意,在所有q值都为零的情况下使用码本0。在这种情况下,忽略所有讨论中的比例因子带的q值,以及这些比例因子带的比例因子db值。通常,具有可使用的最小最大绝对q值限制的码本将能够以最小比特量表示一节的q值。例如,如果最大绝对(q)值是4,那么通常霍夫曼码本7或8将是该节使用的最佳码本;然而,情况并非总是如此。例如,有可能通过合并两节或多节来获得更好的总体结果,即使这意味着必须在合并的节中使用最大绝对(q)值较大的码本。这通常是由于指定多个节vs指定单个合并节的副数据开销所致。数据编码器的实施例可以尝试正尝试可用码本的合并节的各种组合,并选择导致比特流中的总体最小比特大小的组合。

由于上述示例中的绝对(q)值可用于创建霍夫曼码,因此对于非零的q值,每q值的附加符号比特存储在比特流中。注意,在上面的示例中,转义码本仅对于0到63之间的绝对(q)值有霍夫曼符号。可以向霍夫曼表中添加一附加霍夫曼值来表示转义码,例如值64,表示绝对(q)值太大,无法直接由霍夫曼符号表示,而将q值直接写在比特流中转义符号的后面。一简单的例子可以是使用固定数量的比特来写入所需的最坏情况表示(例如16比特)的q值本身;但是,对于值64或更大的值,还有其他表示,其平均值可能小于使用最坏情况下的固定位长。比例因子db值可以使用专门针对delta比例因子db值进行调整的不同霍夫曼码本分别编码。例如,数据编码器14可以对第一个有意义的比例因子db值进行整体编码,例如使用8比特,然后在剩余比例因子db值中,使用霍夫曼编码对每个比例因子db值和上一个比例因子db值之间的差进行编码。

图8是使用正弦窗口的简化示例,其中计算了第一mdct窗口146和第二mdct窗口148,每个mdct窗口的块大小为8,并且具有重叠样本,即mdct块150。第一mdct窗口146由16个样本计算。第二mdct窗口148由16个样本计算,但mdct窗口148的第一半部分覆盖第一mdct窗口146的第二半部分,产生重叠的8个样本,或者更确切地说是mdct块150。这些重叠的8个样本可由第一mdct窗口146和第二mdct窗口148变换。如果选择了这8个样本中的任何一个,则可以说,第一mdct146是使用样本乘以mdct窗口146的正弦窗口计算的,而第二mdct是使用样本乘以mdct窗口148的正弦窗口计算的。因此,当计算逆mdct时,可以将来自样本的每个imdct的结果相加以恢复样本的原始值。每个计算出的mdct的样本贡献可按特定样本的正弦窗口值的平方缩放。在本例中,两个窗口都是正弦窗口,且它们是彼此的镜像。mdct窗口146和mdct窗口148的平方和,即mdct窗口146的值乘以mdct窗口146的值,加上mdct窗口148的值乘以mdct窗口148的值,所得值为1.0。在本例中,当两个窗口交叉且具有完全相同的值时,该值等于45度的正弦,约为0.7071。如果对每个窗口的值进行平方,并且将贡献相加,则结果值为1.0。对于窗口中的每个样本,生成的窗口和是sin2(θ)加上cos2(θ),它始终等于1。

图9描绘了使用正弦窗口(块大小为2的第一mdct窗口152,块大小为8的第二mdct窗口154,和mdct块156)的另一示例。如前一示例中所述,定义重叠区域的mdct块156对于确定如何扭曲窗口以便能够产生所需值具有重要意义。也使用正弦窗口,但是第二mdct窗口154被扭曲,使得乘以第一mdct窗口152的第二半部分的样本也可以乘以1.0的平方根减去第二mdct窗口154的值。对于这两个样本,第二mdct窗口154的值和第一mdct窗口152的值的总和必须为1.0。因此,下一个问题是第二mdct窗口154的第一半部分比第一mdct窗口152的下半部分长。那通过在重叠之前将样本的第二mdct窗口154展平到0.0以及在重叠之后将样本的第二mdct窗口154展平到1.0来解决该问题。此外,计算并扭曲窗口,使前一个窗口的新一半与当前窗口的旧一半匹配,并且当前窗口的新一半必须与下一个窗口即将到来的一半匹配。当mdct大小不匹配时,正弦窗口在两个大小中较短的一个上执行,而1或0在较长窗口的响应部分上执行。当这两个mdct窗口的大小不同时,可能需要对其进行规范化,以使其值总和为1.0。为了保持上述例子的简单性,没有讨论对收益的影响。

图10显示了另一使用正弦窗口的示例,其具有块大小为2的第一mdct窗口158、块大小为8的第二mdct窗口160、块大小为2的第三mdct窗口162、mdct块164a和mdct块164b。与上一示例一样,第二mdct窗口160的第一半部分被扭曲,使得mdct块164a与第一mdct窗口158重叠,并且两个窗口的值总和为1.0。类似地,由于第三mdct窗口162包括较小的块大小,第二mdct窗口160的第二半部分被扭曲,使得其与第三mdct窗口162相加将得到1.0。第二mdct窗口160在重叠mdct块164b之前的部分被展平到1.0,第二mdct窗口160在重叠mdct块164b之后的部分被展平到0.0。请再次注意,为了保持示例简单,忽略了对增益的影响。还要注意,上面的所有简化示例都使用正弦窗口;但是,只要可以在解码器中抵消窗口的影响以正确地重新生成原始样本,就可以使用其他窗口。

由于各mdct是重叠的,在没有使用逆mdct解码来自两个mdct的数据的情况下,在音频解码器18b中不能完全解码样本。在没有解码来自两个mdct的数据的情况下,在音频解码器18b中不能完全解码样本的问题引起了对mdct启动块(primerblock)的需要。在启动条件下,只有一个mdct块长度值的样本可用于填充执行mdct所需的两个mdct块长度值的样本。在此启动条件下,可以使用值为零的mdct块长度,随后跟实际输入样本的mdct块长度。进行初始mdct的结果称为启动块。在一实施例中,音频解码器18b可以将启动块识别为特殊情况,这意味着启动块的解码不是对任何样本的实际完全解码,而是仅仅启动信道,使得随后的mdct块的解码可以解码实际样本。

图11是属性的最小比特流表示的示例性实施例。数据信号编码器12c通过使用属性对大多数数据信号14c进行编码。单个属性可用于以向后兼容和可扩展的格式表示任何类型的所需数据。注意,大多数类型的数据信号14c被编码为作为数据信道数据包的一部分的属性;然而,由于属性的灵活性,它们也可以在其他数据包类型中使用。属性的本质是,它可以由类型值标识,并且在解码时可以跳过属性数据,而不必知道该属性数据实际代表什么。为了实现这一点,属性至少由属性类型和数据大小来表示,并且包括相关的附加数据(即当数据大小不为零时)。在本例中,6比特定义属性类型166,而2比特定义属性数据大小168。6比特提供64个可能的属性类型值[0,63]。可以保留这些值中的一个(例如63),以指示属性类型不能在剩余的[0,62]值范围内表示,因此实际的属性类型将以可以大于62的表示形式(例如字节压缩整数(稍后解释))存储在比特流的下一位置中。用于定义属性数据大小的2比特可以表示4个可能的值[0,3]。值0、1和2可以表示数据的字节(0字节、1字节或2字节)大小,值3可以表示数据的大小存储在比特流的下一位置中,其表示形式可以指定大于2字节的大小,例如字节压缩整数(稍后解释)。通过这个示例表示,单个属性类型166和数据大小168可以只用8比特来描绘,并且可以根据需要使用附加比特来表示更大的属性类型和/或数据大小值。使用此格式,解码器可以解码任何属性的类型和数据大小,然后可以解码属性数据(如果它是已知的属性类型且具有相关性),或者可以跳过属性数据(如果它是未知的属性类型或不相关)。

属性类型可以全局定义为标准的一部分,新的属性可以添加到标准中,同时保持与旧解码器的向后兼容性,因为可以简单地跳过未知的属性类型。

图12描绘了在可变字节数中存储无符号整数值的示例,而图13描绘了在可变字节数中存储有符号整数值的示例。编码器12可能需要将整数值存储在比特流中,在比特流中,值通常非常小,但有时可能很大。为了将比特总计数最小化,用较少的比特表示更常见的整数值的格式表示整数是有用的。这方面的一个例子是字节压缩整数,其中和较大整数值相比,较小的整数值被压缩成更小的字节。对于无符号的32比特值,这可以通过将多至7比特的整数值编码为一个字节并使用剩余的第8比特(比特7)作为扩展标志来完成。如果清除扩展标志,则整数的所有比特都将被解码,并且解码可以停止。如果设置扩展标志,则整数将继续进入下一个字节。例如,如果要对32比特无符号整数值4094(二进制形式为00000000000000000000111111111110)进行编码,则可以如图12所示对其进行存储。比特170是4094整数值比特至最高设置比特。比特172是扩展标志。因此,与其将值存储为4字节(32比特/8=4字节),不如将其存储为2字节。带符号的32比特整数值的存储方式可略有不同。如果该值为负,则所有比特都反转,并设置反转标志比特。反转标志可以存储为第一个字节中的比特0。对于第一个字节,有反转标志比特0、多至6比特的反转整数值和扩展标志(比特7)。只有第一个字节有反转标志。所有其他字节使用7比特作为反转整数值,使用1比特作为扩展标志。例如,如果要对32比特的有符号整数值-4094进行编码,如二进制补码大字节序二进制所示:11111111111111111111000000000010,则首先反转该值,因为该值为负,将得出:00000000000000000000111111111101,并且可以如图13所示存储这些比特。比特174是反-4094整数值比特至最高设置比特。比特176是扩展标志。比特178是反转比特。

程序配置数据14a描述在比特流中为给定程序解码的数据类型,例如西班牙语vs英语,主管评论vs无主管评论等。关于每个程序配置的信息可以被编码并插入到程序配置包中,该包随后被写入单个编码比特流16。比特流格式能够支持在流中的同步点之后更改的所有程序和编程信息。

编码器12可以接受多种类型的输入(14a、14b、14c、14d、14e),并将数据编码成数据包的单个比特流。数据包本质上由数据包类型和有效载荷(数据)组成,如果数据包具有特定于信道的数据,它还具有指定相关信道的方式。解码器18将识别数据包类型,并将数据包分发到子系统以进行适当解码。因为最常见的数据包类型是与信道相关的数据包类型(音频和数据包),简单的示例性实施例可以使用字节(8比特)作为所有数据包的初始标头,如表2所示。在该示例中,上3位用于表示8种不同的数据包类型,下5位用于表示附加信息,例如信道相关数据包(音频和数据包)的信道号。在该标头字节之后可能是数据包的剩余有效载荷。注意,对于数字编码/解码,可能需要使数据包始终对齐,以从字节(8比特)边界开始,尽管这意味着有时需要添加多达7个额外的填充位以确保数据包从字节边界开始。表3示出了实施例中数据包类型的示例。

表2

表3

图14描绘了根据某些示例性实施例的通常表示为180的比特流数据包配置。通常,比特流数据包配置180包括配置成集合的一系列数据包。在一个实施例中,比特流数据包配置包括同步命令数据包182(a、b)、程序命令数据包184(a、b)、在一段时间内(例如半秒)的信道数据包186(a、b、c、d)以及流结束命令数据包188。信道数据包186(a、b、c、d)可以是信道相关数据包类型(例如音频数据包和/或数据包)中的任意一个或任意组合。还应理解,序列内的集合可以具有更多的信道相关数据包,或者可能没有,并且在集合内可以存在多个程序命令数据包。

命令数据包携带解码器18解码比特流所需的数据。同步命令数据包定义用于解码比特流的入口点。如果解码器正在加入已在进行中的比特流(即比特流中的先前字节未知),则解码器可以扫描比特流,直到找到同步命令数据包。紧跟在数据包第一个字节之后的字节是一种特定的字节模式,不太可能在比特流中随机出现。当解码器发现同步命令数据包字节后紧跟正确的字节模式时,解码器就找到了同步命令数据包,可以开始解码比特流的内容。同步命令数据包还可以包含不是专属于要解码的特定程序的信息(例如采样率),以及启动信息(例如在流的开始处启动音频解码的需要)。

一个或多个程序命令数据包184(a、b)可以跟随同步命令数据包182(a、b)。程序命令数据包184(a、b)定义关于要解码的特定程序的信息。例如,如果单个编码比特流16包括两个可用程序:一个用于英语,一个用于西班牙语,则可能存在两个程序命令数据包,每种语言一个。程序命令数据包184(a、b)可以包含唯一整数程序id,其可用于引用比特流16中的该程序。程序命令数据包184(a、b)指定要为与信道相关的数据包类型解码哪些信道。例如,程序命令数据包184(a、b)可以使用所需信道的信道位掩码来解码,例如32比特来表示特定信道数据包类型的32个可能信道。信道位掩码中的每个设置位可以指示应对关联的信道进行解码,而信道位掩码中的清除位可以指示应跳过关联的通道。程序命令数据包184(a、b)还可以包含附加信息(例如语言定位信息)的可选属性,并且稍后能够在保持向后兼容的同时添加新属性。

流结束命令数据包188终止单个编码比特流16。该数据包188表示在比特流中没有用于解码器18解码的剩余数据。流结束命令数据包188还可以包括关于流的结束的信息,解码器18可以使用该信息来结束解码处理。

与音频相关的信道数据包类型,如表4中所示的单信道、低频、对话信道、信道对和运动信道类型,主要包含编码的音频数据。数据信道数据包可以保存任何类型的数据,但更典型地用于其它形式的信道可选择数据,例如字幕、歌词、相册艺术、自定义工作室数据等。将信道数据包的内容与固定的持续时间相关联是有用的。例如,理想情况下,如果信道的每个数据包包含该信道的状态正好1秒钟的时间,则可以容易地将每个信道的内容与整体时间线相关联,例如,第一个数据包是内容的第一秒,第二个数据包是内容的第二秒,第三个数据包是内容的第三秒等。作为示例性实施例,我们将基于给定采样率下的音频采样数来选择持续时间,并将该采样数称为音频块。表4显示了在给定采样率下用于音频块的示例性采样计数以及由这些采样表示的持续时间。注意,音频块采样计数被选择为二的幂值,每个音频块大约十分之一秒。可以使用其他采样计数,包括非二的幂值长度,但一般来说,考虑到mdct计算的固有数学和延迟,合理的方法是使用采样率的最大支持mdct块长度作为该采样率的音频块长度。

表4

如本说明书所述,除非另有规定,否则音频块的长度是指采样数。在一实施例中,编码器12和解码器18在概念上可以以音频块为单位工作。例如,编码器12可以一次消耗一个音频块的输入数据,解码器可以一次输出一个音频块的解码数据。流中的所有音频块在概念上是相同的时间长度,因此是相同的采样数,但有一些显著的例外,例如流的结束或音频信道开始或停止时间,在这种情况下,音频块仍然代表相同的固定时间长度,但可能存在不完整的数据,例如一个或多个信道较少的采样数。

通常,无论音频数据包类型如何,音频样本都以相同的方式编码到音频数据包中,但有一个显著的例外是信道对数据包类型,它具有两个编码在一起的相关信道,例如左信道和右信道。音频样本通常由子带编码装置54编码,并且原始样本和解码子带编码数据的结果之间的差用作误差信号,其随后由mdct编码装置62编码。在这种情况下,通常子带编码器的编码数据和变换编码器的编码数据都存储在同一音频数据包中,但有时可以省略子带编码装置54的部分或全部频带。本质上,音频数据包可以被认为具有表示为子带编码装置的编码带值和变换编码装置的编码mdct数据的组合的音频样本范围的编码版本。音频解码器18b将用编码数据的组合进行解码并重新生成那些音频样本。理想情况下,单个数据包中编码音频样本的计数将匹配定义为音频块的样本计数,使得解码数据包的音频解码器18b将解码音频块长度的样本;然而,由于mdct数据的重叠性质以及可能已经使用的不同dmdct块大小,单个数据包中的样本集可能扩展到概念上属于下一个音频块的样本中。类似地,概念上属于当前数据包的样本可能已经经由先前的音频数据包发送。

图15描绘了有助于将两个音频数据包可视化的简化示例,一个用于音频块0,另一个用于音频块1,其中表示音频块0的数据包包含扩展到音频块1的编码样本数据。在所描绘的示例中,来自数据包0的最后2048个可解码样本不仅包含音频块0的最后512个样本,而且还扩展到概念上表示音频块1(512+1536=2048)的开始的1536个样本。如果一实施例使用音频块的这一概念来建立总的固定持续时间,则可以描述数据包和音频块之间的关系的另一种方式是:一旦相关音频块的数据包被解码,解码器18应该具有值得输出的内容的音频块。

对于mdct解码和子带解码,存在子带解码器254和mdct解码器256需要对不立即转换为解码音频样本的数据进行解码的初始启动情况。该数据被存储为启动信息,因为启动解码器但实际上没有完全解码任何音频样本。该信息可在正在启动的信道的第一音频数据包中找到,例如在流的开始处。在初始启动信息被解码后,所有未来的mdct和子带解码将导致样本被完全解码。

数据信道数据包被设计成以向后兼容和可扩展的格式保存各种类型的数据,因此数据包的内容不一定与音频样本直接相关;然而,在一些实施例中,将数据包与标准持续时间(例如音频块概念)相关联是有用的。在这样的实施例中,对于流中每个音频块的时间,可以任选地存在用于单个数据信道的单个数据包。这个隐含的持续时间对于建立基本时间线来解释在数据包中发现的一些内容是有用的,例如流中应该在的适当时间显示的字幕。然而,应当注意的是,由于数据信道数据包在表示任何类型的数据时是极其灵活的,因此实施例可以将任意分辨率的定时信息添加到数据包中,以按需要进行解释。

不同的音频相关信道类型可以可选地具有空间信息,其可以识别诸如音频发射器在空间中的位置、扬声器的位置,甚至环境的特征等。空间信息可以是静态的vs动态的,空间信息的表示形式可以是变化的。静态的(即非移动的)空间信息通常可以用较少的数据来表示,并且比表示相对于时间移动的某物的静态空间信息所需的频率要低。例如,静态信息通常只需要包括在同步点的比特流中,使得在同步点启动的解码器能够知道静态事物的空间信息。动态空间信息由于其随时间变化的本质,将需要具有可在某种时间分辨率下查询的空间信息。如果一实施例使用音频块的概念来表示持续时间,则可以方便地分割动态空间信息的表示,使得该信息相对于音频块类似于样本如何相对于音频块,但这不是必需的,并且鉴于动态空间信息的类型或所需的分辨率,甚至可能是不利的。一般来说,如果必须对音频样本的动态空间信息进行解码以完全解码/呈现音频样本,则编码器12和解码器18的总体延迟将受两组数据的编码和解码的影响。在实践中,这仅仅意味着样本和动态空间信息都需要以满足应用程序所需的编码和解码延迟要求的时间速率进行分割。静态空间信息可以在同步命令数据包处或之后不久包含在数据包内。动态空间信息也可以包括在同步命令数据包处或之后不久,但通常会在流中的其他数据包中编码其他信息。空间信息的表示可以根据需要而变化。例如,围绕单位圆相对于平坦地平面的单个角度可以满足许多需要,例如发出音频的对象的位置,其中从观察者到对象的距离和对象与观察者之间的相对高度差并不重要。在这样的例子中,所需的空间信息可能简单到单个字节(8比特),其中[0,256]的字节范围可以线性映射到围绕单位圆[0,360]度的角度,并且观察者在中心提供大约1.4度的精度,这对于许多应用程序来说已经足够了。如果相对高度很重要,那么添加7比特(-64,64)映射到[-90,90]度的倾斜角度将提供1.4度的相同分辨率(但在垂直方向)。这些示例数字假设希望有固定的分辨率单位,其中任意角度的精度与任意其他角度的精度相同。在实践中,可以使用非线性表示为更重要的事情提供更高的精度。例如,如果要包括到物体的距离以及先前描述的角度,则该距离可以表示为非线性曲线,其中当物体靠近观察者时,与物体远离观察者相比,其精度要高得多。另一例子是演员在舞台上或电影中的位置,除了罕见的例外情况外,所有的对话似乎都来自观察者前面相对狭窄的距离范围内。与观察者周围的总空间相比,这种情况可能会将所有或几乎所有的比特用于相当有限的空间片段。对于动态空间信息,该信息是暂态的,因此可以利用随时间发生的位置/方向的delta变化,对于相对于观察者而言感知上缓慢移动的对象,平均而言,该增量变化可能是比等效的空间绝对位置/方向小得多得值。此外,在实践中,移动的对象通常在很长时间段内只有微小的加速度变化,可以将其编码为少量比特,例如使用带有线性或非线性键的样条来近似移动。

环境属性数据14e(例如混响的效果),可以被编码到比特流中以表示不同类型环境的音频特性,例如,潜艇内部的特性与音乐厅内部的特性非常不同。环境特征也是一种空间表征,它能给听者提供许多事物的感知线索,如环境的大小、形状、距离、方向性和纹理/成分,以及环境中物体的线索。通过对环境参数的值集合进行定义来详细说明不同的环境。所需参数的数量和类型可能因所模拟环境的类型而异,有些环境的模拟需要很少的信息,而另一些环境则需要更多的信息。编解码器的实施例可以允许选择预定义的基本环境类型,可以对这些环境类型进行自定义以表示广泛的环境和环境影响。提供这些可调的基本环境类型和合理的默认参数值允许将相关的环境数据有效地编码到比特流中,因为只需要对支持特定环境类型所需的最少数据进行编码。稍后可以使用属性(前面讨论过)和其他类似的扩展,添加新的基本环境类型,并使比特流与旧的现有基本环境类型保持向后兼容。实施例不限于预定义的基本环境类型,并且可以通过其他方式创建自定义环境效果,例如但不限于使用数据信道数据包中的属性来描述全新的信息或扩展在流中发现的现有信息。在实施例中,与其它类型的空间信息一样,通常在同步命令数据包处或之后不久将环境信息包括在数据包内,从而允许从比特流中的同步点开始解码的解码器对环境信息进行解码,因此受其影响的音频样本能够适当地呈现。此外,与其他类型的空间信息类似,对环境的改变可以适当地编码到比特流中的稍后的数据包中,以模拟环境的改变,例如电影中的相机剪辑。也可以在没有对影响音频样本的环境数据解码的情况下对这些音频样本进行解码,但通常不可取。在这种情况下,初始音频样本可以被视为处于“干燥”环境中,具有最小、默认或在其他方面不存在的环境效果,随后,当在比特流中发现环境数据并对其进行解码时,音频将转换为实际的环境效果。该技术可用于减少比特流中环境信息的总体冗余,例如不在每个同步点指定所有环境信息。

图16描绘了根据特定示例性实施例的解码器18的算法流程图。解码器18将对比特流进行解码并返回输入到编码器12的原始信号的近似值或(在某些情况下)精确还原值。解码器算法流程可以从(例如)设备激活或使用被激活的编解码器的应用开始,框202。在启动后,解码器算法确定正在加入的比特流当前是否正在进行,框204。如果加入正在进行的比特流,其中该比特流中的早期数据是未知的,则解码器算法200可以搜索同步命令数据包,框206,此时可以开始解码。如果确定所加入的比特流正在开始,即第一数据包是同步数据包,则对比特流中的同步命令数据包进行解码,框208。同步命令数据包包含后续数据的全局信息,无论将要解码的程序是什么。例如,如果采样率在程序之间没有差异,同步命令数据包可以指定采样率。同步命令数据包之后是被解码的一个或多个程序配置数据包,框210。虽然图中省略,其他命令数据包可以与程序配置数据包混合。有效地,在找到同步命令数据包之后的阶段找到流中关于程序的信息,使得可以选择适当的程序进行解码。解码器算法200然后可以开始检查流中的其他数据包,并对每个数据包采取动作,框214。与要解码的所需程序相关联的信道的数据包被解码,而与所需程序无关的数据包被跳过。如果找到同步命令数据包,则逻辑流回到处理同步命令数据包,框208。如在框218中所确定的,如果找到流结束命令数据包,则不再有要解码的数据包,并且解码器可以完成解码处理,并指示对比特流的解码已经完成,框220。如在框218中所确定的,如果未找到流结束命令,则对下一个数据包进行解码,框222,然后算法200返回以检查下一个数据包214。

在大多数情况下,在比特流16中的同步点之后有足够的信息,以从该点开始对比特流的内容进行解码,而无需关于比特流先前的知识。这使得解码器18能够加入已经在进行中的比特流,并且在找到同步点之后开始解码。它还允许在比特流中寻找不同的点,并在找到同步点后恢复解码。它还允许将多个比特流轻松地拼接在一起,例如在广播内容中插入广告,其中原始源比特流的内容可以非常不同,它们之间没有相互依赖性。这确实意味着,一些信息(例如程序信息)可以冗余地存在于同步点之后的流中,即使该信息自上一个同步点以来没有改变也是如此。对于某些非关键信息,这种冗余可能是不需要的或不必要的,在这种情况下,非关键信息可能被分解和/或重复出现的频率降低。例如,专辑插图可能需要大量的比特才能完整表示。在每个同步点之后冗余地嵌入专辑插图可能会导致比特流的大小大大增加。为了减少冗余数据的影响,可以将专辑插图分解,并且在每个同步点之后只能存储整体数据的一部分。能够显示专辑插图的播放器可以等到所有的片段都被解码后才实际显示完整的图像。最终的结果是,在同步点之后,整个专辑的插图数据不会立即可用,但是在比特流中包含冗余的插图数据的影响将会减小。另一个问题是解码器18解码某些类型的数据(例如mdct数据)所需的启动。音频样本由两个mdct编码,因此反过来,必须对两个mdct进行解码才能完全解码音频样本。在流的开始或启动新的信道时,比特流中有额外的启动信息来处理这种情况。该启动信息可以包括在每个同步点之后;然而,较便宜的解决方案是简单地丢弃来自第一mdct的所得解码样本,然后,对转换解码器进行启动,使得每个新mdct将产生有效解码的音频样本。

如前所述,程序配置可以由程序配置命令数据包中的信息来表示。该数据包包括用于识别特定程序以及为该程序解码哪个信道的程序id。运行解码器18的应用程序可以为要解码的所需程序选择程序id。可以在第一信道相关数据包被解码之前的任意时间设置要解码的程序的程序id,在一些实施例中,包括当在比特流中发现来自程序命令数据包的编程信息时,解码器可以执行来自回调或另一种类型的信令的程序id。然后,在这种情况下,控制应用程序可以检查比特流中可用程序的信息,并选择所需的程序进行解码。

图17描绘了根据某些实施例的音频解码器18b的框图。音频解码器18包括音频数据包分解器252、子带解码器254、mdct解码器256和加法器258,其中音频数据包分解器252识别数据类型并将编码的子带数据发送到子带解码器254,将编码mdct数据发送到mdct解码器256。子带解码器254可以对编码的子带数据进行解码并生成近似信号,这将在图18中详细讨论。mdct解码器256可以对编码mdct数据进行解码并输出编码的误差信号,如下在图20中所示。然后将子带解码器254和mdct解码器256的输出相加以获得解码的音频样本。

图18描绘了根据特定示例性实施例的子带解码器254的框图,该子带解码器254用于对编码子带数据输入进行解码。子带解码器254包括数据解码器262、逆子带量化器264、逆pqmf存储器266、加法器268和内插器270。实际上,子带解码器254对输入数据进行解码,对解码信号进行逆量化并生成近似信号。数据解码器262可以使用霍夫曼解码或算术解码。逆子带量化器可以使用逆apcm(iapcm)或逆adpcm(iadpcm)系统。对于较高的采样率(例如88.2khz和96khz),可以将音频采样通过内插器270。不过,对于某些采样率,可能不需要内插器。应当理解,图3中的子带解码器72采用与子带解码器254相同的解码功能。

图19描绘了根据某些示例性实施例的逆apcm量化器的框图,通常表示为280。逆apcm解码器280包括逆自适应量化器282和步长控制器284。应当理解,采用逆apcm量化器是逆子带量化器264的实现的示例,其可以选择性地采用逆adpcm量化器,这取决于采用的是什么子带量化器78。逆自适应量化器282基于来自数据解码器262的解码信号(量化信号)和由步长控制器284设置的当前步长值生成近似信号。关于步长控制器284的更多详细信息可以参考图5。如果图3中的子带量化器78替代地使用adpcm量化器,则这里应相应地使用逆adpcm量化器,其中可以使用预测器接收来自逆自适应量化器的输出并输出近似信号。

图20描绘了根据某些示例性实施例的mdct解码器的框图,通常表示为256。mdct解码器256包括数据解码器302、逆量化器304和逆mdct处理器306。数据解码器302可以使用无损解码(例如霍夫曼解码或算术解码)来对编码mdct数据进行解码,其中解码的mdct数据包括量化的mdct行值和量化的比例因子值。然后,由逆量化器304将q值按相关的比例因子值缩放来计算量化的mdct行值。然后,通过逆mdct处理器306对编码的mdct行值进行处理,以重新生成编码的误差信号。然后,将编码后的误差信号与来自子带解码器254的近似信号一起添加到将返回给用户的最终解码音频样本中。

图21描绘了根据示例性实施例的计算机器400和系统应用模块500。计算机器400可以对应于本文所述的各种计算机、移动设备、便携计算机、服务器、嵌入式系统或计算系统中的任何一种。模块500可以包括一个或多个硬件或软件元件,所述硬件或软件元件被设计成便于计算机器400执行本文所述的各种方法和处理功能。计算机器400可以包括各种内部或连接的组件,例如处理器410、系统总线420、系统存储器430、存储介质440、输入/输出接口450和用于与网络470通信的网络接口460。

计算机器400可以被实现为传统计算机系统、嵌入式控制器、便携计算机、服务器、移动设备、智能手机、可穿戴计算机、定制机器、任何其它硬件平台或其任何组合或多重性。计算机器400可以是被配置成使用经由数据网络或总线系统互连的多个计算机器来工作的分布式系统。

处理器410可以被设计成执行代码指令,以便执行本文所述的操作和功能、管理请求流和地址映射,以及执行计算并生成命令。处理器410可以被配置成监视和控制计算机器400中的组件的操作。处理器410可以是通用处理器、处理器核心、多处理器、可重新配置处理器、微控制器、数字信号处理器(“dsp”)、专用集成电路(“asic”)、控制器、状态机、门控逻辑、离散硬件组件、任何其他处理单元或其任何组合或多样性。处理器410可以是单个处理单元、多个处理单元、单个处理核心、多个处理核心、专用处理核心、协处理器或其任何组合。根据某些实施例,处理器410和计算机器400的其它组件可以是在一个或多个其它计算机器内执行的虚拟计算机器。

系统存储器420可以包括非易失性存储器,例如只读存储器(“rom”)、可编程只读存储器(“prom”)、可擦除可编程只读存储器(“eprom”)、闪存或能够在有或无外加电源的情况下存储程序指令或数据的任何其他设备。系统存储器420还可以包括易失性存储器,例如随机存取存储器(“ram”)、静态随机存取存储器(“sram”)、动态随机存取存储器(“dram”)和同步动态随机存取存储器(“sdram”)。其它类型的ram也可用于实现系统存储器420。系统存储器430可以使用单个存储器模块或多个存储器模块来实现。虽然系统存储器430被描绘为计算机器400的一部分,但是本领域技术人员将认识到,系统存储器430可以与计算机器400分离,而不脱离本技术范围。还应当理解,系统存储器430可以包括诸如存储介质440的非易失性存储设备,或者与之一起操作。

存储介质440可以包括硬盘、软盘、光盘只读存储器(“cd-rom”)、数字多功能光盘(“dvd”)、蓝光光盘、磁带、闪存、其他非易失性存储设备、固态驱动器(“ssd”)、任何磁存储设备、任何光存储设备、任何电存储设备设备,任何半导体存储设备,任何基于物理的存储设备,任何其他数据存储设备,或其任何组合或多样性。存储介质440可以存储一个或多个操作系统、应用程序和诸如模块2050、数据或任何其他信息的程序模块。存储介质440可以是计算机器400的一部分,或可以连接到计算机器400。存储介质440还可以是与计算机器400通信的一个或多个其他计算机器的一部分,诸如服务器、数据库服务器、云存储、网络连接存储等。

系统应用模块500可以包括一个或多个硬件或软件元件,所述硬件或软件元件被配置成便于计算机器400执行本文所述的各种方法和处理功能。模块500可以包括与系统存储器430、存储介质440或两者相关联地存储为软件或固件的一个或多个指令序列。因此,存储介质440可以表示机器或计算机可读介质的示例,在这些机器或计算机可读介质上可以存储指令或代码以供处理器410执行。机器或计算机可读介质通常可指用于向处理器410提供指令的任何媒介(medium)或介质(media)。与模块500相关联的这种机器或计算机可读介质可以包括计算机软件产品。应当理解,包括模块500的计算机软件产品还可以与用于经由网络470、任何信号承载介质或任何其他通信或递送技术将模块500递送到计算机器400的一个或多个过程或方法相关联。模块500还可以包括硬件电路或用于配置硬件电路的信息,例如用于fpga或其他pld的微码或配置信息。

输入/输出(“i/o”)接口450可以被配置成耦合到一个或多个外部设备,以从一个或多个外部设备接收数据,并将数据发送到一个或多个外部设备。这种外部设备以及各种内部设备也可以被称为外围设备。i/o接口450可以包括用于将各种外围设备耦合到计算机器400或处理器410的电气和物理连接。i/o接口450可以被配置成在外围设备、计算机器400或处理器410之间传送数据、地址和控制信号。i/o接口450可以被配置为实现任何标准接口,例如小型计算机系统接口(“scsi”)、串行连接scsi(“sas”)、光纤通道、外围组件互连(“pci”)、总线接口(pcie)、串行总线、并行总线、高级技术连接(“ata”)、串行ata(“sata”)、通用串行总线(“usb”)、霹雳、火线、各种视频总线等。可以将i/o接口450配置为仅实现一个接口或总线技术。或者,可以将i/o接口450配置为实现多个接口或总线技术。i/o接口450可以被配置为系统总线420的一部分、全部或与系统总线420协同操作。i/o接口450可以包括一个或多个缓冲器,用于缓冲一个或多个外部设备、内部设备、计算机器400或处理器410之间的传输。

i/o接口450可以将计算机器400耦合到各种输入设备,包括鼠标、触摸屏、扫描仪、电子数字化仪、传感器、接收器、触摸板、轨迹球、照相机、麦克风、键盘、任何其它定点设备或其任何组合。i/o接口450可以将计算机器400耦合到各种输出设备,包括视频显示器、扬声器、打印机、投影仪、触觉反馈设备、自动化控制、机器人部件、执行器、马达、风扇、螺线管、阀门、泵、发射器、信号发射器、灯等。

计算机器400可以使用通过网络接口460到网络470上的一个或多个其他系统或计算机器的逻辑连接在网络环境中操作。网络470可以包括广域网(wan)、局域网(lan)、内部网、因特网、无线接入网、有线网、移动网、电话网、光网络或其组合。网络470可以是任何拓扑的数据包交换、电路交换,并且可以使用任何通信协议。网络470内的通信链路可以涉及各种数字或模拟通信介质,例如光纤电缆、自由空间光学器件、波导、电导体、无线链路、天线、射频通信等。

处理器410可以通过系统总线420连接到计算机器400的其它元件或本文讨论的各种外围设备。应当理解,系统总线420可以在处理器410内、处理器410外,或者两者都可以。根据一些实施例,处理器410、计算机器400的其它元件或本文讨论的各种外围设备中的任何一个可以集成到单个设备中,例如片上系统(“soc”)、包上系统(“sop”)或asic设备。

实施例可以包括体现本文描述和图示的功能的计算机程序,其中计算机程序在计算机系统中实现,该计算机系统包括存储在机器可读介质中的指令和执行指令的处理器。然而,应该清楚的是,在计算机编程中可以有许多实现实施例的不同方法,并且这些实施例不应被解释为仅限于任何一组计算机程序指令。此外,熟练的程序员能够基于应用文本中附加的流程图、算法和相关描绘来编写这样的计算机程序以实现所公开实施例中的实施例。因此,对于充分理解如何制作和使用实施例,认为不需要公开特定的一组程序代码指令。此外,本领域技术人员将理解,本文所述的实施例的一个或多个方面可以由硬件、软件或其组合来执行,如可以在一个或多个计算系统中实现的那样。此外,对由计算机执行的行为的任何提及不应解释为由单台计算机执行,因为不止一台计算机可以执行该行为。

本文所述的示例性实施例可以与执行前面所述的方法和处理功能的计算机硬件和软件一起使用。本文所述的系统、方法和过程可以体现在可编程计算机、计算机可执行软件或数字电路中。软件可以存储在计算机可读介质上。例如,计算机可读介质可以包括软盘、ram、rom、硬盘、可移动介质、闪存、记忆棒、光学介质、磁光介质、cd-rom等。数字电路可以包括集成电路、门阵列、构建块逻辑、现场可编程门阵列(fpga)等。

前面介绍的实施例中描述的示例性系统、方法和动作是示例性的,并且在替代实施例中,某些动作可以以不同的顺序执行,彼此并行,完全省略,和/或在不同示例性实施例之间组合,和/或某些附加动作可以在不脱离各种实施例的范围和精神的情况下执行。因此,在本文的描述中包括这样的替代实施例。

如本文所用,单数形式“a”、“an”和“the”也旨在包括复数形式,除非上下文另有明确说明。应进一步理解,术语“包括(comprises)”和/或“包括(comprising)”在本说明书中使用时,规定了所述特征、整数、步骤、操作、元件和/或组件的存在,但不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或其组。如本文所使用的,术语“和/或”包括一个或多个相关的所列项目的任何和所有组合。如本文所用,诸如“x和y之间”和“约x和y之间”的短语应被解释为包括x和y。如本文所用,诸如“约x和y之间”的短语是指“约x和约y之间”。如本文所用,诸如“从约x到y”的短语是指“从约x到约y”。

如本文所使用,“硬件”可以包括分立元件、集成电路、特定应用的集成电路、现场可编程门阵列或其他合适硬件的组合。如本文所使用,“软件”可以包括一个或多个对象、代理、线程、代码行、子例程、单独的软件应用程序、在一个或多个处理器(其中处理器包括一个或多个微型计算机或其他合适的数据处理单元、存储设备、输入输出设备、显示器、数据输入设备(例如键盘或鼠标)、外围设备(例如打印机和扬声器)、驱动程序、控制卡、电源、网络设备、扩展坞设备或在软件系统的控制下结合处理器或其他设备运行的其他合适设备)上的两个或多个软件应用程序中运行的两行或更多行代码或其他合适的软件结构,或其他合适的软件结构。在一个示例性实施例中,软件可以包括在操作系统等通用软件应用中操作的一行或多行代码或其他合适的软件结构,以及在特定用途软件应用中操作的一行或多行代码或其他合适的软件结构。如本文所使用的,术语“耦合(couple)”及其同源术语,例如“耦合(couples)”和“耦合的(coupled)”,可以包括物理连接(例如铜导体)、虚拟连接(例如通过数据存储设备的随机分配的存储位置)、逻辑连接(例如通过半导体设备的逻辑门)、其他合适的连接,或此类连接的适当组合。术语“数据”可指用于使用、传输或存储数据的适当结构,例如数据字段、数据缓冲器、具有数据值和发送方/接收方地址数据的数据消息、具有数据值的控制消息和导致接收系统或组件使用数据执行功能的一个或多个运算符或其他适用于数据电子处理的硬件或软件组件。

通常,软件系统是在处理器上操作以响应预定数据字段执行预定功能的系统。例如,系统可以由它执行的功能和它在其上执行该功能的数据字段定义。如本文所使用的,name系统(其中name通常是由系统执行的一般功能的名称)是指被配置为在处理器上操作并在所公开的数据字段上执行所公开的功能的软件系统。除非公开了特定算法,否则本领域技术人员已知的用于使用相关数据字段执行功能的任何合适算法被认为属于本公开的范围。例如,生成包含发送者地址字段、接收者地址字段和消息字段的消息的消息系统将包含在处理器上操作的软件,该处理器可以从处理器的适当系统或设备(例如缓冲设备或缓冲系统)获取发送者地址字段、接收者地址字段和消息字段设备,可以将发送者地址字段、接收者地址字段和消息字段组合成合适的电子消息格式(例如电子邮件消息、tcp/ip消息或具有发送者地址字段、接收者地址字段和消息字段的任何其他合适的消息格式),并且可以在通信介质(如网络)上使用电子消息系统和处理器设备来发送电子消息。本领域普通技术人员能够基于上述公开提供特定应用的特定编码,其目的在于阐述本公开的示例性实施例,而不是为本领域技术水本水平较低的人员(例如不熟悉使用适当的编程语言进行编程或处理的人)提供教程。可以流程图形式或以其他适当格式提供用于执行功能的特定算法,其中数据字段和相关函数可以示例性操作顺序列出,其中该顺序可适当地重新排列,并且除非明确声明为限制,否则不旨在限制。

尽管上面已经详细描述了具体实施例,但是该描述仅仅是为了说明的目的。因此,应当认识到,除非另有明确说明,否则上述许多方面并不旨在作为必需或必要的要素。除了上述内容外,本领域的普通技术人员还可以在受益于本公开而不背离在所附权利要求书中定义的实施例的精神和范围的情况下对示例性实施例的公开方面进行修改,并做出与之相应的等效组件或动作,所附权利要求的范围应与最宽泛的解释相一致,以涵盖这些修改和等同结构。

技术特征:

1.一种用于处理音频数据的编码器,所述编码器包括:

计算机可用的非暂时存储资源;以及

通信地耦合到所述存储资源的一个或多个处理器,其中,所述处理器被配置成执行存储在所述存储资源中的应用代码指令,以使所述编码器:

将采样的音频信号滤波成多个频带分量;

通过对所述频带分量进行自适应脉冲编码调制,为所述多个频带中的每个频带生成量化数字分量;

在所生成的量化数字分量内,识别至少一个超过阈值的频带的预回声事件的可能性;

通过使用逆自适应脉冲编码调制对所述量化数字分量的零个或更多个进行解码,生成滤波音频样本的近似信号;

通过将所述近似信号与所述采样的音频信号进行比较来生成误差信号;以及

处理所述误差信号和量化数字分量。

2.根据权利要求1所述的用于处理音频数据的编码器,其中,处理所述误差信号和量化数字分量的应用代码指令还包括使所述使编码器进行如下操作的应用代码:

处理所述量化数字分量的q带值和延迟的音频信号;

根据所述q带值确定所述预回声事件的可能性;以及

确定所述预回声事件可能性的比例因子和mdct块大小。

3.根据权利要求2所述的用于处理音频数据的编码器,其中,所述应用代码指令还包括使所述编码器进行如下操作的应用代码指令:

确定绝对q带值是否超过预定阈值;

基于q带值的大小和包含所述q带值的带来确定所述mdct块大小;以及

根据所述mdct块大小和所述延迟的音频信号确定所述比例因子。

4.根据权利要求2所述的用于处理音频数据的编码器,其中,处理所述误差信号和量化数字分量的所述应用代码指令还包括使所述使编码器进行如下操作的应用代码:

利用改进的离散余弦变换(mdct)将所述误差信号转换成使用所述mdct块大小的更高分辨率的频率分量;

对所述比例因子和频率分量进行量化;以及

对所述量化频率分量、块大小和量化比例因子进行编码以将其包含在所述比特流中。

5.根据权利要求1所述的用于处理音频数据的编码器,其中,从所生成的量化数字分量中识别预回声事件的所述应用代码指令还包括使所述系统从量化pqmf输出检测所述预回声事件的应用代码指令。

6.根据权利要求1所述的用于处理音频数据的编码器,其中,过滤采样的音频信号、生成量化数字分量以及从所生成的量化数字分量识别预回声事件的所述应用代码指令还包括使所述编码器进行如下操作的应用代码指令:

使用至少一个伪正交镜像滤波器(pqmf)将所述音频样本过滤到多个频带分量中;

使用自适应脉冲编码调制技术将所述多个频带分量调制成多个量化频带值;以及

使用逆自适应脉冲编码调制技术和至少一个逆伪正交镜像滤波器(ipqmf)将所述多个量化带值解码为近似信号。

7.根据权利要求1所述的用于处理音频数据的编码器,其中,过滤采样的音频信号、生成量化数字分量以及从所生成的量化数字分量识别预回声事件的所述应用代码指令还包括使所述编码器进行如下操作的应用代码指令:

在所述多个量化频带值中检测与音频方位数据相邻的预回声事件。

8.一种非暂时性计算机可读存储介质,包括一组能由处理器执行的计算机指令,用于指示计算机对音频数据进行编码,所述计算机指令被配置为:

将采样的音频信号滤波成多个频带分量;

通过对所述频带分量进行自适应脉冲编码调制,为所述多个频带中的每个频带生成量化数字分量;

在所生成的量化数字分量内,识别至少一个超过阈值的频带的预回声事件的可能性;

通过使用逆自适应脉冲编码调制对所述量化数字分量的零个或更多个进行解码,生成滤波的音频样本的近似信号;

通过将所述近似信号与所述采样的音频信号进行比较来生成误差信号;以及

处理所述误差信号和量化数字分量。

9.根据权利要求8所述的非暂时性计算机可读存储介质,还包括被配置为如下的计算机指令:

处理所述量化数字分量的q带值和延迟的音频信号;

根据所述q带值确定所述预回声事件的可能性;以及

确定所述预回声事件的可能性的比例因子和mdct块大小。

10.根据权利要求9所述的非暂时性计算机可读存储介质,还包括被配置为如下的计算机指令:

确定绝对q带值是否超过预定阈值;

基于q带值的大小和包含所述q带值的带来确定所述mdct块大小;以及

基于所述mdct块大小和所述延迟的音频信号确定所述比例因子。

11.根据权利要求9所述的非暂时性计算机可读存储介质,还包括被配置为如下的计算机指令:

利用改进的离散余弦变换(mdct)将所述误差信号转换成使用所述mdct块大小的更高分辨率的频率分量;

对所述比例因子和频率分量进行量化;以及

对量化行、块大小和量化比例因子进行编码以将其包含在所述比特流中。

12.根据权利要求8所述的非暂时性计算机可读存储介质,其中,从所生成的量化数字分量识别预回声事件的所述应用代码指令还包括使所述系统从量化的pqmf输出检测所述预回声事件的应用代码指令。

13.根据权利要求8所述的非暂时性计算机可读存储介质,其中,过滤采样的音频信号、生成量化数字分量和从所生成的量化数字分量识别预回声事件的所述应用代码指令还包括使所述系统执行如下操作的应用代码指令:

使用至少一个伪正交镜像滤波器(pqmf)将所述音频样本滤波到多个频带分量中;

使用自适应脉冲编码调制技术将所述多个频带分量调制成多个量化频带值;以及

使用逆自适应脉冲编码调制技术和至少一个逆伪正交镜像滤波器(ipqmf)将所述多个量化频带值解码为近似信号。

14.根据权利要求8所述的非暂时性计算机可读存储介质,其中,过滤采样的音频信号、生成量化数字分量和从所生成的量化数字分量识别预回声事件的应用代码指令还包括使所述系统在所述多个量化频带值中检测与音频方位数据相邻的预回声事件的应用代码指令。

15.一种计算机辅助的编码数据的方法,所述方法包括:

将采样的音频信号滤波成多个频带分量;

通过对所述频带分量进行自适应脉冲编码调制,为所述多个频带中的每个频带生成量化数字分量;

在所生成的量化数字分量内,识别至少一个超过阈值的频带的预回声事件的可能性;

通过使用逆自适应脉冲编码调制对所述量化数字分量中的零个或更多个进行解码来产生滤波的音频样本的近似信号;

通过将所述近似信号与所述采样的音频信号进行比较来产生误差信号;以及

处理所述误差信号和量化数字分量。

16.根据权利要求15所述的方法,其中,用于处理所述误差信号的所述步骤进一步包括:

处理所述量化数字分量的q带值和延迟的音频信号;

根据所述q带值确定所述预回声事件的可能性;以及

确定所述预回声事件的可能性的比例因子和mdct块大小。

17.根据权利要求16所述的方法,还包括:

确定绝对q带值是否超过预定阈值;

基于q带值的大小和包含所述q带值的所述带来确定所述mdct块大小;以及

基于所述mdct块大小和延迟的音频信号确定所述比例因子。

18.根据权利要求16所述的方法,其中,用于处理所述误差信号和量化数字分量的步骤进一步包括:

利用改进的离散余弦变换(mdct)将所述误差信号转换成使用所述mdct块大小的高分辨率的频率分量;

对所述比例因子和频率分量进行量化;以及

对量化后的行、块大小和量化比例因子进行编码以将其包含在所述比特流中。

19.根据权利要求15所述的方法,其中,过滤采样的音频信号、生成量化数字分量以及从所生成的量化数字分量识别预回声事件的所述步骤进一步包括:

使用至少一个伪正交镜像滤波器(pqmf)将所述音频样本滤波到多个频带分量中;

使用自适应脉冲编码调制技术将所述多个频带分量调制成多个量化频带值;以及

使用逆自适应脉冲编码调制技术和至少一个逆伪正交镜像滤波器(ipqmf)将所述多个量化频带值解码为近似信号。

20.根据权利要求15所述的方法,其中,识别预回声事件的可能性所述步骤进一步包括:

在所述多个量化频带值中检测与音频方位数据相邻的预回声事件。

21.一种用于解码比特流的解码器,所述解码器包括:

计算机可用的非暂时存储资源;以及

与所述存储资源通信地耦合的处理器,其中,所述处理器执行存储在所述存储资源中的应用代码指令,以使所述解码器:

接收包括比特流同步命令数据和程序命令数据的编码比特流;

处理编码比特流,并在所述比特流中标识所述同步命令数据;以及

使用所述同步命令数据中提供的信息对所述程序命令数据包和至少一个程序相关信道数据进行解码,并使用所述程序命令数据中提供的信息对程序相关信道数据进行解码。

22.根据权利要求21所述的用于处理数字音频的解码器,其中,所述处理器进一步执行存储在所述存储资源中的应用代码指令,以使所述解码器:

接收编码量化频带和编码mdct数据;以及

对所接收的编码量化频带和编码mdct数据进行解码。

23.根据权利要求22所述的用于处理数字音频的解码器,其中,使用霍夫曼解码技术和其他无损解码技术中的至少一种对所接收的编码量化频带和编码mdct数据进行解码。

24.根据权利要求22所述的用于处理数字音频的解码器,其中,所述处理器进一步执行存储在所述存储资源中的应用代码指令,以使所述解码器:

解码所述mdct数据;以及

对解码的mdct数据的行值进行逆修改离散余弦变换,以生成编码误差信号;

其中,所述编码误差信号由编码器生成。

25.根据权利要求24所述的用于处理数字音频的解码器,其中,所述解码的mdct数据包括量化的mdct行值和量化的比例因子值。

26.根据权利要求24所述的用于处理数字音频的解码器,其中,所述处理器进一步执行存储在所述存储资源中的应用代码指令,以使所述解码器:

逆自适应脉冲编码调制单个量化频带;

逆伪正交镜滤波每个逆调制频带;以及

将每个逆镜滤波频带相加以生成近似信号。

27.根据权利要求26所述的用于处理数字音频的解码器,其中,所述处理器进一步执行存储在所述存储资源中的应用代码指令,以使所述解码器将所述近似信号和误差信号相加。

28.一种非暂时性计算机可读存储介质,包括一组能由处理器执行的计算机指令,用于指示计算机对音频数据进行解码,所述计算机指令被配置为:

接收包括比特流同步命令数据和程序命令数据的编码比特流;

对所述编码比特流进行处理,并在所述比特流中识别所述同步命令数据;以及

使用所述同步命令数据中提供的信息对所述程序命令数据包和至少一个程序相关信道数据进行解码,并使用所述程序命令数据中提供的信息对程序相关信道数据进行解码。

29.根据权利要求28所述的非暂时性计算机可读存储介质,包括一组能由处理器执行的计算机指令,用于指示计算机对音频数据进行解码,所述计算机指令被配置为:

接收编码量化频带和编码mdct数据;以及

对所接收的编码量化频带和编码mdct数据进行解码。

30.根据权利要求29所述的非暂时性计算机可读存储介质,其中,使用霍夫曼编码技术和其他无损解码技术中的至少一种对所述接收的编码量化频带和编码mdct数据进行解码。

31.根据权利要求29所述的非暂时性计算机可读存储介质,包括一组能由处理器执行的计算机指令,用于指示计算机对音频数据进行解码,所述计算机指令被配置为:

对mdct数据进行解码;以及

对所解码的mdct数据的行值进行逆修改离散余弦变换,以生成编码误差信号;

其中,所述编码误差信号由编码器生成。

32.根据权利要求31所述的非暂时性计算机可读存储介质,其中,所述解码的mdct数据包括量化的mdct行值和量化的比例因子值。

33.根据权利要求31所述的非暂时性计算机可读存储介质,包括一组能由处理器执行的计算机指令,用于指示计算机对音频数据进行解码,所述计算机指令被配置为:

逆自适应脉冲编码调制各个量化频带;

逆伪正交镜滤波每个逆调制频带;以及

将每个逆镜滤波频带相加以生成近似信号。

34.根据权利要求33所述的非暂时性计算机可读存储介质,包括一组能由处理器执行的用于指示计算机对音频数据进行解码的计算机指令,所述计算机指令被配置成使所述解码器将所述近似信号和误差信号相加。

35.一种对音频数据进行解码的计算机辅助方法,所述方法包括:

接收包括比特流同步命令数据和程序命令数据的编码比特流;

处理所述编码比特流并在所述比特流中识别所述同步命令数据;以及

使用所述同步命令数据中提供的信息来对所述程序命令数据包和至少一个程序相关信道数据进行解码,并使用所述程序命令数据中提供的信息对程序相关信道数据进行解码。

36.根据权利要求35所述的方法,还包括:

接收编码量化频带和编码mdct数据;以及

对所接收的编码量化频带和编码mdct数据进行解码。

37.根据权利要求36所述的方法,还包括:

对所述编码mdct数据进行解码;以及

对所述解码部分的行值进行逆修改离散余弦变换以生成编码误差信号;

其中,编码误差信号由编码器生成。

38.根据权利要求37所述的用于处理数字音频的解码器,其中,解码的mdct数据包括量化的mdct行值和量化的比例因子值。

39.根据权利要求37所述的方法,还包括:

逆自适应脉冲编码调制各量化频带;

逆伪正交镜滤波每个逆调制频带;以及

将每个逆镜滤波频带相加以生成近似信号。

40.根据权利要求39所述的方法,还包括将近似信号和误差信号相加。

41.一种用于处理音频数据的编解码器,包括:

计算机可用的非暂时存储资源;以及

与所述存储资源通信地耦合的处理器,其中,所述处理器执行存储在所述存储资源中的应用代码指令,以使所述编解码器:

接收来自程序源的音频、音频辅助、程序配置和数据信号,所述音频信号包括单信道音频信号和多信道音频信号,音频辅助信号包括空间和运动数据以及环境特性,所述数据信号包括程序相关数据;以及

生成非暂时性编码比特流,其中,所述比特流包括同步命令数据和程序命令数据、音频信道数据、音频辅助数据、程序内容数据和流尾数据中的零个或更多个,其中,所述编码比特流包括用于定义每个数据分量的数据包类型的标识符;

其中,所述同步命令数据包括流开始标记,所述流开始标记限定用于在所述块内的第一采样位置处对所述比特流和信息进行解码的入口点,并且所述同步命令数据进一步提供所述编码比特流的采样率。

42.根据权利要求41所述的用于处理音频数据的编解码器,其中,所述音频辅助数据包括空间音频信息以及环境特征和效果。

43.根据权利要求41所述的用于处理音频数据的编解码器,其中,生成所述编码比特流的所述应用代码指令还包括使所述编解码器进行如下操作的应用代码指令:

将采样的音频信号滤波成多个频带分量;

通过对所述频带分量进行自适应脉冲编码调制,为所述多个频带中的每个频带生成量化数字分量;

在所生成的量化数字分量内,识别至少一个超过阈值的频带的预回声事件的可能性;

通过使用逆自适应脉冲编码调制对零个或更多个量化数字分量进行解码,生成滤波的音频样本的近似信号;

通过将所述近似信号与采样的音频信号进行比较,生成误差信号;以及

处理所述误差信号和量化数字分量。

44.根据权利要求43所述的用于处理音频数据的编解码器,其中,处理所述误差信号和量化数字分量的所述应用代码指令还包括使所述编解码器进行如下操作的应用代码指令:

处理延迟的音频信号和q带值;

根据所述q带值确定所述预回声事件的可能性;以及

确定比例因子和mdct块大小。

45.根据权利要求44所述的用于处理音频数据的编解码器,其中,所述应用代码指令还包括使所述编码器进行如下操作的应用代码指令:

确定绝对q带值是否超过预定阈值;

基于q带值的大小和包含所述q带值的所述带来确定所述mdct块大小;以及

基于所述mdct块大小和所述延迟的音频信号确定比例因子。

46.根据权利要求44所述的用于处理音频数据的编解码器,其中,处理所述误差信号和量化数字分量的所述应用代码指令还包括使所述编解码器进行如下操作的应用代码:

使用改进的离散余弦变换(mdct)将所述误差信号转换为使用先前确定的块大小的mdct的更高分辨率的频率分量;

对所述比例因子和频率分量进行量化;以及

对量化的频率分量、块大小和量化比例因子进行编码以将其包含在所述比特流中。

47.根据权利要求43所述的用于处理音频数据的编解码器,其中,过滤采样的音频信号、生成量化数字分量以及从所生成的量化数字分量识别预回声事件的所述应用代码指令还包括使所述编解码器进行如下操作的应用代码指令:

使用至少一个伪正交镜像滤波器(pqmf)将所述音频样本滤波到多个频带分量中;

使用自适应脉冲编码调制技术将所述多个频带分量调制成多个量化频带值;以及

使用逆自适应脉冲编码调制技术和至少一个逆伪正交镜像滤波器(ipqmf)将所述多个量化频带值解码为近似信号。

48.一种非暂时性计算机可读存储介质,包括一组能由处理器执行的计算机指令,用于指示计算机对音频数据进行编码和解码,所述计算机指令被配置为:

接收来自程序源的音频、音频辅助、程序配置和数据信号,所述音频信号包括单信道音频信号和多信道音频信号,音频辅助信号包括空间和运动数据以及环境特性,所述数据信号包括程序相关数据;以及

生成非暂时性编码比特流,其中,所述比特流包括同步命令数据,程序命令数据、音频信道数据、音频辅助数据、程序内容数据和流尾数据中的零个或更多个,其中,所述编码比特流包括用于为每个数据分量定义数据包类型的标识符;

其中,所述同步命令数据包括流开始标记,所述流开始标记限定用于在所述块内的第一采样位置处对所述比特流和信息进行解码的入口点,并且所述同步命令数据进一步提供所述编码比特流的采样率。

49.根据权利要求48所述的非暂时性计算机可读存储介质,包括一组能由处理器执行的计算机指令,用于指示计算机对音频数据进行编码和解码,所述计算机指令被配置为:

接收包含比特流同步命令数据和程序命令数据的编码比特流;

处理所述编码比特流,并在所述比特流中标识所述同步命令数据;以及

使用所述同步命令数据中提供的信息对所述程序命令数据包和至少一个程序相关信道数据进行解码,并使用所述程序命令数据中提供的信息对程序相关信道数据进行解码。

50.根据权利要求49所述的非暂时性计算机可读存储介质,包括一组能由处理器执行的计算机指令,用于指示计算机对音频数据进行编码和解码,所述计算机指令被配置为:

接收编码量化频带和编码mdct数据;以及

对所接收的编码量化频带和编码mdct数据进行解码。

51.根据权利要求50所述的非暂时性计算机可读存储介质,包括一组能由处理器执行的计算机指令,用于指示计算机对音频数据进行编码和解码,所述计算机指令被配置为:

对所述mdct数据进行解码;以及

对所解码的mdct数据的行值进行逆修改离散余弦变换,以生成编码误差信号;

其中,所述编码误差信号由编码器生成。

52.根据权利要求51所述的非暂时性计算机可读存储介质,包括一组能由处理器执行的计算机指令,用于指示计算机对音频数据进行解码,所述计算机指令被配置为:

逆自适应脉冲编码调制各个量化频带;

逆伪正交镜滤波每个逆调制频带;以及

将每个逆镜滤波频带相加以生成近似信号。

53.根据权利要求52所述的非暂时性计算机可读存储介质,包括一组能由处理器执行的用于指示计算机对音频数据进行解码的计算机指令,所述计算机指令被配置成使所述解码器将所述近似信号和误差信号相加。

54.一种对音频数据进行编码和解码的计算机辅助方法,所述方法包括:

接收来自程序源的音频、音频辅助、程序配置和数据信号,所述音频信号包括信号信道音频信号和多信道音频信号,音频辅助信号包括空间和运动数据以及环境特性,所述数据信号包括程序相关数据;以及

生成非暂时性编码比特流,其中,所述比特流包括同步命令数据,程序命令数据、音频信道数据、音频辅助数据、程序内容数据和流尾数据中的零个或更多个,其中,所述编码比特流包括用于为每个数据分量限定数据包类型的标识符;

其中,所述同步命令数据包括流开始标记,所述流开始标记限定用于在所述块内的第一采样位置处对所述比特流和信息进行解码的入口点,并且所述同步命令数据进一步提供所述编码比特流的采样率。

55.根据权利要求54所述的计算机辅助方法,其中,所述生成的步骤进一步包括:

将采样的音频信号滤波成多个频带分量;

通过对频带分量进行自适应脉冲编码调制,为所述多个频带中的每个频带生成量化数字分量;

在所生成的量化数字分量内,识别至少一个超过阈值的频带的预回声事件的可能性;

通过使用逆自适应脉冲编码调制解码零个或更多个量化数字分量来生成所述滤波音频样本的近似信号;

通过将所述近似信号与采样的音频信号进行比较来生成误差信号;以及

处理所述误差信号和量化数字分量。

56.根据权利要求55所述的计算机辅助方法,其中,处理所述误差信号和量化数字分量的步骤进一步包括:

处理延迟的音频信号和q带值;

根据所述q带值确定所述预回声事件的可能性;以及

确定比例因子和mdct块大小。

57.根据权利要求56的所述的计算机辅助方法,还包括:

确定绝对q带值是否超过预定阈值;

基于q带值的大小和包含所述q带值的所述带来确定所述mdct块的大小;以及

基于所述mdct块大小和所述延迟的音频信号确定比例因子。

58.根据权利要求56所述的计算机辅助方法,其中,处理所述误差的步骤进一步包括:

使用改进的离散余弦变换(mdct)将所述误差信号转换为使用所述mdct块大小的更高分辨率的频率分量;

对所述比例因子和频率分量进行量化;以及

对所述量化频率分量、块大小和量化比例因子进行编码以将其包含在所述比特流中。

59.根据权利要求55所述的计算机辅助方法,其中,过滤采样的音频信号、生成量化数字分量以及从生成的量化数字分量识别预回声事件的步骤进一步包括:

使用至少一个伪正交镜像滤波器(pqmf)将所述音频样本滤波到多个频带分量中;

使用自适应脉冲编码调制技术将所述多个频带分量调制成多个量化频带值;以及

使用逆自适应脉冲编码调制技术和至少一个逆伪正交镜像滤波器(ipqmf)将所述多个量化频带值解码为近似信号。

60.根据权利要求54所述的计算机辅助方法,还包括:

接收包括比特流同步命令数据和程序命令数据的编码比特流;

处理编码比特流并在所述比特流中识别所述同步命令数据;以及

使用所述同步命令数据中提供的信息来解码所述程序命令数据包和至少一个程序相关信道数据,并使用所述程序命令数据中提供的信息来对程序相关信道数据进行解码。

61.根据权利要求60所述的计算机辅助方法,还包括:

接收编码量化频带和编码mdct数据;以及

对所接收的编码量化频带和编码mdct数据进行解码;

对所述mdct数据进行解码;以及

通过对解码的mdct数据的行值进行逆修改离散余弦变换来生成编码误差信号,以生成编码误差信号;

逆自适应脉冲编码调制各个量化频带;

逆伪正交镜滤波每个逆调制频带;

将每个逆镜滤波频带相加以产生近似信号;以及

将所述近似信号和误差信号相加;

其中,所述编码误差信号由编码器生成。

62.一种用于处理用于数字编码器中的音频样本的子带编码装置,所述子带编码装置包括:

计算机可用的非暂时性存储资源;以及

一个或多个可通信地耦合到所述存储资源的处理器,其中,所述处理器被配置成执行存储在所述存储资源中的应用代码指令,以使所述编码装置:

使用至少一个伪正交镜像滤波器(pqmf)将所述音频样本滤波到多个频带分量中;

使用自适应脉冲编码调制技术将所述多个频带分量调制成多个量化频带值;以及

使用逆自适应脉冲编码调制技术和至少一个逆伪正交镜像滤波器(ipqmf)将所述多个量化频带值中的零个或更多个解码为近似信号;

其中,所述子带编码装置生成包括由无损编码器编码的多个编码量化频带值、所述多个量化频带值和所述近似信号的输出。

63.根据权利要求62所述的子带编码装置,其中,处理器进一步执行存储在所述存储资源中的应用代码指令,以使所述编码装置:

在所述多个量化频带值中检测与音频方位数据相邻的预回声事件。

64.根据权利要求62所述的子带编码装置,其中,所述多个量化频带值包括预回声事件。

65.根据权利要求62所述的子带编码装置,其中,使用自适应脉冲编码调制(apcm)技术之一和自适应差分脉冲编码调制(adpcm)技术对所述频带分量进行调制。

66.根据权利要求62所述的子带编码装置,其中,所述多个量化频带值中的至少一个具有一个值,所述值的绝对值高于阈值,并且使用逆apcm技术和逆adpcm技术中的一个将所述多个量化频带值中的所述至少一个解码为所述近似信号。

67.根据权利要求62所述的子带编码装置,其中,所述音频样本被过滤成16个频带。

68.根据权利要求67所述的子带编码装置,其中,最高频带未经调制且仅调制所述16个频带中不在听觉范围之外的其他频带。

69.根据权利要求62所述的子带编码装置,其中,使用霍夫曼编码技术对所述多个编码的量化频带值进行编码,并且将所述多个编码的量化频带值编码为霍夫曼编码的码字。

70.一种子带编码数据的计算机辅助方法,所述方法包括:

使用至少一个伪正交镜像滤波器(pqmf)将所述音频样本滤波成多个频带分量;

使用自适应脉冲编码调制技术将所述多个频带分量调制成多个量化频带值;以及

使用逆自适应脉冲编码调制技术和至少一个逆伪正交镜像滤波器(ipqmf)将所述多个量化频带值中的零个或更多个解码为近似信号;

提供包括所述多个量化频带值、所述近似信号和多个编码量化频带值的输出。

71.根据权利要求70所述的方法,还包括:

在所述多个量化频带值中检测与音频方位数据相邻的预回声事件。

72.根据权利要求70所述的方法,其中,所述多个量化频带值包括预回声事件。

73.根据权利要求70所述的方法,其中,使用自适应脉冲编码调制(apcm)技术之一,并使用自适应差分脉冲编码调制(adpcm)技术对所述频带分量进行调制。

74.根据权利要求70所述的方法,其中,使用逆apcm技术和逆adpcm技术中的一种将所述多个量化频带值解码为所述近似信号。

75.根据权利要求70所述的方法,其中,所述音频样本被过滤成16个频带。

76.根据权利要求70所述的方法,其中,最高频带不被调制,并且仅对所述16个频带中的不在听力范围之外的其他频带进行调制。

77.一种非暂时性计算机可读存储介质,包括一组能由处理器执行的计算机指令,用于指示计算机子带编码数据,所述计算机指令被配置为:

使用至少一个伪正交镜像滤波器(pqmf)将所述音频样本滤波到多个频带分量中;

使用自适应脉冲编码调制技术将所述多个频带分量调制成多个量化频带值;以及

使用逆自适应脉冲编码调制技术和至少一个逆伪正交镜像滤波器(ipqmf)将所述多个量化频带值中的零个或更多个解码为近似信号;

其中,所述子带编码装置生成包括由无损编码器编码的所述多个量化频带值、所述近似信号和多个编码量化频带值的输出。

78.根据权利要求77所述的非暂时性计算机可读存储介质,还包括计算机指令,其配置为:

在所述多个量化频带值中检测与音频方位数据相邻的预回声事件。

79.根据权利要求77所述的非暂时性计算机可读存储介质,其中,所述多个量化频带值包括预回声事件。

80.根据权利要求77所述的非暂时性计算机可读存储介质,其中,使用自适应脉冲编码调制(apcm)技术之一,并使用自适应差分脉冲编码调制(adpcm)技术对所述频带分量进行调制。

81.根据权利要求77所述的非暂时性计算机可读存储介质,其中,使用逆apcm技术和逆adpcm技术之一将所述多个量化频带值解码为所述近似信号。

技术总结

一种编码器,可操作地将音频信号滤波到多个频带分量中,为每个带生成量化数字分量,在生成的量化数字分量中识别预回声事件的可能性,通过使用逆脉冲编码调制对量化数字分量进行解码来生成近似信号,通过将近似信号与采样的音频信号进行比较来产生误差信号,并对误差信号和量化数字分量进行处理。该编码器可操作地通过处理延迟的音频信号和Q带值来处理误差信号,根据Q带值确定预回声事件的可能性,并为预回声事件的可能性确定比例因子和MDCT块大小。该编码器可操作地使用MDCT块大小将误差信号转换为高分辨率频率分量,量化比例因子和频率分量,并对量化后的行、块大小和量化比例因子进行编码以将其包含在比特流中。

技术研发人员:J·D·约翰斯顿;S·D·怀特;K·W·奥尔;B·M·基诺瓦

受保护的技术使用者:易默森网络公司

技术研发日:.03.08

技术公布日:.01.10

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。