基于空间元数据的音频分割的制作方法

文档序号:12288472阅读:308来源:国知局
基于空间元数据的音频分割的制作方法与工艺

本申请要求2014年4月25日提交的美国临时专利申请No.61/984634的优先权,该美国临时专利申请的全文通过引用并入这里。

技术领域

实施例总体上涉及自适应音频信号处理,并且更具体地涉及使用描述音频对象的运动的空间元数据对音频进行分割,以导出用于将对象渲染给离散的扬声器通道的下混矩阵。



背景技术:

新的专业和消费级视听(AV)系统(如的AtmosTM系统)已被开发,以使用包括音频床(通道)和音频对象两者的格式来渲染混合音频内容。音频床指的是要在预定义的、固定的扬声器位置处被再现的音频通道(例如,5.1或7.1环绕),而音频对象指的是在定义的持续时间上存在并具有描述各对象的位置、速度和大小(作为例子)的空间信息的单独的音频元素。在发送过程中,床和对象可以被分别发送,然后被空间再现系统使用以重新创建使用位于已知物理位置的可变数目的扬声器的艺术意图。基于创作系统的能力,可能有数十甚至上百个单独的音频对象(静态和/或时变的),该音频对象在渲染期间被组合以创建空间上变化多样和身临其境的音频体验。在一个实施例中,由系统处理的音频可包括基于通道的音频、基于对象的音频、或基于对象和通道的音频。音频包括指示音频被如何渲染以便在特定设备和收听环境上回放的元数据或者与该元数据相关联。一般而言,术语“混合音频”或“自适应音频”被用来指的是基于通道的和/或基于对象的音频信号加上元数据,该元数据通过使用其中对象的位置被编码为空间中的三维位置的音频流加元数据来渲染音频信号。

从而,自适应音频系统将声音场景表示为一组音频对象,其中每个对象包含指示声源的位置的时变元数据以及音频信号(波形)。通过传统扬声器设置(诸如7.1布置(或其它环绕声格式))的回放是通过将对象渲染给一组扬声器馈送来实现的。渲染的过程主要(或完全)包括在每个时刻将空间元数据转换成相应的增益矩阵,该增益矩阵表示每个对象馈送有多少到特定的扬声器。由此,在时间“t”(t)渲染“N”个音频对象到“M”个扬声器可以由长度“N”的向量x(t)乘以“M×N”矩阵A(t)来表示,该向量包含来自各对象的在时间t的音频样本,该矩阵A(t)是通过在时间t适当解释相关联的位置元数据(以及任何其他元数据,如对象增益)而构成的。所得到的在时间t的扬声器馈送的样本由向量y(t)来表示。这在下式1中示出:

上式1的矩阵方程表示一种自适应音频(例如,Atmos)渲染观点,但它还可以表示一组通用的情境,其中一组音频样本通过线性操作被转换为另一组音频样本。在极端的情况下,A(t)是静态矩阵,并可能表示一组音频通道x(t)到较少的一组通道y(t)的常规下混。例如,x(t)可能是在Ambisonics(高保真立体声)格式中描述空间场景的一组音频通道,并且到扬声器馈送y(t)的转换可被规定为乘以静态下混矩阵。作为替代,x(t)可以是用于7.1通道布局的一组扬声器馈送,并且到5.1通道布局的转换可以被规定为乘以静态下混矩阵。

为了尽可能准确地提供音频再现,自适应音频系统常常与高清晰度的音频编解码器(编码器-解码器)系统(诸如Dolby TrueHD)一起使用。作为这种编解码器的一个例子,Dolby TrueHD是支持音频信号的无损和可扩展发送的音频编解码器。源音频被编码成子流的层次结构,其中只有子流的子集需要被从比特流检索和解码,以便获得空间场景的较低维度(或下混)的表示,并且当所有的子流被解码时,所得的音频与源音频是相同的。尽管实施例可相对于TrueHD系统被描述并示出,但应当注意的是,任何其他类似的HD音频编解码系统也可以使用。因此,术语“TrueHD”意图包括所有可能的HD类型的编解码器。Dolby TrueHD以及其所基于的子午线无损压缩(MLP)技术是众所周知的。TrueHD和MLP的各方面在2003年8月26日发布的并且被转让给Dloby Laboratories Licensing Corp.的美国专利6611212中、以及在Gerzon等人的标题为“The MLP Lossless Compression System for PCM Audio”,J.AES,Vol.52,No.3,pp.243-260(2004年3月)中被描述。

TrueHD支持下混矩阵的规范。在典型的使用中,7.1通道音频节目的内容创作者指定了将7.1通道节目下混到5.1通道混合的静态矩阵、和下混该5.1通道下混到双通道(立体声)下混的另一个静态矩阵。每个静态下混矩阵可被转换为下混矩阵的序列(该序列中的每个矩阵用于下混节目中的不同的间隔),以便实现剪裁保护(clip-protection)。然而,序列中的每个矩阵被发送(或确定序列中的每个矩阵的元数据被发送)到解码器,并且解码器不对任何以前指定的下混矩阵执行插值来确定节目的下混矩阵的序列中的后续矩阵。

TrueHD比特流承载一组输出本原矩阵和通道分配,该组输出本原矩阵和通道分配应用于内部通道的适当子集来导出所需的下混/无损表示。在TrueHD编码器处,本原矩阵被设计为使得指定的下混矩阵可以通过输入通道分配、输入本原矩阵、输出本原矩阵和输出通道分配的级联来实现(或近似实现)。如果指定的矩阵是静态的,即,时不变的,也可以仅一次设计本原矩阵和通道分配,并在整个音频信号中采用相同的分解。然而,当希望经由TrueHD发送自适应音频内容,使得该比特流是分层的并且支持通过仅访问内部通道的适当子集导出数个下混时,指定的下混矩阵随着对象移动而随时间演化。在这种情况下,需要时变分解,并且一组通道分配将在所有时间都不工作(在给定时间的一组通道分配对应于在该时间的比特流中的所有子流的通道分配)。

TrueHD比特流中的“重启间隔(restart interval)”是音频的一个片段,该片段已被编码以使得其可以独立于在其之前或之后出现的任何片段被解码,也就是说,它是一个可能的随机访问点。TrueHD编码器将音频信号划分为连续的子段,每个子段被编码为重启间隔。重启间隔一般被约束为长度是8至128访问单位(access unit)(AUS)。访问单元(针对特定的音频采样频率定义的)是具有固定数量的连续样本的一个片段。在48kHz的采样频率下,TrueHD AU的长度为40个样本,或者跨越0.833毫秒。每个子流的通道分配可依照比特流语法中的约束对于每个重启间隔被仅指定一次。这样做的理由是将与可类似分解的下混矩阵相关联的音频分组到一个重启间隔内,并且受益于与(在重启内)每当下混矩阵被更新时不必发送通道分配相关联的比特流节省。

在传统TrueHD系统中,下混规范一般静态的,并且因此可以设想一个原型分解/通道分配可被采用以用于编码音频信号的整个长度。因此,重启间隔可被形成为尽可能大(128AUs),和音频信号被均匀地分成此最大尺寸的重启间隔。这在自适应音频内容必须经由TrueHD发送的情况下这不再可行,因为下混矩阵是动态的。换句话说,必须检查下混矩阵的随时间的演化和并且将音频信号划分成间隔(在该间隔上,单个通道分配可被采用以在整个子段中对指定的下混矩阵进行分解)。因此,有利的是在考虑下混矩阵轨迹的动态的情况下将音频分段为具有可能变化的长度的重启间隔。

目前的系统在分割音频时也没有使用自适应音频内容中的对象的空间线索。因此,还有利的是基于与自适应音频对象相关联的并且描述了这些对象的持续运动的空间元数据将音频分段,以便通过分立扬声器通道进行渲染。

在背景部分中所讨论的主题不应该仅仅由于其在背景技术部分提到而被认为是现有技术。同样地,不应假定在背景技术部分提到的或与背景部分的主题相关联的问题已经在现有技术中被认识到。在背景部分中的主题只是表示不同的方法,其本身也可以是发明。Dolby、Dolby TrueHD和Atmos为Dolby Laboratories Licensing Corporation的注册商标。



技术实现要素:

实施例针对一种方法,该方法通过接收N个对象以及相关联的描述这些对象的持续运动的空间元数据;以及基于所述空间元数据将所述音频划分成段,来编码自适应音频。空间元数据定义了时变矩阵轨迹,所述时变矩阵轨迹包括用于将N个对象渲染到M输出通道的在不同时刻的矩阵的序列,并且该划分步骤包括将矩阵的序列分成多个段。该方法进一步包括导出用于序列中的矩阵的矩阵分解,以及配置所述多个段以有助于包括矩阵分解参数的自适应音频的一个或多个特性的编码。该导出矩阵分解的步骤包括将序列中的矩阵分解为本原矩阵和通道分配,并且其中所述矩阵分解参数包括通道分配、本原矩阵通道序列、以及关于本原矩阵的插值决定。

该方法进一步包括配置分割矩阵的序列的所述多个段以使得一个或多个分解参数能够被在所述多个段上保持恒定;或者配置分割矩阵的序列的多个段,以使得在一个或多个分解参数中的任何变化的影响关于包括压缩效率、输出音频中的连续性、以及不连续性的可听度的一个或多个性能特性最小。

该方法的实施例还包括接收在t1的矩阵A(t1)的一个或多个分解参数,并且在强制使得分解参数与在时间t1的分解参数相同的同时尝试执行在t2的相邻矩阵A(t2)到本原矩阵和通道分配的分解,其中如果所产生的本原矩阵不满足一个或多个标准,则尝试的分解被认为是失败的,否则尝试的分解被认为是成功的。定义分解失败的标准包括以下中的一个或多个:从分解得到的本原矩阵具有其值超过由结合所述方法的信号处理系统规定的限值的系数;作为本原矩阵和通道分配的乘积获得的所实现的矩阵与指定的矩阵A(t2)的差别超过定义的阈值,其中所述差别是由至少依赖于所实现的矩阵和指定的矩阵的误差度量测量的;并且所述编码方法包含将本原矩阵和通道分配中的一个或多个应用于所述输入音频的时间段,并且作为结果的峰值音频信号的测度在分解例程中被确定,并且所述测度超过可在执行所述方法的信号处理系统中表示的最大音频样本值。该误差度量是所实现的矩阵和指定的矩阵A(t2)的对应元素之间的最大绝对差。

根据该方法,一些本原矩阵被标记为输入本原矩阵,并且输入本原矩阵的积矩阵被计算,并且对于积矩阵的一个或多个行确定峰值信号的值,其中一个行的峰值信号的值是积矩阵的该行中的元素的绝对值的总和,并且作为结果的峰值音频信号的测度被计算为这些值中的一个或多个的最大值。在分解失败的情况下,分段边界在时间t1或t2被插入。在A(t2)的分解是成功的情况下,并且其中,本原矩阵中的一些是输入本原矩阵,通道分配是输入通道分配,在t1和t2的输入本原矩阵的本原矩阵通道序列以及在t1和t2的输入通道分配是相同的,并且插值斜率参数被确定以用于在t1和t2之间对输入本原矩阵进行插值。

