在音频编码过程中根据 MDCT 数据进行视窗类型判定的方 法 本申请是申请日为 2004 年 9 月 20 日、 中国申请号 200480035333.2( 国际申请号 为 PCT/US2004/031024) 的题为 “在音频编码过程中根据 MDCT 数据进行视窗类型判定的方 法” 的发明专利申请的分案申请。
技术领域 本发明总体上涉及音频编码。更具体而言, 本发明涉及在音频编码过程中进行视 窗类型确定。
版权标记 / 许可
这篇专利文件的部分公开内容包含受版权保护的材料。 版权所有者不反对由出现 在专利商标局专利文档或记录中的专利文件或专利公开中的任何一种的影印复制, 但在别 的方面却无论如何保留所有版权。将以下通告应用于如下所述的及附图中的软件和数据 : Copyright 2001, Sony Electronics, Inc., All Rights Reserved。
背景技术 标准化机构运动图象专家组 (MPEG) 在他们的标准中公开了通用数据压缩方法, 例 如, 所 述 标 准 诸 如 是 MPEG-2 高 级 音 频 编 码 (AAC) 标 准 ( 参 见 ISO/IEC 13818-7) 和 MPEG-4AAC 标准 ( 参见 ISO/IEC 14496-3)。这些标准在此统称为 MPEG 标准。
MPEG 标准所定义的音频编码器接收音频信号, 通过修正离散余弦变换 (MDCT) 运 算将它转换成频谱数据, 并且利用失真率控制机制来判定用于量化频谱数据的最优比例因 子。音频编码器还利用最优比例因子来量化频谱数据, 将所得到的量化后的频谱系数编组 成比例因子带, 然后对编组的量化系数进行 Huffman 编码。
根据 MPEG 标准, 以使相邻变换值域沿时间轴重叠 50 %的方式对音频信号执行 MDCT, 以便抑制失真发生在相邻变换值域之间的边界部分上。另外, 利用长变换值域 ( 由长 视窗定义的 ) 或短变换值域 ( 每一个都是由短视窗定义的 ) 将音频信号映射到频率域中。 长视窗包括 2048 个样值, 而短视窗包括 256 个样值。从长视窗产生的 MDCT 系数的数目为 1024, 而从每一个短视窗产生的 MDCT 系数的数目为 128。 一般而言, 对于信号波形变化细微 的稳定部分, 需要使用长视窗类型。 对于信号波形变化剧烈的冲击部分, 需要使用短视窗类 型。使用其中哪一个是重要的。如果为瞬态信号使用长视窗类型, 则称作预回波的噪声发 生在冲击部分之前。 当为稳定信号使用短视窗类型时, 由于在频域中的分辩率缺乏、 编码效 率降低以及噪声出现, 同样也不能执行适当的比特分配。这种缺陷对于低频声音是格外显 著的。
根据 MPEG 标准所提出的方法, 对于频谱数据帧的视窗类型的确定始于对时域音 频数据执行快速傅里叶变换 (FFT) 以及计算 FFT 系数。然后使用 FFT 系数来计算所述帧 内的每个比例因子带的音频信号强度。同样, 利用音质建模来确定所述帧的可容许失真 级别。可容许失真级别表示能在不可听到的情况下被注入到频谱数据中的最大噪声量。
根据所述帧的可容许失真级别和该帧内的每个比例因子带的音频信号强度, 计算知觉熵 (perceptual entropy)。如果知觉熵大于预定常量, 则为所述帧使用短视窗类型。否则, 为 所述帧使用长视窗类型。
进行视窗类型确定的上述方法要进行大量的计算。 另外, 如果信号强度高, 则不论 所述信号是瞬态的还是稳定的, 所得到的知觉熵的数值都可能是高的。 也就是说, 即使所述 帧不处于转变中, 也可能给一帧指定短视窗类型。 正如上面所论述的那样, 这将导致编码效 率降低以及噪声出现。
此外, 如果判定使用短视窗类型, 则产生 MDCT 系数的 8 个连续块 ( 短视窗 )。为了 减少与短视窗相关联的辅助信息量, 可以将短视窗编组。每个群组都包括一个或多个连续 的短视窗, 其比例因子是相同的。然而, 当没有适当地执行编组时, 出现代码数量的增加或 音质的下降。当群组的数量相对于短视窗的数量而言过大时, 原本可以被共同编码的比例 因子将被重复编码, 由此使编码效率降低。 当群组的数量相对于短视窗的数量而言过小时, 即使是当音频信号变化剧烈时也使用公共比例因子。其结果是, 音质被降低。所述 MPEG 标 准未提供任何用于编组短视窗的特定方法。 发明内容
利用长视窗类型来为数据的当前帧和数据的下一帧来计算初级修正离散余弦变 换 (MDCT) 系数。然后, 使用所计算出的当前帧和下一帧的初级 MDCT 系数来确定当前帧的 视窗类型。如果所确定的视窗类型不是长视窗类型, 则利用所确定的视窗类型来为当前帧 计算最终 MDCT 系数。 附图说明 通过如下详细说明以及本发明各种实施例的附图, 将更充分地理解本发明, 然而 不应该将这些理解为将本发明限制到特定的实施例, 而是仅用来解释和帮助理解。
图 1 是编码系统的一个实施例的框图。
图 2 是对频谱数据帧执行 MDCT 的过程的一个实施例的流程图。
图 3 是视窗类型判定过程的一个实施例的流程图。
图 4 是用于检测帧当中从稳定信号到瞬态信号的转变的指示的过程的一个实施 例的流程图。
图 5 是用于根据下一帧的初级视窗类型和前一帧的视窗类型来确定当前帧的视 窗类型的过程的一个实施例的流程图。
图 6 是用于编组帧内的短视窗的过程的一个实施例的流程图。
图 7 是用于确定短视窗类型的过程的一个实施例的流程图。
图 8 是用于创建短视窗的两个初级群组的过程的一个实施例的流程图。
图 9 是用于执行短视窗的最终编组的过程的一个实施例的流程图。
图 10 举例说明了帧的短视窗的编组。
图 11 是适用于实施本发明的实施例的计算机环境的框图。
具体实施方式
在本发明实施例的下列详细说明中, 给附图加上了参考标记, 其中同样的参考标 记表示相似的元件, 并且附图中作为例子示出了可以实施本发明的特定实施例。这些实施 例被足够详细地描述以使本领域的技术人员能实施本发明, 而且将理解可以使用其它的实 施例并且在不偏离本发明的范围的情况下可以作出逻辑的、 机械的、 电学的、 功能性的及其它 的改变。因此, 下列详细说明不是一种限制, 而本发明的范围仅由所附的权利要求来限定。
从本发明的操作的概述起, 图 1 举例说明了编码系统 100 的一个实施例。所述编 码系统 100 不遵循在此统称为 MPEG 标准的 MPEG 音频编码标准 ( 例如, MPEG-2AAC 标准、 MPEG-4AAC 标准等等 )。所述编码系统 100 包括 : 滤波器组模块 102、 编码工具 104、 音质建 模器 106、 量化模块 110 和霍夫曼编码模块 114。
所述滤波器组模块 102 接收音频信号并且执行修正离散余弦变换运算 (MDCT) 以 将音频信号映射到频率域中。所述映射是利用长变换值域 ( 由长视窗定义的 ) 或短变换值 域 ( 由短视窗定义的 ) 来执行的, 在所述长变换值域中待分析信号在时间上扩展以提高频 率分辨率, 在所述短变换值域中待分析信号在时间上缩减以提高时间分辨率。在只有稳定 信号的情况下使用长视窗类型, 而当存在快速的信号变化时使用短视窗类型。通过根据待 分析信号的特性而使用这两个类型的操作, 就可以防止称作预回波的令人厌恶的噪声的产 生, 否则由于不充分的时间分辨率将产生预回波。 正如将在下面更详细论述的那样, 所述滤波器组模块 102 负责确定使用哪一个视 窗类型以及利用所确定的视窗类型来产生 MDCT 系数。在一个实施例中, 所述滤波器组模块 102 还可以负责在使用短视窗类型来产生 MDCT 系数时执行编组。 编组减少了与短视窗相关 联的辅助信息量。每一个群组都包括一个或多个连续的短视窗, 其比例因子是相同的。
所述编码工具 104 包括用于频谱处理的一组任选工具。例如, 所述编码工具可以 包括临时噪声整形 (TNS) 工具和预测工具以执行预测编码, 还包括强度 / 耦合工具和 MS 制 立体声 (M/S) 工具以执行立体声相关编码。
所述音质建模器 106 分析样值以确定听觉遮蔽曲线。听觉遮蔽曲线表示能在不可 听的情况下被注入到各个样值的每一个中的最大噪声量。在这点上, 什么是可听得到的是 基于人类听觉的音质模型的。听觉遮蔽曲线充当期望噪声谱的估计。
所述量化模块 110 负责为频率频谱数据选择最优比例因子。比例因子选择过程是 基于根据遮蔽曲线计算出的容许的失真和根据依据编码所规定的比特率计算出的可容许 比特数的。一旦选择了最优比例因子, 所述量化模块 110 就使用它们来量化频率频谱数据。 将所得到的量化后的频谱系数编组成比例因子带 (SFB)。每个 SFB 都包括由相同比例因子 的使用而产生的系数。
所述霍夫曼编码模块 114 负责为量化后的频谱系数的每一个群组选择最优霍夫 曼代码本并且利用最优霍夫曼代码本来执行霍夫曼编码操作。所得到的可变长度编码 (VLC), 标识在编码中使用的代码本的数据、 量化模块 110 所选的比例因子和一些其它信息 都是随后被汇编到比特流中的。
在一个实施例中, 所述滤波器组模块 102 包括视窗类型确定器 108、 MDCT 系数计算 器 112 和短视窗编组确定器 116。所述视窗类型确定器 108 负责确定为 MDCT 运算而使用的 视窗类型。 在一个实施例中, 正如将在下面更详细地论述的那样, 所述确定是利用适于使用
长视窗的视窗类型判定方法来作出的。
所述 MDCT 系数计算器 112 负责利用所确定的视窗类型来计算 MDCT 系数。在一个 实施例中, 所述 MDCT 系数计算器 112 首先利用假定的长视窗类型来计算初级 MDCT 系数。 然 后, 如果视窗类型确定器 108 确定将要使用的视窗类型不是长视窗类型, 则所述 MDCT 系数 计算器 112 就利用所确定的视窗类型来重新计算 MDCT 系数。否则, 初级 MDCT 系数就无需 被重新计算。
所述短视窗编组确定器 116 在使用短视窗类型时进行工作并且负责定义如何编 组短视窗。在一个实施例中, 所述短视窗编组确定器 116 根据与每个短视窗相关联的能量 来执行短视窗的初级编组, 将其划分为两个群组。 正如在下面将更详细地论述的那样, 如果 两个初级群组中的任何一个过大的话, 则就进一步将大的群组分成两个或多个群组。
图 2-9 是根据本发明的各种实施例的、 可以由图 1 的滤波器组模块 102 执行的过 程的流程图。 所述过程可以由处理逻辑来执行, 所述处理逻辑可以包括 : 硬件 ( 例如, 电路、 专用逻辑等等 )、 软件 ( 比如运行在通用计算机系统或专用机上的 ) 或者上述两者的组合。 对于软件实现的过程, 流程图的描述使本领域的技术人员能开发这种包含能在适当配置的 计算机 ( 执行来自于计算机可读介质的指令的计算机的处理器, 所述计算机可读介质包括 存储器 ) 上执行所述过程的指令的程序。计算机可执行指令可以用计算机程序设计语言来 编写或者可以嵌入在固件逻辑中。如果用遵循所标识的标准的程序设计语言进行编写, 则 可以在各种硬件平台上执行这类指令并且可以接口连接于各种操作系统。另外, 没有参考 任何特定程序设计语言来描述本发明的实施例。将会认识到的是, 可以使用各种程序设计 语言来实现这里所描述的教导。 此外, 说到采取动作或导致结果的软件, 可以采取一种形式 或其它的形式 ( 例如, 程序、 步骤、 过程、 应用、 模块、 逻辑…), 这是本领域所公知的。 这样的 表达仅仅是计算机执行软件令该计算机的处理器执行动作或产生结果的简述方式。 将会认 识到的是, 在不脱离本发明的范围的情况下, 可以将更多或更少的操作并入到图 2-9 中所 举例说明的过程当中, 而且这里所示出和所述的块的排列并不暗指特定的顺序。
图 2 是用于对频谱数据帧执行 MDCT 的过程 200 的一个实施例的流程图。
参照图 2, 处理逻辑始于计算当前帧的初级 MDCT 系数集合和下一帧的初级 MDCT 系 数集合 ( 处理块 202)。 计算是在假定当前帧和下一帧两者的视窗类型都为长视窗类型的情 况下执行的。所计算出的当前帧和下一帧的初级 MDCT 系数都被存储在缓冲器中。在一个 实施例中, 当前帧和下一帧是沿时间轴产生以使相邻帧彼此重叠 ( 例如, 50%重叠 ) 的样值 的帧序列 ( 也称为块 ) 中的两个相邻帧。所述重叠抑制了在相邻帧之间的边界部分上发生 的失真。
在处理块 204, 处理逻辑利用当前帧的初级 MDCT 系数和下一帧的初级 MDCT 系数来 确定当前帧的视窗类型。 所述视窗类型确定是利用适于使用长视窗的视窗类型判定方法来 作出的。下面将结合图 3 更详细地论述这类方法的一个实施例。
在判定框 206, 处理逻辑确定所判定的当前帧的视窗类型是否是长视窗类型。如 果不是, 则处理逻辑利用所判定的视窗类型来计算当前帧的最终 MDCT 系数集合 ( 处理块 208)。 如果是, 则处理逻辑考虑将当前帧的初级 MDCT 系数作为最终系数集合 ( 处理块 210)。
图 3 是视窗类型判定过程 300 的一个实施例的流程图。
参照图 3, 处理逻辑始于确定在下一帧中是否存在从稳定信号到瞬态信号的转变的指示 ( 判定框 302)。在一个实施例中, 这一确定是通过将与当前帧相关联的能量和与下 一帧相关联的能量相比较来作出的。下面结合图 4 来更详细地论述用于检测帧当中从稳定 信号到瞬态信号的转变的过程的一个实施例。
如果在判定框 302 确定为肯定的, 则处理逻辑就判定下一帧的初级视窗类型是短 视窗类型 ( 处理块 304)。否则, 处理逻辑判定下一帧的初级视窗类型是长视窗类型 ( 处理 块 306)。
此外, 处理逻辑根据下一帧的初级视窗类型和前一帧的视窗类型来确定当前帧的 视窗类型 ( 处理块 308)。当前帧的视窗类型的确定适于使用长视窗类型。在一个实施例 中, 其中正如 MPEG 标准所定义的那样, 每个不同的视窗类型后面可能跟着两个过渡视窗类 型, 处理逻辑选择使当前帧和后续帧中的短视窗的使用最小化的视窗类型。 也就是说, 所述 MPEG 标准提供了从每个不同视窗类型开始的两个过渡视窗类型, 其中一个过渡视窗类型允 许在当前帧或下一帧中使用短视窗, 而另一个过渡视窗类型允许在当前帧或下一帧中使用 长视窗。具体地说, 所述 MPEG 标准允许下列转变 :
a. 从长视窗类型到长视窗类型或者长 - 短视窗类型 ;
b. 从长 - 短视窗类型到短视窗类型或者短 - 长视窗类型 ; c. 从短 - 长视窗类型到长视窗类型或者长 - 短视窗类型 ; 和
d. 从短视窗类型到短视窗类型或短长视窗类型。
因此, 如果前一帧的视窗类型例如是短 - 长视窗类型并且下一帧的初级视窗类型 是长视窗类型, 则处理逻辑就为当前帧选择长视窗类型, 而不是选择其它的选项, 即方便下 一帧使用短视窗的长 - 短视窗类型。
下面将结合图 5 更详细地论述用于根据下一帧的初级视窗类型和前一帧的视窗 类型来确定当前帧的视窗类型的过程的一个实施例。
上述视窗类型判定方法与 MDCT 计算相结合, 直接对 MDCT 数据进行运算而不需要 快速傅里叶变换 (FFT) 运算和计算知觉熵。另外, 上述视窗类型判定方法适于使用长视窗, 由此使短视窗的使用最小化。 它只有当检测到从稳定信号到瞬态信号的转变的指示时才使 用短视窗。
图 4 是用于检测帧当中从稳定信号到瞬态信号的转变的指示的过程 400 的一个实 施例的流程图。
参照图 4, 处理逻辑始于计算当前帧的 MDCT 系数集合和下一帧的初级 MDCT 系数的 集合 ( 处理块 402)。然后, 处理逻辑在缓冲器中存储所计算出的 MDCT 系数集合。
在处理块 404, 处理逻辑利用所计算出的当前帧的初级 MDCT 系数来计算当前帧的 总能量。在一个实施例中, 按如下计算当前帧的总能量 :
current_total_energy = sum(current_coef[i]*current_coef[i]/C)for i = 0 to 1023,
其中 current_coef[i] 是当前帧中的第 i 个 MDCT 系数的数值, 而 C 是用来防止总 和溢出的常量 ( 例如, 对于 16 位寄存器, C = 32767)。
在处理块 406, 处理逻辑利用所计算出的下一帧的初级 MDCT 系数来计算下一帧的 总能量。同样, 按如下计算下一帧的总能量 :
next_total_energy = sum(next_coef[i]*next_coef[i]/C)for i = 0to 1023,
其中 next_coef[i] 是下一帧中的第 i 个 MDCT 系数的数值, 而 C 是用来防止总和 溢出的常量。
在处理块 408, 处理逻辑以对数方式缩放当前帧的总能量和下一帧的总能量。 在一 个实施例中, 所述缩放是按如下完成的 :
c_pow = log(current_total_energy) 和 n_pow = log(next_total_energy)。
在处理块 410, 处理逻辑通过将缩放后的下一帧的总能量减去缩放后的当前帧的 总能量来计算梯度能量。
在判定框 412, 处理逻辑确定梯度能量是否超出阈值 ( 例如, 1)。 在一个实施例中, 所述阈值是实验上定义的。如果在判定框 412 确定为肯定的, 则处理逻辑就判定在下一帧 中很可能发生到瞬态信号的转变 ( 处理块 414)。
图 5 是用于根据下一帧的初级视窗类型和前一帧的视窗类型来确定当前帧的视 窗类型的过程 500 的一个实施例的流程图。
参照图 5, 处理逻辑从确定下一帧的初级视窗类型是否是长视窗类型开始 ( 判定 框 502)。如果是, 则处理逻辑进一步确定前一帧的视窗类型是长视窗类型还是短 - 长视窗 类型 ( 判定框 504)。如果是, 则处理逻辑就判定当前帧的视窗类型是长视窗类型 ( 处理块 506)。如果不是, 则处理逻辑就判定当前帧的视窗类型是短 - 长视窗类型 ( 处理块 508)。
如果在判定框 502 确定为否定的, 即下一帧的初级视窗类型是短视窗类型, 则处 理逻辑进一步确定前一帧的视窗类型是长视窗类型还是短 - 长视窗类型 ( 判定框 510)。 如 果是, 则处理逻辑就判定当前帧的视窗类型是长 - 短视窗类型 ( 处理块 512)。 如果不是, 则 处理逻辑就判定当前帧的视窗类型是短视窗类型 ( 处理块 514)。
在一个实施例中, 如果判定为一帧使用短视窗类型, 则利用短视窗编组来减少与 短视窗相关联的辅助信息量。每个群组都包括一个或多个连续的短视窗, 其比例因子是相 同的。在一个实施例中, 关于编组的信息被包含在所指定的比特流元素当中。在一个实施 例中, 关于编组的信息包括帧内的群组数量和每一帧中的短视窗的数量。
图 6 是用于编组帧内的短视窗的过程 600 的一个实施例的流程图。
参照图 6, 处理逻辑从识别帧内的第一类型的短视窗和第二类型的短视窗开始 ( 处理块 602)。短视窗的类型是根据与这个视窗相关联的能量来确定的。下面将结合图 7 更详细地论述用于确定短视窗类型的过程的一个实施例。
在处理块 604, 处理逻辑调整其分类很可能不正确的短视窗的类型。 在一个实施例 中, 如果其类型不匹配相邻视窗的类型并且相邻视窗具有相同的类型, 则短视窗的分类很 可能是不正确的。在一个实施例中, 其中帧内短视窗的数量等于 8, 所述调整过程可以表示 为:
for win_i ndex 1 to 6
if(candidate[win_index_1] = candidate[win_index+1]),
candidate[win_index] = candidate[win_index-1], 其中 win_index 指的是帧内 的短视窗的号码, 而 candidate[win_index]、 candidate[win_index-1] 和 candidate[win_ index+1] 分别表示当前视窗、 前一视窗、 和下一视窗的类型。
在处理块 606, 处理逻辑将帧内的短视窗根据它们的类型编组成两个初级群组。 下 面将结合图 8 更详细地论述用于创建短视窗的两个初级群组的过程的一个实施例。在判定框 608, 处理逻辑确定任何初级群组中的短视窗的数量是否超出阈值数量。 在一个实施例中, 阈值数量是一个实验上确定的常量。 取决于阈值数量, 可能没有一个群组 是过大的, 或者一个或两个初级群组是过大的。 在另一个实施例中, 所述阈值数量是其它初 级群组中的短视窗的数量, 并且如果一个初级群组中的短视窗的数量超出其它初级群组中 的短视窗的数量则处理逻辑就判定它超出阈值。当使用比较时, 可能没有一个初级群组是 过大的, 或一个初级群组可能是过大的。 当群组过大时, 很可能它将具有不同特性的短视窗 组合起来。然后, 这个群组的公共比例因子的使用可能导致音质的下降。
如果处理逻辑在判定框 608 确定两个初级群组中的任何群组过大, 则处理逻辑就 进一步将大的初级群组划分成两个或多个最终群组 ( 处理块 610)。 按这样的方法来完成最 终群组, 以便群组数量能够实现编码效率和音质之间的平衡。下面将结合图 9 更详细地描 述用于执行短视窗的最终编组的过程的一个实施例。
在处理块 612, 处理逻辑根据最终群组来确定帧内的群组的数量以及每个群组中 的短视窗的数量。
图 7 是用于确定短视窗的类型的过程 700 的一个实施例的流程图。
参照图 7, 处理逻辑从计算帧内的每个短视窗的能量开始 ( 处理块 702)。在一个 实施例中, 按如下计算每个短视窗的能量 : win_energy[win_index] = log[sum(coef[i]*coef[i])+0.5], 其中 [win_index] 标识帧内的当前短视窗的号码, win_energy 是所得到的能量, 而 coef[i] 是短视窗内的第 i 个频谱系数。
接下来, 处理逻辑找到具有最小能量的短视窗 ( 处理块 704) 并且计算所述帧中的 每个短视窗的偏移能量值 ( 处理块 706)。在一个实施例中, 偏移能量值是通过将相应的短 视窗的能量减去最小能量而计算出的。
在处理块 708, 处理逻辑通过用所述帧内的所有偏移能量值的总和除以所述帧中 的短视窗数量来计算所述帧的平均偏移能量值。
在判定框 710, 处理逻辑为第一短视窗确定是否其偏移能量值超出平均偏移能量 值。如果是, 则处理逻辑判定该短视窗具有第一类型 ( 处理块 712)。如果不是, 则处理逻辑 判定该短视窗具有第二类型 ( 处理块 714)。
接下来, 处理逻辑确定在所述帧中是否有更多的未处理的视窗 ( 判定框 715)。如 果是, 则处理逻辑移动到下一个短视窗 ( 处理块 716) 并且前进至判定框 710。 如果不是, 则 过程 700 结束。
图 8 是用于创建短视窗的两个初级群组的过程 800 的一个实施例的流程图。
参照图 8, 处理逻辑从初始化一组变量开始 ( 处理块 802)。例如, 处理逻辑可以将 前一视窗类型变量的值设置为第一短视窗类型, 将初级群组数目变量的数值设置为 1, 并且 将第一初级群组长度变量的数值设置为 1。
接下来, 处理逻辑从所述帧中的第二短视窗起, 开始处理短视窗。具体地说, 处理 逻辑确定当前短视窗的类型是否与第一短视窗类型相同 ( 判定框 804)。如果是, 则处理逻 辑使第一初级群组长度增加 1( 处理块 806), 并且检查是否还有更多的短视窗仍未处理 ( 判 定框 808)。如果还有更多的短视窗仍未处理, 则处理逻辑移动到下一个短视窗 ( 处理块 810) 并且返回到判定框 804。如果没有还未处理的短视窗, 则过程 800 结束。
如果处理逻辑在判定框 804 确定当前短视窗的类型与第一短视窗的类型不同, 则 处理逻辑就将初级群组数目设置为 2( 处理块 812) 并且通过将短帧的总数量减去第一初级 群组的长度来计算第二初级群组的长度 ( 处理块 814)。
图 9 是用于执行短视窗的最终编组的过程 900 的一个实施例的流程图。过程 900 根据 MPEG 标准进行操作, 根据该标准所述帧中的短视窗的数量等于 8。
参照图 9, 处理逻辑从确定第一初级群组的长度是否超出阈值 ( 例如, 4) 开始 ( 判 定框 902)。如果是, 则处理逻辑进一步确定第一初级群组的长度是否等于 8( 判定框 904)。 如果是, 则处理逻辑将最终的群组数量设置为 2, 将第一最终群组的长度设置为第一初级群 组的长度, 并且将第二最终群组的长度设置为第二初级群组的长度 ( 处理块 906)。如果不 是, 则处理逻辑将群组的最终数量设置为 3( 处理块 908), 将第三最终群组的长度设置为第 二初级群组的长度 ( 处理块 910), 通过用初级第二群组的长度除以二来计算第二最终群组 的长度 ( 所述计算可以用 window_group_length[1] >> 1 来表示 )( 处理块 912), 并且通 过将第一初级群组的长度减去第二最终群组的长度来计算第一最终群组的长度 ( 处理块 914)。
如果处理逻辑在判定框 902 确定第一初级群组的长度没有超出阈值, 则它就进一 步确定第一初级群组的长度是否小于阈值 ( 判定框 916)。如果是, 处理逻辑将群组的最终 数量设置为 3( 处理块 917), 通过用第二初级群组的长度除以二来计算第三最终群组的长 度 ( 所述计算可以用 window_group_length[2] >> 1 来表示 )( 处理块 918), 通过从第二 初级群组的长度减去第三最终群组的长度来计算第二最终群组的长度 ( 处理块 920), 并且 将第一最终群组的长度设置为第一初级群组的长度 ( 处理块 922)。
如果处理逻辑在判定框 916 确定第一初级群组的长度不小于阈值, 则它就将群组 的数量设置为 2 并且将第一最终群组的长度设置为第一初级群组的长度并且将第二最终 群组的长度设置为第二初级群组的长度 ( 处理块 924)。
图 10 举例说明了帧的短视窗的编组的示例。
参照图 10, 正在编组的短视窗的类型被示出为 grouping_bits″ 11100011″。短 视窗的类型可以由图 7 的过程 700 来确定。根据短视窗的这些类型, 可以首先通过图 8 的 过程 800 将短视窗编组成两个初级群组, 由此创建具有 3 个短视窗的第一初级群组和具有 5 个短视窗的第二初级群组。接下来, 可以利用阈值数量 4 来执行图 9 的过程 900, 以进一 步将第二初级群组划分成两个群组。 其结果是, 创建了三个最终群组, 其中第一最终群组具 有 3 个短视窗, 第二最终群组具有 3 个短视窗, 并且第三最终群组具有 2 个短视窗。
图 11 的下列描述意在提供对适用于实现本发明的计算机硬件及其它工作的组件 的概述, 但是不意在限制应用环境。图 11 举例说明了适合用作为编码系统 100 或仅用作为 图 1 的滤波器组模块 102 的计算机系统的一个实施例。
所述计算机系统 1140 包括 : 处理器 1150、 存储器 1155 和耦合于系统总线 1165 的 输入 / 输出能力 1160。所述存储器 1155 被配置成能存储当由处理器 1150 执行时运行这 里所述的方法的指令。输入 / 输出 1160 还包含各种类型的计算机可读介质, 包括可由处理 器 1150 访问的任何类型的存储设备。 本领域的技术人员将会立即认识到 : 术语″计算机可 读媒体 / 介质″还包含编码数据信号的载波。还将认识到的是 : 所述系统 1140 是由存储 器 1155 中所执行的操作系统软件来控制的。输入 / 输出和相关介质 1160 存储用于操作系统的可执行指令以及本发明的方法。图 1 中所示的滤波器组模块 102 可以是耦合于处理器 1150 的独立组件或者可以由处理器 1150 所执行的计算机可执行指令加以具体化。在一个 实施例中, 所述计算机系统 1140 可以是 ISP( 因特网服务提供商 ) 的一部分或者通过输入 / 输出 1160 耦合于 ISP 以便在因特网上发送或接收图像数据。显而易见的是 : 本发明不限 于因特网访问以及因特网基于 Web 的站点 ; 还可以设想直接耦合的网络和专用网络。
将会认识到的是, 所述计算机系统 1140 是具有不同的体系结构的许多可能的计 算机系统中的一个例子。典型的计算机系统将通常至少包括 : 处理器、 存储器和将存储器 耦合于处理器的总线。本领域的技术人员将会立即认识到 : 可以利用其它计算机系统结构 来实施本发明, 包括多处理器系统、 微型计算机、 大型计算机等等。本发明还可以在分布计 算环境中实施, 在所述分布计算环境中任务是由通过通信网络链接的远程处理设备来执行 的。
已经描述了在音频编码过程中进行视窗类型确定的各种不同的方面。 尽管在这里 已经举例说明和描述了特定实施例, 但是本领域的技术人员将会认识到的是, 计算以达到 相同目的的任何方案都可以替代所示的特定实施例。 本申请意在涵盖本发明的任何修改或 变形。