在该方法的实施例中,A(t1)和A(t2)是在时刻t1和t2定义的矩阵中的矩阵,并且该方法进一步包括:将A(t1)和A(t2)两者分解为本原矩阵和通道分配;将在t1与t2的本原矩阵中的至少一些标识为输出本原矩阵;在t1和t2之间插值本原矩阵中的一个或多个;在所述编码方法中通过由插值将本原矩阵应用于输入音频来导出N个输入通道的M通道下混;确定所导出的M通道下混是否剪裁;以及在t1和/或t2修改输出本原矩阵,从而将修改的本原矩阵应用于N个输入通道得到了不剪裁的M通道下混。

在实施例中,本原矩阵和通道分配被编码在高清晰度音频格式的比特流中,该比特流在音频处理系统的编码器和解码器之间发送,所述音频处理系统用于将N个对象渲染到对应于M个通道的扬声器馈送。该方法进一步包括在解码器中解码所述比特流,以将所述本原矩阵和通道分配应用于一组内部通道以导出输入音频节目的无损表示和一个或多个下混表示,并且其中,所述内部通道位于音频处理系统中的编码器和解码器的内部。该子段是可具有相同或不同的时间段的重启间隔。

实施例进一步针对执行或者体现执行或者实现上述方法行为的处理命令的系统和制品。

援引并入

在本说明书中提及的每个出版物、专利和/或专利申请以如同每个单独的出版物和/或专利申请被具体和单独地表明通过引用并入那样的程度通过引用整体并入这里。

附图说明

在以下附图中,同样的附图标记被用来指代同样的元件。虽然下面的附图描绘了各种示例,但是一个或多个实现不限于在附图中描述的示例。

图1示出用于特定下混场景的高清晰度的音频编码器和解码器中的矩阵运算的示意图。

图2示出根据一些实施例的将自适应音频内容的N个通道混合成TrueHD比特流的系统。

图3是根据实施例的用于内插矩阵化方案中的动态对象的示例。

图4是示出根据实施例的用于时变对象的矩阵更新的示图,其中,在时间t2有连续的内部通道,并在时间t2有连续的输出表示,而没有可听/可见的假象。

图5是示出根据实施例的用于时变对象的矩阵更新的示图,其中,由于输入本原矩阵中的不连续性而在t2有不连续的内部通道,并且在时间t2有连续的输出表示,而没有可听/可见的假象,但是,输入矩阵中的不连续性被输出矩阵中的不连续性补偿。

图6示出了根据实施例的包括编码器和解码器的自适应音频TrueHD系统的概括。

图7是示出了根据实施例的产生输出比特流以用于音频分段处理的编码器处理的流程图。

图8是根据实施例的音频数据处理系统的框图,该音频数据处理系统包括执行音频分段和编码处理、并且通过输送子系统耦合到解码器的编码器。

具体实施方式

描述了用于在考虑了下混矩阵轨迹的动态的同时将自适应音频内容分割为具有可能变化的长度的重启间隔的系统和方法。本文所描述的一个或多个实施例的方面可以在音频或视听(AV)系统中实现,该系统在包括执行软件指令的一个或多个计算机或处理装置的混合、渲染和回放系统中处理源音频信息。任何所述实施例可以单独使用,或以任意组合彼此一起使用。虽然各种实施例可能已经被可在说明书中一个或多个位置处被讨论或提及的现有技术的各种缺陷激发,但是实施例并不一定解决任何这些缺陷。换句话说,不同的实施例可以解决可能在本说明书中讨论的不同的缺陷。一些实施例可仅部分地解决可在本说明书中讨论的一些缺陷或仅一个缺陷,并且一些实施例可能不解决这些缺陷。

实施例涉及通过使用含有下混矩阵和通道分配的高清晰度音频(例如,TrueHD)格式发送自适应音频内容的编码器/解码器系统中使用的音频分段和编码处理。图1示出用于具有被封装成两个子流104和106的三个输入通道的输入音频信号的下混系统的示例,其中,第一子流足以检索本原三个通道的双通道下混,并且这两个子流一起使得能够无损地检索本原的三通道音频。如图1所示,编码器101和解码器侧103对于输入流102执行矩阵化运算,输入流102包含分别产生无损或下混输出104和106的被指示为子流1和子流0的两个子流。子流1包括矩阵序列P0,P1,…,Pn和通道分配矩阵ChAssign1;和子流0包含矩阵序列Q0,Q1,…,Qn和通道分配矩阵ChAssign0。子流1再现本原输入音频的无损版本作为输出106,以及子流0产生下混表示106。下混解码器可以仅解码子流0。

在编码器101,三个输入通道通过(输入)矩阵化运算的序列被转换成三个内部通道(索引0,1和2)。解码器103通过应用另外的(输出)矩阵化运算的序列将内部通道转换为所需要的下混106或无损104表示。简单地说,音频(例如,TrueHD)比特流中包含这三个内部通道以及一组输出矩阵的表示,各输出矩阵对应于各子流。例如,子流0包含输出矩阵Q0,Q1的集合,输出矩阵Q0,Q1中的每一个尺寸为2*2和乘以前两个内部通道(ch0和ch1)的音频样本的向量。这些与在这里由名为“ChAssign0”的框表示的相应的通道置换(等同于乘以置换矩阵)组合,得到所需要的三个本原音频通道中的两个通道下混。在编码器和解码器处的矩阵化运算的序列/乘积等同于将三个输入音频通道变换到下混的所需的下混矩阵规范。

子流1的输出矩阵(P0,P1,…,Pn)连同相应的通道置换(ChAssignl)一起导致将内部通道转换回输入三通道音频。为了使输出的三通道音频与输入的三通道音频完全相同(系统的无损特性),在编码器处的矩阵化运算应当正好(包括量化效应)为比特流中的无损子流的矩阵化运算的逆。因此,对于系统100,在编码器处的矩阵化运算已经描述为在相反的序列中的逆矩阵此外,请注意,编码器通过在编码器侧的“InvChAssignl”(逆通道分配1)应用在解码器处的通道置换的逆。对于图1的示例系统100,术语“子流”被用于包括对应于给定表示(例如,下混或无损表示)的通道分配和矩阵。在实际应用中,子流0可具有前两个内部通道(0:1)中的样本的表示,而子流1将具有第三内部通道(0:2)中的样本的表示。从而,解码对应于子流1的表示(无损表示)的解码器将必须将这两个子流进行解码。然而,仅产生立体声下混的解码器可以单独解码子流0。在这种方式下,TrueHD格式可按所得到的表示的大小扩展或分层。

给定下混矩阵规范(例如,在这种情况下,它可能是尺寸为2*3的静态规范A),编码器的目标是设计输出矩阵(因此输入矩阵),并输出通道分配(因此输入通道分配),从而使所得到的内部音频是分层次的,即,前两个内部通道足以导出双通道表示,等等;并且最顶部的子流的矩阵是完全可逆的,使得输入音频完全可恢复。然而,应该指出的是,计算系统以有限的精度进行计算以及对任意可逆矩阵进行精确求逆经常需要非常大的精度计算。因此,使用TrueHD编解码器系统的下混操作一般需要大量的比特来表示矩阵系数。

如前所述,TrueHD(和其他可能的HD音频格式)尝试通过将任意可逆矩阵约束为本原矩阵以使得矩阵求逆的精度要求最小。尺寸为N*N的本原矩阵P具有下式2中所示的形式:

除了一个行(非平凡行)之外,此本原矩阵与尺寸为N*N的单位矩阵相同。当本原矩阵(例如P)操作于或者乘以诸如x(t)的向量,则结果是乘积Px(t),除了1之外所有元素都与x(t)正好相同的另一N维向量。因此每个本原矩阵可以与唯一的通道相关联,操纵该通道或者对于该通道操作。本原矩阵仅改变音频节目通道的样本的集合(向量)中的一个通道,和单位本原矩阵也由于对角线上的单位值而无损可逆。

如果α2=1(导致P中的单位对角线),则可以看出P的逆正如下式3中所示:

如果图1的解码器中的本原矩阵P0,P1,…,Pn具有单位对角线,则编码器侧的矩阵化运算和解码器侧的P0,P1,…,Pn的序列可以通过有限精度电路被实现。如果α2=-1,则可以看到,P的逆是本身,并且还在此情况下,该逆可以通过有限精度电路来实现。本描述将把非平凡行与对角线共用的元素为1或-1的本原矩阵称为本原矩阵。因此,单位本原矩阵的对角线由全正1(+1)、或者全负1、(-1)、或者一些正1和一些负1构成。尽管单位本原矩阵指的是其非平凡行具有对角元素+1的本原矩阵,但是文中(包括在权利要求中)对于单位本原矩阵的所有引用意图覆盖更一般的情况,其中单位本原矩阵可具有非平凡行,该非平凡行与对角线的共用元素为+1或-1。

通道分配或通道置换指的是通道的重新排序。N个通道的通道分配可以由N个索引的向量cN=[c0 c1 … cN-1],ci∈{0,1,...,N-1}以及ci≠cj if i≠j来表示。换句话说,通道分配向量含有依照一些特定的顺序的元素0,1,2,...,N-1,没有重复的元素。向量指示原始通道将会被重新映射到位置ci。很明显,在时间t将通道分配cN应用于一组N个通道可以由与N*N置换矩阵[1]CN的乘法,该置换矩阵的列i是具有N个元素的向量,其中除了在行ci中为1之外全部为0。

例如,被应用于一对通道Ch0和Ch1的2元素的通道分配矢量[10]暗指在重新映射之后的第一通道Ch0'是原始Ch1,而在重新映射之后的第一通道Ch1'是原始Ch0。这可通过二维置换矩阵表示,该二维置换矩阵应用于向量时得到向量在向量中,x0是Ch0的样本而x1是Ch1的样本,矢量中的元素是原始向量的置换版本。

应注意,置换矩阵的逆存在,是独特的,并且其本身是置换矩阵。事实上,置换矩阵的逆是其转置。换句话说,通道分配cN的逆通道分配是唯一的通道分配d ... d0 d1 … dN-1],其中如果cj=i,则di=j使得dN在应用于置换的通道时恢复了通道的原始顺序。

作为示例,考虑图1A的系统100,其中编码器被赋予2*3下混规范:

使得

其中,dmx0和dmx1是解码器的输出通道,ch0,、ch1和ch2为输入通道(例如,对象)。在这种情况下,编码器可能会发现三个单位本原矩阵(如下所示)以及给定的输入通道分配d3=[2 0 1],该给定的输入通道分配限定了置换D3,从而序列的乘积如下:

如在上面的例子中可以看出,该乘积的前两行正好是指定的下混矩阵A。换句话说,如果这些矩阵的序列被应用于三个输入音频通道(ch0,、ch1和ch2),则该系统产生三个内部通道(ch0’,、ch1’和ch2’),前两个通道正好与所希望的2通道下混相同。在这种情况下,编码器可以选择下混子流的输出本原矩阵Q0、Q1为单位矩阵,并且选择该两通道分配(图1中的ChAssign0)为单位分配[0 1],即,解码器将简单将前两个内部通道表示为该双通道下混。将应用由P0,P1,P2给出的本原矩阵的逆应用于(ch0’,、ch1’和ch2’),然后应用由c3=[1 2 0]给出的通道分配d3的逆以获得原始输入音频通道(ch0,、ch1和ch2)。此示例表示第一分解方法,被称为“分解1”。

在被称为“分解2”的不同的分解中,该系统可以使用两个单位本原矩阵(如下所示)和定义了置换D3的输入通道分配d3=[2 1 0],使得该序列的乘积如下:

在这种情况下,应注意,所需的规范A可以通过上述序列的前两行与被选择为Q0、Q1的两个通道子流的输出本原矩阵相乘来实现,如下:

不同于原始分解1中,编码器通过设计输入和输出本原矩阵的组合来实现所需的下混规范。编码器将输入的本原矩阵(和通道分配d3)应用于输入音频通道,以创建在比特流中发送的一组内部通道。在解码器处,内部通道被重构,并且输出矩阵Q0、Q1被应用以获得所需的下混音频。如果需要无损原始音频,由P0、P1给定的本原矩阵的逆被应用于内部通道,然后是由c3=[2 1 0]给定的通道分配d3的逆,以获得原始输入音频通道。

在上述第一和第二分解两者中,该系统还没有采用对于下混子流使用输出通道的灵活性,这是在所需的规范A的分解中可被利用的另一自由度。因此,不同分解策略可被使用以实现相同规范A。

上述本原矩阵技术的各方面可被用于混合(上混或下混)TrueHD内容以便在不同的收听环境中渲染。实施例针对如下的系统和方法,使得能够通过子流结构经由TrueHD发送自适应音频内容,该子流结构支持由传统设备解码一些标准下混如2通道,5.1通道,7.1通道,而对于解码无损自适应音频的支持可仅在新的解码设备中实现。

应当指出的是,传统的设备为任何如下这样的设备,该设备解码已经嵌入TrueHD中的下混表示,而不是解码无损对象并然后将他们重新渲染到所需的下混配置。该设备可以实际上是不能对无损对象进行解码的较旧的设备,或者它可以是有意选择以对下混表示进行解码的设备。传统设备可能已被典型地设计成接收为较旧的或传统的音频格式的内容。在Dolby TrueHD中,传统内容的特征在于结构良好的时不变下混矩阵,具有至多八个输入通道,例如,标准的7.1通道到5.1通道降混矩阵。在这样的情况下,矩阵分解是静态的,并且需要由编码器对整个音频信号仅确定一次。另一方面,自适应音频内容的特征往往在于连续变化的下混矩阵,该下混矩阵也可以非常任意,并输入通道/对象的数目一般较大,例如,在杜比TrueHD的Atmos版本中多达16个。从而,下混合矩阵的静态分解通常不足以在TrueHD格式中表示自适应音频。某些实施例覆盖TrueHD格式所需的给定下混矩阵到本原矩阵的分解。

图2示出根据一些实施例的将自适应音频内容的N个通道混合成TrueHD比特流的系统。图2示出含有四个子流的TrueHD流的编码器侧206和解码器侧210矩阵化,三个导致可由传统的解码器解码的下混,一个用于再现被较新的解码器解码的无损原始。

在系统200中,N个输入音频对象202都经受编码器侧矩阵化处理206,其包括输入通道分配处理204(invchassign3,逆通道分配3)和输入本原矩阵这产生了在比特流中编码的内部通道208。内部通道208然后被输入到解码器侧矩阵化处理210,其包括子流212和214,该子流包含输出本原矩阵和输出通道分配(chAssign0-3),以便以不同的下混(或上混)表示中的每一个产生输出通道220-226。

如在系统200中所示的,用于自适应音频内容的N个音频对象202在编码器中被矩阵化,以在四个子流中生成内部通道208,可由其通过传统设备来得出以下下混:(1)原始内容的8通道(即,7.1通道)下混222,(b)(a)的6通道(即5.1通道)下混224,以及(c)(b)的双通道下混226。对于图2的例子,8通道、6通道和双通道表示需要通过传统设备被解码,输出矩阵S0,S1,R0,…,Rl以及Q0,...,Qk需要为可以通过传统设备来解码的格式。因此,用于这些表示的子流214根据传统的语法被编码。另一方面,产生输入音频的无损重建220所需的并且在编码器中使用它们的逆的子流212的矩阵P0,...,Pn可能为可能仅由新TrueHD解码器解码的新格式。而且在内部通道之间,可能需要由传统设备使用的前八个通道遵从传统设备的约束被编码,而剩余的N-8个内部通道可被以更大的灵活性来编码,因为它们仅被新解码器访问。

如图2所示,子流212可对于新的解码器被以新的语法编码,而子流214可对于对应的传统解码器以传统的语法被编码。作为一个例子,对于传统子流语法,本原矩阵可以被约束为具有最大系数2,逐步更新,即不能进行插值、以及矩阵的参数,诸如本原矩阵运算其上的哪些通道可在每次矩阵系数更新时必须被发送。内部通道的表示可以通过24位的数据通路。对于自适应音频子流的语法(新语法),本原矩阵可有较大范围的矩阵系数(最大系数128)、更新之间的经由插值斜率的规范的连续变化、以及对于矩阵参数的高效传输的语法重构。内部通道的表示可以通过32位的数据通路。依赖于系统的约束和要求,其他语法定义和参数也是可能。

如上所述,将一组自适应音频对象变换/下混到诸如7.1(或其他传统的环绕声格式)的固定扬声器布局的矩阵是动态矩阵,如随时间连续变化的A(t)。然而,传统TrueHD技术一般只允许以定期的时间间隔更新矩阵。在上面的示例中,输出(解码器侧)矩阵210 S0,S1,R0,…,Rl以及Q0,...,Qk可能只能被断续地更新,而不能立即改变。另外,希望不过于频繁地发送矩阵更新,因为此辅助信息招致显著的附加数据。相反,优选地是在矩阵更新之间进行插值来近似连续路径。一些传统格式(例如,TrueHD)对于该插值没有规定,然而,该插值可被容纳在与新TrueHD解码器相容的比特流语法中。因而,在图2中,矩阵P0,…,PN以及在编码器应用的它们的逆可能被进行时间插值。在编码器处的被插值的输入矩阵206的序列和在下混子流中的未被插值的输出矩阵210然后将实现连续的时变下混规范A(t)或其近似。

图3是根据实施例的在插值矩阵化方案中使用的动态对象的示例。图3示出两个对象的Obj V和的Obj U,以及渲染到立体声(L,R)的床C。两个对象是动态的,并且从在时间t1的各自的第一位置移动到在时间t2的各自的第二位置。

在一般情况下,基于对象的音频的对象通道指示指示音频对象的样本的序列,并且节目通常包括指示各对象通道的轨迹或对象位置的空间位置元数据值的序列。在本发明的典型实施例中,对应于节目的对象通道的位置元数据值的序列被用于确定指示节目的时变增益规范的M×N矩阵A(t)。在时间t将N个对象渲染到M个扬声器可由长度为“N”的向量x(t)与M×N矩阵A(t)的乘法表示,该向量x(t)包含来自每个通道的在时间“t”的音频样本,该矩阵A(t)由在时间t的相关联的位置元数据(以及可选的对应于要被渲染的音频内容的其他元数据,例如,对象增益)确定。所得到的在时间t的扬声器馈送的值(例如,增益或水平)可以表示为向量y(t)=A(t)*x(t)。

在时变对象处理的示例中,考虑图1所示的系统具有三个自适应音频对象为三通道输入音频。在这种情况下,双通道下混需要是传统的兼容下混(即,立体声2ch)。图3的用于对象的下混/渲染矩阵可表示为:

在这个矩阵中,第一列可以对应于被相等地馈送到L和R通道的床通道(例如,中央通道,C)的增益。第二和第三列则对应于U和V对象通道。第一行对应于2ch下混的L通道,第二行对应于R通道,如图3所示,所述对象正以某一速度相向地移动。在时间t1,自适应音频至2ch下混规范可以由下式给出:

对于本规范,通过如上所述地对于分解1方法选择输入本原矩阵,双通道子流的输出矩阵可以是单位矩阵。随着对象从t1到t2来回移动(例如,15个存取单位之后或在15*T样本之后,其中T是存取单位的长度),自适应音频至2ch规范演变成:

在这种情况下,输入本原矩阵给定为:

因此,该序列的前两行是所需的规范。因而,该系统甚至在时间t2仍可继续使用双通道子流中的单位输出矩阵。此外注意,单位本原矩阵的对(P0,Pnew0)、(P1,Pnew1)和(P2,Pnew2)对于相同的通道进行运算,即它们具有相同的非平凡行。因此,可以计算这些本原矩阵之间的差别或者Δ为无损子流中的原始矩阵的每个访问单元的变化率,如下:

音频节目渲染系统(例如,实现这样的系统的解码器)可在节目期间仅断续地接收确定渲染矩阵A(t)的元数据(或者它可以接收该矩阵本身),而不是在每一时刻t都接收。例如,这可能是由于多种原因中的任一原因,例如实际输出元数据的系统的低时间分辨率或限制该节目的数据传输比特率的需求。因此,希望渲染系统在分别在时刻t1和t2的渲染矩阵A(t1)和A(t2)之间进行插值,以获得用于中间时刻t’的渲染矩阵A(t')。插值一般确保被渲染的扬声器馈送中的对象的感知位置随时间平滑地变化,并且可以消除源自不连续(分段式)矩阵更新的伪像。插值可以是线性(或非线性),并且通常应确保从A(t1)到A(t2)是连续路径。

在实施例中,由编码器在t1和t2之间的任何中间时刻应用的本原矩阵是通过插值导出的。由于下混子流的输出矩阵保持恒定,如同单位矩阵,在t1和t2之间的给定时间t实现的下混式可作为以下乘积的前两行被导出:

因此,时变规范是如下这样实现的:不是对双通道子流的输出矩阵进行插值,而是仅对与自适应音频表示相对应的无损子流的本原矩阵进行插值。这是由于以下原因实现的:规范A(t1)和A(I2)被分解成一组输入本原矩阵,其在相乘时包含作为该行的子集的所需的规范,因此允许下混子流的输出矩阵为恒定单位矩阵。

在实施例中,矩阵分解方法包括如下算法,该算法将M*N矩阵(如2*3规范A(t1)或A(t2))分解成通道分配(例如d3)和N*N本原矩阵的序列(诸如,上述示例中的3*3本原矩阵或),使得通道分配和本原矩阵的序列的乘积包含M行,该M行与指定的矩阵非常接近或完全相同。一般地,此分解算法允许输出矩阵保持恒定。然而,即使情况并非如此,它仍形成有效分解策略。

在实施例中,矩阵分解方案涉及矩阵旋转机制。作为示例,考虑将被称为“旋转”的2*2矩阵Z:

该系统通过将旋转Z应用于A(t1)和A(t2)来构造两个新的规范B(t1)和B(t2):

B(t1)的行的12范数(元素的平方根之和)为单位元素,而这两行的点积为零。因此,如果设计输入本原矩阵和通道分配来精确地实现规范B(t1),那么如此设计的本原矩阵和通道分配应用于输入音频通道(ch0,ch1和ch2)将导致不太大的两个内部通道(ch0’和ch1’)即功率被限界。此外,如果输入通道在开始时非常不相关,则这两个内部通道(ch0’和ch1’)可能非常不相关,这通常是对象音频的情况。这导致改进的内部通道至比特流的压缩。

类似地,

在这种情况下,行是相互正交的,但是各行不是单位范数。另外,输入本原矩阵和通道分配可以使用上述的实施例被设计,其中M*N矩阵分解为N*N本原矩阵的序列和通道分配,以生成正好是或者几乎正好是指定的矩阵的含有M行的本原矩阵。

然而,希望的是所实现的下混在时间t1对应于规范A(t1),并且在时间t2对应于A(t2)。因此,从两个内部通道(ch0’和ch1’)导出双通道下混需要乘以Z-1。这可以通过设计输出矩阵如下来实现:

由于相同的旋转z在两个时刻被应用,因此相同的输出矩阵Q0、Q1可以由解码器在时间t1和t2被应用于内部通道,以分别获得所需的规范A(t1)和A(t2)。这样,输出矩阵已被保持恒定(但是它们根本不是认为单位矩阵),且与其它实施例相比,具有改进的压缩和内部通道限制的附加的优点。

作为另一示例,考虑在图2的四个子流示例中所需的下混的序列。设7.1ch到5.1ch下混矩阵如下:

5.1ch到2ch下混矩阵是公知矩阵:

在这种情况下,被应用于A(t)的旋转Z、时变自适应音频到8ch下混矩阵,可被定义为:

Z的前两行形成A2和A1的序列。接下来的四个行形成A1的后四排。最后两行已被选为单位行,因为它们使Z满秩且可逆。

可以示出,每当Z*A(t)为满秩[1](秩=8)时,如果输入原始矩阵和通道分配是使用本发明的第一方面设计成使得Z*A(t)被包含在分解的前8行中,则:

(a)前两个内部通道正好形成该双通道表示,并且图2中的子流0的输出矩阵S0,S1简单地是单位矩阵,因此在时间上是恒定的。

(b)进一步地,六通道下混可以通过应用恒定(但非单位)输出矩阵R0,…,Rl来获得。

(c)八通道下混可以通过应用恒定(但非单位)输出矩阵Q0,…,Qk来获得。

因此,当采用这样的实施例来设计输入本原矩阵时,旋转Z有助于实现TrueHD的层次结构。在某些情况下,可能希望支持由下混矩阵(从上到下)尺寸为M1×M0的A1,…,尺寸为Mk×Mk-1的Ak,…k<K的序列规定的K个矩阵的序列。换句话说,该系统能够支持在单个TrueHD比特流中的输入音频的线性变换的下列层次结构:A0,A1×A0,…,Ak×…M1×M0,k<K,其中,A0是尺寸为M0×N的最上面的下混。

在实施例中,矩阵分解方法包括设计L×M0旋转矩阵Z的算法,该旋转矩阵Z将被应用于最上面的下混规范A0,使得(1)Mk通道下混(对于k{0,1,…,K-1})可以通过L×N旋转规范Z*A0的Mk或L行中的较小者的线性组合而获得,并且以下中的一个或多个可被另外实现:旋转规范的行具有低相关性;旋转规范的行具有小的范数/限制内部通道的功率;旋转规范应用于到本原矩阵的分解导致可在TrueHD比特流语法的约束内表示的小系数;旋转规范使得能够分解为输入本原矩阵和输出本原矩阵,从而所需的规范和所实现的规范(设计矩阵的序列)之间的总体误差小;并且同样的旋转在被应用于时间上连续的矩阵规范可能导致在不同时刻的本原矩阵之间的小差异。

矩阵分解方法的一个或多个实施例通过在基于处理器的计算机上执行的一个或多个算法实现。第一算法或第一组算法可实现M*N矩阵分解为N*N本原矩阵的序列和通道分配,也被称为矩阵分解方法的第一方面,并且第二算法或第二组算法可以实现设计将应用于在由下混矩阵的序列规定的下混序列中的最上面的下混规范的旋转矩阵Z,也被称为矩阵分解方法的第二个方面。

对于下文描述的算法,提供了以下的前言和注释。对于任何数x,定义了:

对于任何向量x=[xC ... xm],定义了:

abs(x)=[abs(x0) ... abs(xm)]

对于任何M×N矩阵X,X的行自上而下被标记为0到M-1,并且列自左到右被标记为0到N-1,并且X的i行、j列的元素为xij

X的转置被指示为XT。设u=[u0 u1 ... ul-1]是从0到M-1拣选的l个索引的向量,而v=[v0 … ·· vk-1]是从0到N-1拣选的k个索引的向量。X(u,v)指示其元素的l×k矩阵Y,即Y或X(u,v)是通过从X选择索引为u的行且索引为v的列而形成的矩阵。

如果M=N,则X的行列式[1]可被计算并且被指示为det(X)。矩阵X的秩被指示为rank(X),并且小于或等于M和N中的较小者。给定N个元素的向量x以及通道索引c,操作通道c的本原矩阵P由用x替换N×N单位矩阵的行c的prim(x,c)构造。

在实施例中,如下地提供第一方面的算法(算法1):设A是M×N矩阵,其中M<=N,并且设rank(A)=M,即A是满秩的。算法确定尺寸为N×N的单位本原矩阵P0,P1,…,Pn以及通道分配dN,使得元素积..t:Pn×…×P1×P0×DN在其中包含匹配A的行的M个行,其中DN是对应于dN的置换矩阵。

(A)初始化:f=[0 0 ...· 0]1×M,e={0,1,..,N-1},B=A,P={}

(B)确定单位本原矩阵:

在(sum(f)<M)时{

(1)r=[],c=[],t=0;

(2)确定rowsToLoopOver

(3)确定行组r以及对应的列/通道c:

(4)对于行组确定单位本原矩阵:

(5)添加新的单位本原矩阵到已有的集合:P={P′;P}

(6)导致本原矩阵:其中P是序列P={Pl;…;P0}

(7)如果t=0,c=[c1 …].

(8)从e去除c中的元件

(4)将e的元素附接到cN以便使得后者成为N个元素的向量。确定作为cN的逆的置换dN、以及对应的置换矩阵DN.

(5)导致通道分配:

在实施例中,提供如下所示的算法(被指示为算法2)。该算法从算法1中的步骤B.4.b.ii之后继续进行。给定矩阵B,行选择r和列选择c:

(A)通过向c附接并不在其中的、但是在{0,1,…,N-1}中的元素,使得c完整成为N个元素的向量。

(B)设

(C)找到l+1个单位本原矩阵P0′,P1′,…,Pl′,其中l是r的长度,并且Pi′的行i是本原矩阵的非平凡行,使得序列Pl′×…×P1′×P0′的行1到l匹配G的行1到l。这是对于以下示例矩阵被示出的构造过程。

(D)构造对应于c的置换矩阵CN,并且设定

(E)P′={Pl′;…;P1′;P0′};

算法2中的步骤(c)的示例如下地给出:

设因此,l=2.希望将其分解为三个本原矩阵:

使得:

由于预先乘以P2仅影响第三行,

这要求p1,0=g1,0以及p0,1=(g1,1-1)/g1,0如上。p0,2还未被约束,它所取得的任何值都可通过改变p1,2=g1,2-p1,0p0,2.而被补偿。

对于行2本原矩阵,起始点是需要

查看p2,0以及p2,1,具有联立方程

现在可知晓这是可解的,因为

并且,现在p0,2由下式定义:

g2,2=p2,0p0,2+p2,1g1,2+1

它将一直存在,只要p2,0不消失。

关于算法1,在实际应用中存在可在TrueHD比特流表示的最大系数值,并且需要确保系数的绝对值比此阈值小。在算法1的步骤B.3.a中找到最佳通道/列的主要目的是为了确保本原矩阵中的系数不大。在算法1的另一变型,不是将步骤B.3.b中的行列式与0比较,而是可以将它与个正的非零阈比较,以确保系数将根据比特流语法被明确地约束。一般来说,步骤B.3.b中的行列式越小,则最终的本原矩阵系数就越大,从而下面限制了行列式,上面限制了系数的绝对值。

在步骤B.2中,由rowsToLoopOver给定的步骤B.3的循环中处理的行的顺序被确定。这可以简单地是由按索引的升序排序的标志向量f指示的尚未实现的行。在算法1的另一变型中,这可能是案已经在步骤B.3的循环尝试的总次数的升序排序的行,从而已经尝试最少的行将是优选。

在算法1的步骤B.4.b.i中,附加的列clast将被选择。这可被任意选择,同时遵从约束clast∈e,作为替代,可以有意地选择clast以便不用尽对于在后续迭代中的行分解最有利的列。这可以通过跟踪使用如算法1的步骤B.3.a中计算的不同列的的费用被进行。

需要注意的是,算法1的步骤B.3确定对于一行的最佳列,并移动到下一行。在算法1的另一个变型中,可以用在尚未实现的行和仍然可用的列上运行的嵌套循环对取代步骤B.2和B.3步骤,使得一个行和列的最佳(最小化本原矩阵系数的值)排序可以被同时确定。

尽管算法1已经在其秩为M的满秩矩阵的情况下进行了说明,但是其可被修改以便作用于其秩为L<M的秩亏矩阵。由于单位本原矩阵的乘积永远是满秩的,在这种情况下仅期望实现A的L行。在步骤B中的循环中将需要适当的退出条件,以确保一旦A的L个线性独立行被实现,则算法退出。如果M>N,相同的变更将是适用的。

由算法1所接收的矩阵可以是已经通过适当设计的矩阵Z旋转的下混规范。可能的是在算法1的执行过程中可以在本原矩阵系数可增长得比TrueHD比特流中可表示的系数大的情况下结束,而在Z的设计中可能没有预料到这一事实。在算法1的又一个变型中,旋转Z可以在工作中进行修改,以确保对于通过修改的Z被旋转的原始下混规范确定的本原矩阵就本原矩阵系数的值而言表现更好。这可以通过查找在算法1中的步骤B.3.b计算出的行列式并将行r放大Z的适当修改以使得行列式比合适下限较大来实现。

在算法的步骤C.4中,可以任意地选择e中的元素以使cN完整为N个元素的向量。在算法1的变型中,可以仔细选择这种顺序,使得本原矩阵和通道分配的最终(步骤C.5后)序列具有朝矩阵的底部定位的、具有较大的范数和/或大系数的行。这使得更有可能的将序列应用于输入通道,较大的内部通道被定位在较高的通道索引,从而被编码成较高的子流。传统TrueHD仅支持用于内部通道的24位数据通路,而新TrueHD解码器支持更大的32位数据通路。因此,将较大通道推动到只能通过新TrueHD解码器解码的较高子流是可取的。

关于算法1,在实际应用中,假设应用需要支持由以下下混矩阵的序列(自上到下)规定的K个下混的序列:其中A0具有尺寸M0×N和Ak,k>0具有尺寸Mk×Mk-1。例如,可以给出:(a)时变的8×N规范A0=A(t),其将N个自适应音频通道下混到7.1ch布局的8个扬声器位置,(b)规定7.1ch到5.1ch混合的进一步下混的6×8静态矩阵A1,或(c)规定5.1ch到立体声混合的进一步下混的2×6静态矩阵A2。该方法描述了一种L×M0旋转矩阵Z,其将在最上面的下混规范A0经受算法1或其变型之前应用于该下混规范A0

在第一设计方案(表示设计1)中,如果下混规范Ak,k>0具有秩Mk,则可以选择L=M0,并且Z可以根据下面的算法(表示为算法3)被构造:

(A)初始化:L=0,Z=[],c=[0 1 … N-1]

(B)构造:

这样的设计将确保Mk通道下混(对于)可通过L×N旋转规范Z*A0的Mk或L行中的较小者的线性组合而获得。该算法被用来设计上述的例子的情况的旋转。该算法返回如下的旋转,如果下混K的数目是1,则为单位矩阵。

可以使用第二设计(表示为设计2),该第二设计采用公知的奇异值分解(SVD)。任何M×N矩阵X可以通过SVD分解为X=U×S×V,其中U和V分别为维数为M×M和N×N的正交矩阵,而S是M×N对角矩阵。对角矩阵S因此被限定为:

在此矩阵,对角线上的元素的数量是M或N中的较小者。对角线上的值si是非负的,并且被称为X的奇异值。它进一步假设对角线上的元素已经按量值减小的顺序被排列,即不像在设计1中,下混规格在本设计中可为任意秩。矩阵Z可以根据下面的算法(表示为算法4)被构造:

(A)初始化:L=0,Z=[],X=[],c=[0 1 … N-1]

(B)构造:

对于(k=K-1到0)

{

(a)如果k>0,则从第一下混计算Mk通道下混的序列:

Hk=Ak×Ak-1×…×A1

(b)否则,设定Hk为尺寸Mk的单位矩阵

(c)从输入计算Mk通道下混的序列:Tk=Hk×A0

(d)如果基础集合X不是空的:

{

(i)计算投影系数:Wk=Tk×XT

(ii)计算预测分解的矩阵:Tk=Tk-Wk×X

(iii)在旋转中考虑预测:Hk=Hk-Wk×Z

}

(e)经由SVD分解Tk=USV

(f)找到{0,1,...,min(Mk-1,N-1)}中的最大i,使得sii>θ,其中θ是用于限定矩阵的秩的小的正阈值(也就是说,1/1024).

(g)创建基础集合:

(h)获得Z的新的行:

(i)更新

}

(C)L=Z中的行数。

应注意,最终旋转规范Z*A0与算法4的步骤B.g中构造的基础集合X基本上相同的。由于X的行是标准正交矩阵的行,通过算法1处理的旋转矩阵Z*A0将具有单位范数的行,因此通过如此得到的本原矩阵的应用而产生的内部通道的功率将被限界。

另外,在上述的例子中,算法4被用来在上面的例子中找到旋转Z。在这种情况下,存在单个下混规范,即:

K=1,M0=2,N=3,以及M0×N规范为A(t1)。

对于第三设计方案(设计3),可以另外地通过将经由上述设计1或2的设计获得的Z乘以在对角线上包含非零增益的对角线矩阵W:

增益可被计算为使得Z”*A0在经由算法1或者其变型被分解时得到本原矩阵具有可以在TrueHD语法中表示的、小的系数。例如,可以检查A'=Z*A0的行,并设置:

这将确保旋转矩阵Z’*A0中的每一行中的最大元素具有绝对值1,使得在算法1的步骤B.3.b中计算出的行列式不太可能是接近零。在另一变型中,收益wi被限上界,从而不允许非常大的收益(这在A'接近秩亏时可能发生)。

这种方法的另一个修改是从wi=1开始,并在算法1进行时增加它(或者甚至减小它),以确保在算法1的步骤B.3.b中的行列式具有合理的值,这继而当在算法1的步骤B.4中确定本原矩阵时将导致更小的系数。

在一个实施方案中,该方法可实现旋转设计以保持输出矩阵恒定。在这种情况下,考虑图2的例子,其中所述自适应音频到7.1声道规范是随时间变化的,而到下混的规范进一步是静态的。如上所讨论的,这可能是有益的是以便能够保持下混子流的输出本原矩阵恒定,因为它们可能符合传统TrueHD语法。这继而可通过保持旋转Z恒定来实现。由于规范A1和A2都是静态的,不论自适应音频到7.1声道的规范A(t)是什么,以上的设计1/算法3将返回相同的旋转态。然而,随着算法1的Z*A(t)的分解的进行,系统可能需要如上述设计3所描述的经由W修改Z到Z’。对角线增益矩阵W可以是时变的(即,依赖于A(t))的,但是Z本身不是。因此,最终的旋转Z”将是时变的,并且将不会导致恒定的输出矩阵。在这种情况下,有可能查看若干时刻t1,t2,...,其中A(t)可以被指定,然后例如通过计算在每个时刻的对角增益矩阵来构造整体对角增益矩阵W'。要引用的恒定旋转然后由Z”=W'×Z给出。

作为替代,可使用算法3或算法4设计对于在t1和t2之间的中间时刻的旋转,并且在t1和t2之间的所有时刻使用同一旋转。假设在规范中A(t)的变化是缓慢的,这样的过程可能仍然导致对于不同子流的所需要的规范和所实现的规范(设计的输入和输出的本原矩阵的序列)之间的非常小的误差,即使保持输出本原矩阵保持不变。

音频分段

如上所述,实施例是针对在考虑下混矩阵轨迹的同时音频分段成具有潜在变化的长度的重启间隔。上面的描述示出了在时间t1和t2的2*3下混矩阵A(t1)和A(t2)的分解,使得用于两个通道子流的输出矩阵在这两个时刻都可以是单位矩阵。输入本原矩阵可以在这两个时刻被插值,因为单位本原矩阵对(P0,Pnew0),(P1,Pnew1)以及(P2,Pnew2)对于同一通道进行操作,即它们具有相同的行是非平凡的。这继而定义了分别指示为Δ0,Δ1,Δ2的插值斜率。在稍后的时间t3,t3>t2,下混矩阵进一步发展到A(t3)。

假定A(t3)可以被分解为使得:

(1)输出矩阵再次是单位矩阵(还是输出通道分配),

(2)在时间t1和t2之间的相同输入通道分配也在t3工作

(3)新本原矩阵Pnewer0,Pnewer1,Pnewer2分别与(P0,Pnew0),(P1,Pnew1)以及(P2,Pnew2)对于相同通道进行操作。

该系统可以基于对t2和t3之间的输入本原矩阵进行插值定义一组新的增量Δnew0,Δnew1,Δnew2。这在图4中被概念化,其示出了根据实施例的对于时变对象沿时间轴402的矩阵更新。如图4所示,在时间t2具有连续内部送到和在时间t2具有连续输出表示,而没有听觉/视觉伪像。相同的输出矩阵408在t1,t2和t3工作。输入本原矩阵406可被插值以实现导致在时间t1下混音频中没有中断的连续变化矩阵404。在这种情况下,在时刻t2,不需要在比特流中重新传输以下信息:输入通道分配、输出通道分配、输出本原矩阵,和无损子原始矩阵中的本原矩阵(因此输入原始矩阵)将被应用的顺序。在时间t2更新的仅仅是“Δ”或差异信息,该信息定义了输入本原矩阵从时间t2到t3必须采取新的轨迹。注意,该系统不需要发送Pnewer0,Pnewer1,Pnewer2插值段t2-t3的初始本原矩阵,因为它们基本上是插值段t1至t2的结束本原矩阵。

所获得的矩阵是如图4所示的通道分配405和本原矩阵406的级联。因为输入矩阵406由于内插而连续变化,并且输出矩阵408是常数,因此所实现的下混矩阵连续变化。在这种情况下,将输入通道住转换到内部通道407的变换函数/矩阵在t2是连续的,因此所得到的内部通道将不会处理在t2的不连续性。应注意,这是希望的行为,因为内部通道最终将经受线性预测编码(由于跨越时间预测而重获编码增益),该线性预测编码在要被编码的信号是跨越时间连续的情况下是最高效的。此外,输出下混通道410还不具有不连续性。

如前所述,A(t2)可被以第二方式分解(分解2),包括将旋转Z应用于所需的规范以获得B(t2),并导致不是补偿旋转的单位矩阵的输出矩阵Q0,Q1。B(t2)到输入本原矩阵和输入通道分配的分解如下:

在上面的等式中,符号S0,S1,S2用于区分在图4中表征的在同一时间t2的另外一组输入本原矩阵Pnew0,Pnew1,Pnew2

应注意,相同的输入通道分配d3被使用。进一步假设,(不同于在前面的例子中的假定),它是不可能分解A(t3)以使得所述输出矩阵是单位矩阵,但相反,它可以采用对于A(t3)应用相同的旋转z以使得其分解满足以下条件:

(1)输出矩阵是矩阵Q0,Q1

(2)在时间t1和t2的相同输入通道分配d3也在t3工作

(3)新本原矩阵Snew0,Snew1,Snew2分别与S0,S1,S2对于相同通道进行操作。

在这种情况下,输入本原矩阵可以在时间t1和t2之间被插值,使得在这段时间期间下混子流的输出矩阵是单位矩阵,并且在t2到t3之间,输出矩阵为Q0,Q1。这种情况在图5中被示出,其示出了根据实施例的沿着时间轴502的时变对象的矩阵更新,在该实施例中,由于输入本原矩阵中的不连续性而在t2具有不连续的内部通道,并在时间t2有连续输出表示,其没有可听/可视的伪像。如图5所示,在时刻t2的指定矩阵504可被以两种不同的方式分解为输入和输出本原矩阵506,508。可能有必要使用一个分解以能够从t1到t2进行插值,另一个从t2到t3进行插值。在这种情况下,在时间t2,我们将必须发送本原矩阵S0,S1,S2(t2到t3的插值段的开始点)。它也将是必要更新输出矩阵508至用于下混子流的Q0,Q1。从输入通道505到内部通道507的传递函数以及内部通道本身将在时间t2具有不连续性:这是由于输入本原矩阵在该点突然变化。然而,整体实现矩阵在t2仍然是连续的,并且在输入原始矩阵506中的不连续性通过在输出矩阵508中的不连续性被补偿。内部通道中的不连续性对于线性预测因子创建了更困难的问题(较小的压缩效率),但在输出下混510中仍然没有不连续性。因此,在本质上,优选地能够创建如下的音频段,在该音频段上有类似于图4中的情况的情况,而不是图5中的情况。

对于任意矩阵轨迹,可能有连续的时间实例t2和t3,具有相应的矩阵A(t2)和Α(t3),在这两个连续的矩阵的分解中可能无法采用相同的输出矩阵;或者这两个分解可能需要不同的输出通道分配;或在这两个时刻的输入本原矩阵相对应的两个通道序列是不同的,使得增量/插值斜率不能被定义。在这样的情况下,时间t2和t3之间的增量必须被设置为零,这将导致在时间t3在内部通道和下混通道两者中不连续,即所获得的矩阵轨迹在t2和t3之间是常数(未插值)。

实施例一般针对如下的系统和方法,其用于将音频分割成在其上不可插值的输出矩阵可以保持恒定的子段,同时通过输入本原矩阵的插值实现连续变化的规范且能够利用三角矩阵的更新来校正轨迹。分段被设计成使得在这些子段的边界处指定的矩阵可被以两种不同的方式分解为本原矩阵,一种方式是适合于一直内插到边界,另一种方式是适合于从边界开始内插。这个过程也标记了需要回退为不内插的分段。

该方法的一个方法涉及保持本原矩阵通道序列恒定。正如前文所述,每个本原矩阵与它操作或修改的通道相关联。例如,考虑本原矩阵的顺序S0,S1,S2(上文示出其的逆),这些矩阵分别对于Ch1、Ch0和Ch2操作。给定本原矩阵的序列,对应的通道序列被称为“本原矩阵通道序列”。本原矩阵通道序列分别对于单独的子流被定义。“输入本原矩阵通道序列”是最上面的子流的本原矩阵通道序列的逆(用于无损求逆)。在图4的例子中,输入本原矩阵通道序列是在时间t1,t2和t3是相同的,这是计算用于通过这些时刻来插值输入本原矩阵的增量所必须的条件。在图5的例子中还发现S0,S1,S2与Pnew0,Pnew1,Pnew2对于同一通道操作,甚至输入本原矩阵通道序列是在时间t1,t2,t3相同。在用于非传统子流的比特流语法中,可以在连续矩阵的更新之间共享本原矩阵通道序列,即将其仅发送一次并且重新使用多次。因而,可以期望实现音频的分段,使得本原矩阵通道序列的不频繁传输会受到影响。

已经在很大程度上假定下混需要是向后兼容的,但更一般地是,下混不需要向后兼容或者下混的一个子集可以向后兼容。在非传统下混的情况下,不需要维持输出矩阵恒定,并且它们实际上可以被插值。然而,为了能够插值,应该可能在连续的时刻定义输出矩阵,使得它们对应于相同的本原矩阵通道序列(否则,插值路径的斜率是未定义的)。

某些实施方案的一般理念是在指定的矩阵是动态的时影响音频分割,因此,一个或多个编码参数可以对于分段保持恒定,同时最小化在分段边界处的编码参数的变化对于压缩效率、下混音频中的不连续性(或不连续的可听形)或一些其它度量的冲击(如有的话)。

分割过程的实施例可以被实现为计算机可执行的算法。对于该算法,从自适应音频/无损表示到最大下混的连续变化的矩阵轨迹通常以高速率采样,例如,在每个存取单元(AU)的边界被采样。覆盖大长度的音频(例如,100000个AUs)的矩阵的有限序列Λ0={A(tj)}被创建,其中j是整数0≤j<J,以及t0<t1<t2<…。我们将通过Λ0(j)指示序列Λ0中的索引为j的元素。例如,Λ0包含描述如何从Atmos下混到7.1声道扬声器布局的矩阵的序列。然后,序列Λ1是定义如何下混到下一个较低的下混的在相同时刻tj的J个矩阵的序列。例如,这些J个矩阵中的每个矩阵可以简单地是静态7.1至5.1ch矩阵。可以类似地创建K个序列,对应于级联中的K个下混。音频分段算法接收K个序列Λ0,…,ΛK-1,以及还接收相应的时间戳Γ={tj},0≤j<J。该算法的输出是对于时间[t0,tJ-1)的音频的一组编码决定。该算法的某些步骤如下:

1.执行遍历在时间上从t0前进到tJ-1的矩阵序列。在通在每个时刻tj时,算法试图确定一组编码决定Ej,该编码决定可以用来实现由Λk(j),0≤k<K规定的下混。此处,Ej可以包括元素,诸如通道分配、本原矩阵通道序列、和用于在比特流中直接出现的K个子流的本原矩阵,或诸如帮助本原矩阵的设计、但本身不出现在比特流中的旋转Z的其他元素。在这样做时,首先检查决定Ej-1的子集是否可以被重用,其中所述子集对应于希望尽可能少地改变的参数。这一检查可以例如通过上文提及的算法1的变型来执行。注意,在算法1中的步骤B.3中,处理试图选择最终确定输入本原矩阵通道序列和输入通道分配的一组行和列。算法1的这样的步骤就可以被跳过(因为这些决定会从Ej-1复制),并直接转入算法1的步骤B.4中的实际分解例程。为了该传递检查可能需要满足一个或多个条件:通过重用Ej-1设计的本原矩阵可能需要为使得它们的级联与指定的在时间tj的下混矩阵的不同在阈值内,或者本原矩阵必须具有被限制在比特流语法设定的限值内的系数,或关于本原矩阵的应用的内部通道中的峰值偏移的估计可能需要被限制(以避免数据路径过载)等。如果检查未通过,或者如果没有有效的Ej-1,则可以对于在时刻tj的矩阵规范独立地确定决定Ej,例如通过按原样运行算法1。每当决定Ej-1与时间tj的矩阵不相容,分割边界被插入。这例如指示包含在时间tj-1至tj中包含的分段可能不具有被插值的矩阵轨迹,并且所实现的矩阵在tj突然改变。这当然是不希望的,因为这将指示下混音频中存在不连续性。还可能指示在tj开始的新的重启间隔可能是必需的。编码决定Ej,0≤j<J被保留。

2.接下来执行遍历在时间上从tJ-1返回到t0的矩阵序列。在这样做的过程中,检查决定Ej+1的子集是否适合于在时间tj的矩阵分解(即,通过在上述(1)相同的检查)。如果是这样,我们重新定义Ej作为新的编码决定的集合,并在时间上移回当前已在时刻tj被插入的任何分段边界。这一步骤的影响可能是,即使在上述步骤(1)中时间间隔tj到tj+1可能已被标记为不具有差值的本原矩阵,实际上仍可通过重用在时间tj的决定Ej+1的子集来使用插值矩阵。因此,可能已经在步骤(1)中被预测为不连续点的tj+1将不再是这样的。这一步骤也可能有助于更均匀地扩展重启时间间隔,最小化编码的峰值数据速率。这个步骤可进一步帮助识别点,如在图5中的t2,其中指定矩阵可被以两种不同的方式分解成本原矩阵,这有助于实现连续变化的矩阵轨迹,即使对于输出本原矩阵进行更新。例如,假设在以上步骤(1)中Ej-1适合于在时间tj的矩阵的分解。然而,所得到的Ej不适合在tj+1的矩阵的分解。然后,可能已经在时间tj+1引入了分割边界。在当前步骤中,可能发现决定Ej+1也适合于在时间tj的矩阵分解。在这种情况下,在时刻tj的矩阵可被以两种不同的方式分解,就像在图5的时间t2,因而在tj而不是tj+1引入分割边界,导致连续变化的实现的下混。最后,本步骤也可以帮助识别明确不适合于插值的或明确需要参数变化(由于它现在已经尝试保持编码参数集合从任一时间方向上相同)的分段tj到tj+1。在另一些情况下,该方法可能具有边界是否应该被移动的选择。例如,不仅在tj而且在tj-1可能持续为Ej+1。在这种情况下,如果在上述步骤(1)中在tj+1引入了分割边界,它可以移回tj或进一步移回tj-1。在这样的情况下,其他的指标可能确定边界应该移动多远。例如,我们可能需要维护可能会影响此决定的具有特定长度的重启间隔(如>=8AUs和<=128AUs)。或者,该决定可以基于哪些决定导致最佳的压缩性能或者哪些决定导致在内部通道中的最少峰值偏移的启发。

3.这个过程现在可以计算作为连续音频段(或在指定的序列中的连续矩阵组)的重启间隔,在该连续音频段上对于所有子流的通道分配已经保持相同。所计算的重启间隔可能会超过在TrueHD语法中指定的重启间隔的最大长度。在这种情况下,大的间隔通过在已经存在指定的矩阵的间隔中的点tj处适当地插入分段点而被分成较小的间隔。作为替代,已经实现分割的点可能没有任何矩阵,我们甚至可在新引入的分段点处适当地插入矩阵(通过重复或插值)。

4.在步骤3结束时,还可能具有尚未与编码决定相关联的音频/矩阵更新的某些块(即,相应于在时间戳Γ的部分序列)。例如,上述步骤(1)中描述的算法1及其变型可能都无法导致其所有系数对于部分序列被良好地限界的本原矩阵。在这样的情况下,该部分序列中的矩阵更新被简单地丢弃(如果序列小)。作为替代地,这样的序列可通过以上步骤(1)、(2)、(3)被单独处理,但使用了作为基础的不同矩阵分解算法(不同于算法1)。结果可能不太理想,但有效。

对于上述算法,当分别在上述步骤(1)或步骤(2)中在时间tj尝试决定Ej-1或Ej+1时,可能会遇到如下情况:由矩阵Λk(j)指定的下混中的一个或多个下混的秩从其相邻矩阵Λk(j-1)orΛk(j+1)的秩减小。这可能导致,例如,与时间tj-1或tj+1相比,在时间tj指定的矩阵对于其分解需要较少数量的本原矩阵。尽管如此,通过在分解中输入或输出本原矩阵的序列中插入平凡本原矩阵以得到与在相邻时刻相同的数量(和本原矩阵通道序列),仍可以在时间tj强行重新使用决定Ej-1或Ej+1(视情况而定)。

一旦分段已经完成,则过程可以对于每个分段分别重新计算编码决定,如果有益的话。例如,该分段可导致可能对于段的一端是最优的而对于相对端不是最优的编码决定。然后,它可能尝试一组新的编码决定,该编码决定可能对于在段的中心的矩阵是最优的,这样整体上可导致客观度量(例如内部通道的峰值偏移或压缩效率)的改进。

编码器设计

在一个实施例中,上述的音频分段过程是在自适应音频处理系统的编码器级中执行的,以用于通过插值矩阵化来渲染自适应音频TrueHD内容。图6示出根据实施例的包括编码器601和解码器611的自适应音频TrueHD处理系统的概述。如在图600中所示,在自适应音频(例如,Atmos)内容中的对象音频元数据/床标签提供了构建渲染矩阵602所需的信息,该渲染矩阵602适当地混合自适应音频内容为一组扬声器馈送。对象的连续运动在渲染中由对象音频渲染器(OAR)产生的不断演变的矩阵轨迹捕获。矩阵轨迹的连续性既可以是由于不断演变的元数据导致的,也可能是由于元数据/矩阵样本的插值导致的。在一个实施方案中,矩阵生成器生成如由矩阵轨迹602上的“×”标记采样点603示出的这种连续变化的矩阵轨迹的样本。这些矩阵可能已被修改以使得它们被箝位(clip)保护,即,当被应用于输入音频(在样本之间具有假定的插值路径)时将导致未被箝位的下混/渲染。

针对大的音频段的大量连续矩阵样本/或矩阵一起由执行如下分段算法(例如上述算法)的音频分段组件604处理,该分段算法将音频段分成更小的子段,在该子段上,诸如通道分配、本原矩阵通道序列、本原矩阵是否要在该段上被插值等等的各种编码决定保持不变。分割过程604还将段的组标记为重启间隔,如先前所描述的。由此,分段算法自然对于音频段中的每个段做出显著数量的编码决定,以提供引导矩阵分解成本原矩阵的信息。

然后,来自该分段过程604的决定和信息被输送到单独的编码器例程650,该例程650处理这样的分段的一个或多个组606中的音频(该组可以是例如重启间隔,或者它可能只是一个分段)。此例程650的目标是最终产生与分段组对应的比特流。图7是示出根据实施例的由编码器例程650执行的产生用于音频分段处理的输出比特流的编码器处理的流程图。如图7所示,根据实施例,编码器例程650可以每个重启间隔运行或者每个分段运行,以产生用于重启分段的比特流为重启段。编码例程接收包括指定的矩阵轨迹602的指定矩阵,来实现在音频分段的开始(和结束)点处的矩阵规范,702。从分割过程604接收到的编码决定可能已经包括在分段边界的本原矩阵。作为替代地,它可以包括引导信息,以通过矩阵分解(如前面所述)再次产生这些本原矩阵。编码器例程650然后基于在分段的端部的本原矩阵计算代表插值斜率的增量矩阵,704。如果分段算法已经表示在分段期间插值将被关断,或者如果计算出的增量不可在语法的约束内表示,则可能会重置该增量。

编码器例程计算或估计一旦本原矩阵(具有内插)被应用于在它正处理的(一个或多个)分段的输入音频就将导致的在内部通道中的峰值样本值。如果估计任何内部通道可能超过数据通路/过载时,则该例程适当地采用LSB旁路机构,以减少内部信道的振幅,并在该过程中可以修改并重新格式化已经被计算的本原矩阵/增量,706。它随后将被格式化的本原矩阵应用于输入的音频并创建内部通道,708。还可以做出新的编码决定,如用于编码音频数据的线性预测滤波器或霍夫曼码书的计算。本原矩阵应用步骤708取得输入的音频以及被重新格式化的本原矩阵/增量,以产生要被过滤的/编码的内部通道。计算出的内部通道然后被用于计算下混和箝位保护的输出本原矩阵,710。格式化的本原矩阵/增量然后从编码器例程650输出,以便通过比特流608传输到解码器611。

对于图6的实施例,解码器611解码下混子流的各个重启间隔,并且可以从编码的音频数据再生内部通道610的子集,并应用比特流608中包含的一组输出本原矩阵以生成下混表示。输入或输出本原矩阵可以被插值,并且所实现的矩阵规范是输入和输出本原矩阵的级联。因此,所实现的矩阵轨迹612可以仅在某些采样点(例如,603)匹配/密切匹配指定的矩阵轨迹602。通过以高的速率采样指定的矩阵轨迹(在输入到编码器中的分段算法之前),可以确保所实现的矩阵轨迹不会与指定的矩阵轨迹背离大的量,其中,所定义的阈值可基于特定的应用需求和系统约束来设定背离限值。

在某些情况下,由于所实现的矩阵轨迹与指定的矩阵轨迹不同,由矩阵生成器实现的箝位保护可能不足。编码器可以计算本地下混并且修改输出本原矩阵,以确保在应用输出本原矩阵之后由解码器产生的表示不会箝位,如图7中的步骤710所示。该第二轮箝位保护在必要的情况下可以是温和的,因为大量的箝位保护可能已经被吸收到已经由矩阵生成器应用的箝位保护。

在一些实施例中,整体编码器例程650可以是并行的,使得音频分段例程和比特流产生例程(图7)可以被适当流水线化,以便对于音频的不同分段同时操作。此外,因为在不同部分的分段之间没有依赖关系,因此非重叠的输入音频部分的音频分段可以并行化。

根据实施例,编码器601在其中包括设计用来处理下混矩阵编码处理的轨迹的动力学的分段的音频分割算法。音频分割算法将输入音频划分成连续片段,并对于每个片段产生编码决定和子段的初始集合,然后处理所述音频片段内的各个子段或子段的群组,以产生最终的比特流。该编码器包括无损和分层的音频编码器,其通过插值的本原矩阵实现连续变化的矩阵轨迹,并通过考虑该实现的轨迹来对下混进行箝位保护。该系统可以具有两轮箝位保护,一轮箝位保护是在矩阵生成阶段而另一轮箝位保护是在本原矩阵已被设计之后。

格式化本原矩阵/增量

参考图7和如图7的704中所示地格式化本原矩阵和增量的步骤,下面的算法可用于执行此步骤。在TrueHD中的本原矩阵的系数可以被表示为尾数和指数。本原矩阵可以与本原矩阵中的所有系数共享的被称为“cfShift”的指数相关联。在本原矩阵A中的特定系数α可以被打包到比特流中作为尾数λ使得λ=α×2-cfShift。尾数应满足以下约束:-2≤λ<2,而指数-1<cfShift<7。因而,非常大的系数(绝对值>128)可能不能在TrueHD语法中表示的,并且编码器的工作是确定不暗示具有大的系数的本原矩阵的编码决定。尾数被进一步表示为具有“fracBits”的二进制分数,即,λ将在比特流中被以(fracBits+2)个比特表示。每个本原矩阵与“fracBits”的单个值相关联,该单个值可具有在0到14之间的整数值。

参考图2,在时间t2,系统将必须要发送本原矩阵S0,S1,S2(内插分段t2到t3的起始点)。在插值段的开始的本原矩阵被称为“种子本原矩阵”。这些是在比特流中被发送的本原矩阵。在插值段中的中间点处的本原矩阵利用增量矩阵(delta matrix)被生成。

每个种子本原矩阵与对应的增量矩阵相关联(如果本原矩阵没有被插值,则增量可以被认为是零),因此,在本原矩阵中的每个系数在增量矩阵中具有对应的系数δ。δ的值在比特流中被如下表示:(a)归一化值θ=δ×2-cfShift被计算,其中,cfShift是与相应的种子本原矩阵相关联的指数。需要对于增量矩阵中的所有系数,-1≤θ<1。(b)归一化值然后被打包到比特流中作为通过“deltaBits”+1个比特表示的整数g,从而θ=g×2-fracBits-deltaPrecision。该参数deltaPrecision表示比本原矩阵系数自身更精细地表示增量的额外的精度。这里deltaBits可以是0到15,而deltaPrecision具有0和3之间的值。

如上所述,该系统需要如下这样的cfShift,其对于种子和相应的增量矩阵中的所有系数确保-1≤θ<1和-2≤λ<2。如果没有这样的cfShift,其中-1≤cfShift<7,存在,则编码器可以关闭对于分段的插值,使增量归零,并且仅仅基于种子本原矩阵计算cfShift。该算法提供了在增量不可表示时提供关闭插值作为后备的优势。这可能是分段过程的一部分,或是在可能需要确定与种子和增量矩阵相关联的量化参数的稍后编码模块中。

编码器/解码器电路

音频分段过程的实施例可以在包括编码器和解码器级或电路的自适应音频处理系统中实现。图8是根据实施例的包括编码器802、输送子系统810、和解码器812的音频数据处理系统的框图。虽然子系统812在本文中作为“解码器”,应当理解的是,其可实施为重放系统,包括解码子系统(配置为解析和解码指示经编码的多通道音频节目的比特流),以及被配置为执行子系统的输出的重放的至少一些步骤以及渲染的其它子系统。一些实施例可包括不被配置为执行渲染和/或回放的解码器(其通常用于单独的渲染和/或重放系统)。本发明的一些实施例是重放系统(例如,如下的重放系统,包括解码子系统和配置成实现解码子系统的输出的重放的至少一些步骤以及渲染的其它子系统)。

在图1的系统800中,编码器802被配置为将多通道自适应音频节目(例如,环绕声道加上对象)编码为包括至少两个子流的编码的比特流,并且解码器812被配置为对编码的比特流进行解码以渲染原始多通道节目(无损)或原始节目的下混。编码器802被耦合并配置以生成编码的比特流,并断言编码的比特流到输送系统810。输送系统810被耦合和配置为输送(例如,通过存储和/或发送)编码的比特流至解码器812。在一些实施例中,系统800实现在广播系统或网络(例如,因特网)上向解码器812输送(例如,发送)编码的多通道音频节目。在一些实施例中,系统800将编码的多通道音频节目存储在存储介质(例如,非易失性存储器)中,而解码器812被配置为从所述存储介质读取节目。

编码器802包括矩阵生成器部件801,该矩阵生成器部件801被配置为生成指示渲染矩阵的系数的数据,其中渲染矩阵被定期更新,使得系数被类似地定期更新。渲染矩阵最终转换成本原矩阵,该本原矩阵被发送到打包子系统809和被编码在比特流中,指示将包括在节目的通道的对应混合中的各通道的相对或绝对增益。每个渲染矩阵的增益(对于节目期间的时刻)表示混合的每个通道将如何贡献于由对于特定的播放系统扬声器的扬声器馈送指示的音频内容的混合(在渲染的混合的相应时刻)。编码的音频通道、本原矩阵系数和驱动矩阵生成器801的元数据,以及附加数据通常也被断言至打包子系统809,该子系统809将它们组装成编码的比特流,该编码的比特流然后被断言到输送系统810。因此,该编码的比特流包括指示编码的音频通道的数据、时变矩阵的集合,并且通常还包括附加数据(例如,关于音频内容的元数据)。

由矩阵生成器801产生的矩阵可以跟踪指定的矩阵轨迹602,如图6所示。用于图8的实施例,通过矩阵生成器801所产生的矩阵在音频分段部件803中被处理,该音频分段部件803将音频段分割为子段,在该子段上,诸如通道分配、本原矩阵通道序列、本原矩阵是否要在该段上被插值等等的各种编码决定保持不变。该部件还将段的组标记为重启间隔,如先前所描述的。音频分段部件803因此用于将矩阵轨迹602的矩阵分解为本原矩阵和通道分配的相应集合。

决定和本原矩阵信息被提供给编码器部件805,该编码器部件805通过应用由部件803作出的决定来处理中所定义的子段中的音频。编码器部件805的操作可以按照与图7的处理流程来执行。在一个实施例中,在系统800处理的数据可以被称为“内部”通道,因为解码器(和/或渲染系统)典型地解码并渲染编码的信号通道的内容以恢复输入音频,从而所编码的信号通道对于编码/解码系统是“内部”的。编码器805产生对应于由音频分段部件803定义的子段的组的比特流。编码器部件805输出更新的本原矩阵,并且还输出任何适当的插值值,以使解码器812能够产生矩阵的插值版本。通过打包级809将插值值包括在从编码器802输出的编码的比特流中。

参照图8的解码器812,解析子系统811被配置为接收来自输送系统810的编码的比特流,并解析编码的比特流。解码器812从编码的音频数据再次生成内部通道,并应用比特流中包含的一组输出本原矩阵以生成下混表示。所实现的矩阵规范是输入和输出本原矩阵的级联。在解码器812中的解析器811中的插值级接收包括在比特流中的本原矩阵的种子并更新集合、以及还包括在比特流中的插值值,以生成每个种子矩阵的插值值。在比特流的每个种子基质的产生内插值。本原矩阵生成器815是矩阵乘法子系统,该子系统被配置为将从插值级813输出的本原矩阵的每个序列依次应用于从编码的比特流中提取的经编码的音频内容。解码器部件817被配置成无损恢复由编码器802编码的多通道音频节目至少一个段的通道。解码器812的置换级(ChAssign)也可以被包括以输出一个或多个下混表示。

实施例涉及用于使用TrueHD音频编解码器渲染自适应音频内容的音频分段和矩阵分解过程,并且可以与用于渲染自适应音频(混合音频,杜比Atmos)内容的元数据输送和处理系统结合使用,但是应用并不限于此。对于这些实施例,所输入的音频包括自适应音频,具有基于通道的音频和基于对象的音频,包括用于相对于收听者在三维空间中再现相应的声音源的预期位置的空间线索。矩阵化操作的序列通常产生增益矩阵,该增益矩阵确定对于所述N个输出通道中的每一个通道的通过相应的扬声器被重放的输入音频的每个对象的量(例如,响度)。自适应音频元数据可以与指示包含音频通道和音频对象的输入音频信号的通过N个输出通道的渲染的输入音频内容结合,并且在编码器和解码器之间编码在比特流中,该比特流还包括通过编码器创建内部信道分配。元数据可被选择和配置成控制多个通道和对象特性,例如:位置,尺寸,增益调整,海拔加重,立体声/全反复,3D缩放因子,空间和音色的属性,和内容相关的设置。

虽然某些实施例已一般地相对于下混操作被描述,该下混操作与TrueHD编解码器格式和具有各种已知的配置的对象和环绕声道的自适应音频内容一起使用,但应当注意的是,输入音频到解码的输出音频的转换可包括下混,作为输入到相同数量的通道的渲染,甚至上混。如上所述,某些算法考虑其中M大于N(上混)和M等于N(直混)的情况。例如,虽然算法1在M<N的上下文中被描述,但是进一步讨论(例如,第四节D)还提及处理上混的扩展。类似的,算法4关于转换是一般性的,并且使用诸如“Mk或N中的较小者”的语言,从而明确地构想上混以及下混。

本文所描述的一个或多个实施例的方面可以在音频或视听系统中实现,该音频或视听系统在包括执行软件指令的一个或多个计算机或处理装置的混合、渲染和重放系统中处理源音频信息。任何所述实施例可以单独使用,或以任意组合彼此一起使用。虽然各种实施例可能已经被可在说明书中一个或多个位置处被讨论或提及的现有技术的各种缺陷激发,但是实施例并不一定解决任何这些缺陷。换句话说,不同的实施例可以解决可能在本说明书中讨论的不同的缺陷。一些实施例可仅部分地解决可在本说明书中讨论的一些缺陷或仅一个缺陷,并且一些实施例可能不解决这些缺陷。

文中所描述的方法和系统的方面可在用于处理数字或数字化的音频文件的适当的基于计算机的声音处理网络环境中实现。自适应音频系统的部分可以包括包含任何期望数量的单独的机器的一个或多个网络,该机器包括用以缓冲和路由计算机之间传输的数据的一个或多个路由器(未示出)。这样的网络可以被建立在各种不同的网络协议上,并且可以是因特网,广域网(WAN),局域网(LAN),或它们的任意组合。在其中网络包括因特网的实施例中,一个或多个机器可配置为通过网络浏览器程序访问因特网。

一个或多个部件、块、过程或其他功能部件可通过控制该系统的基于处理器的计算设备的执行的计算机程序来实现。还应当指出的是,这里公开的各种功能可以使用任何数量的硬件、固件的组合来描述,和/或作为体现在各种机器可读或计算机可读的媒体中的数据和/或指令在它们的行为、寄存器传送、逻辑部件,和/或其它特性的方面被描述。这样的格式化的数据和/或指令可体现在其中计算机可读介质包括但不限于各种形式的物理(非临时性)、非易失性存储介质,诸如光,磁或半导体存储介质。

除非上下文明确要求,否则在下面的权利要求和本文的描述中,术语“包含”或“包括”等应在包含性意义上被解释,包含性意义与排他性或者穷尽性意义相反;也就是说,在“包含,但不限于”的意义上解释。使用单数或复数的词也分别包括复数或单数。此外,词语“这里”,“下面”,“上面”,“下面”和具有类似含义的词语指本申请整体,而不是本申请的任何特定部分。当参照两个或更多个项目的列表使用词语“或”时,该单词覆盖了单词的以下解释的全部:列表中的任何项目,列表中的全部项目和列表中的项目的任意组合。

贯穿本公开内容,包括在权利要求中,“对于”信号或数据执行操作(例如,过滤,缩放,变换,或施加增益到信号或数据)的表述在广义上使用,以指示直接对信号或数据执行操作,或对信号或数据的已处理版本(例如,在对其执行操作之前经受了预先滤波或者预处理的信号的版本)执行操作。表达“系统”在广义上使用以指示设备,系统或子系统。例如,实现了解码器的子系统可以被称为解码器系统,和包括这样的子系统的系统(例如,响应于多个输入产生Y个输出信号的系统,其中,子系统产生的输入中的M个输入,而其它的Y-M个输入被从外部源接收到)也可以被称为解码器系统。术语“处理器”是在广义上使用,以指示可编程或可配置(例如,通过软件或固件)为对数据(例如,音频,或视频或其他图像数据)执行操作的系统或设备。处理器的例子包括现场可编程门阵列(或其它可配置的集成电路芯片或芯片组),编程和/或以其他方式配置为对音频或其它声音数据执行流水线处理的数字信号处理器,可编程通用处理器或计算机,以及可编程微处理器芯片或芯片组。术语“元数据”是指与对应的音频数据(还包括元数据的比特流的音频内容)分离且不同的数据。元数据与音频数据相关联,并且指示该音频数据的至少一个特征或特性(例如,对于音频数据或由音频数据表示的对象的轨迹已执行或者应执行哪个(哪些)类型的处理)。元数据与音频数据的关联是时间同步的。因此,当前(最近接收的或更新的)元数据可指示对应的音频数据同时地具有所指示的特征,和/或包括所指示的类型的音频数据处理的结果。贯穿本公开内容,包括在权利要求中,“耦合”或“被耦合”用于表示直接或间接的连接。因此,如果第一设备耦合到第二设备,该连接可以是通过直接连接,或者通过经由其它设备和连接的间接连接。

贯穿本公开内容,包括在权利要求中,以下表述具有以下定义:扬声器和扩音器被同义地使用以表示任何声音发射换能器。这个定义包括实现为多换能器(例如,低音和高音)的扬声器;扬声器馈送;被直接施加到扬声器的音频信号;或要依次被施加到串联的放大器和扬声器的音频信号;通道(或“音频通道”):单声道音频信号。这种信号通常可以被渲染为等同于该信号直接应用于在期望或标称位置的扬声器。所希望的位置可以是静态的(物理扬声器的情况通常如此),或是动态的,音频节目:一个或多个音频通道(至少一个扬声器通道和/或至少一个对象通道)以及可选的相关联的元数据(例如,描述了期望的空间音频表示的元数据)的集合;扬声器通道(或“扬声器馈送通道”):与指定扬声器(在期望或标称位置)或在所定义的扬声器配置中的指定扬声器区域相关联的音频通道。扬声器通道被渲染为等同于音频信号直接应用与指定的扬声器(在期望或标称位置)或在指定的扬声器区域中的扬声器;目标通道:指示由音频源发出的声音的音频通道(有时被称为音频“对象”)。通常情况下,目标通道确定参数音频源描述(例如,指示参数音频源描述的元数据被包括在对象通道中或被提供对象通道)。源描述可确定由源发射的声音(作为时间的函数),作为时间的函数的源的表观位置(例如,3D空间坐标),以及可选的表征该源的至少一个附加的参数(例如,表观源尺寸或宽度);和基于对象的音频节目:包括一个或多个对象通道的(和可选地还包括至少一个扬声器通道)以及可选的相关联的元数据(例如,指示发射由对象通道指示的声音的音频对象的轨迹的元数据,或者指示由对象通道指示的声音的希望的空间音频表示的元数据,或指示作为由对象通道指示的声音源的至少一个音频对象的身份的元数据)的音频节目。

尽管已经作为示例并且根据具体实施例描述了一个或多个实现,但是应理解,所述一个或多个实现并不局限于所公开的实施例。相反,其意图涵盖本领域技术人员将显见的各种修改和类似布置。因此,所附权利要求的范围应被给予最宽泛的解释以便涵盖所有这些修改和类似的布置。

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