帧错误隐藏的制作方法_2

文档序号:9278242阅读:来源:国知局
于作为基础的音调的频 率和初始相位。丢失帧中音调分量的MDCT系数有时具有与先前帧中相同的符号和幅度,这 时帧重复算法将是有利的。然而,在丢失帧中,音调分量的MDCT系数有时具有改变的符号 和/或幅度,并且在这种情形中,帧重复算法效果不佳。发生这种情况时,以不正确符号来 重复系数导致的符号不匹配将使音调分量的能量在更大的频域区域上扩散,导致可听见的 失真。
[0042] 本文描述的实施例分析先前已接收帧中的MDCT的符号改变(例如使用符号改变 跟踪算法),并使用收集的有关符号改变的数据来创建感知质量得到改善的低复杂度FEC 算法。
[0043] 由于相位不连续的问题对于强音调分量是最可听见的,并且这些分量将影响一组 多个系数,所以变换系数将被组合为子向量,对子向量执行符号分析。根据本文所述实施例 的分析还考虑信号动态特性(例如由瞬变检测器测量),以确定过往数据的可靠性。可以在 预定数量的先前已接收帧上,针对每个子向量,确定变换系数的符号改变的数目,并且使用 该数据来确定重构子向量中变换系数的符号。根据本文所述的实施例,当在先前已接收帧 上每个对应子向量的变换系数的所确定的符号改变的数目较高,即等于或超过预定转换阈 值时,将转换(反转)帧重复算法中使用的子向量中所有系数的符号。
[0044] 本文所述的实施例涉及基于解码器的符号外推算法,其使用从符号改变跟踪算法 收集的数据,用于外推所重构MDCT向量的符号。在帧丢失处激活符号外推算法。
[0045] 符号外推算法还可以保持跟踪先前接收帧(存储在存储器中,即解码器缓冲器 中)是否静态或者其是否包含瞬变,因为算法只有对静态帧(即,当信号不包含瞬变时)执 行才有意义。因而,根据一个实施例,当任一个感兴趣的被分析帧包含瞬变时,重构系数的 符号将随机化。
[0046] 符号外推算法的一个实施例基于对三个先前接收帧的符号分析,这是因为三个帧 提供了足够的数据以实现较好性能。在只有最后两个帧是静态的情形中,帧n-3被丢弃。对 两个帧进行符号改变分析与对三个帧进行符号改变分析相类似,但阈值水平相应地调整。
[0047] 图2是示出符号改变跟踪的图。如果最近的符号历史只包含好帧,则跟踪三个连 续帧中的符号改变,如图2a所示。在瞬变或丢失帧的情形中,如图2b或2c所示,对两个可 用帧计算符号改变。当前帧具有索引"n",丢失帧用虚线框表示,并且瞬变帧用点框来表示。 因而,在图2a中符号跟踪区是3帧,在图2b和2c中符号跟踪区是2中贞。
[0048]图3是示出符号改变被认为没有意义的情况的图。在这个情形中,错误帧n之前 的最后两个帧之一是瞬变(非静态)帧。在这种情形中,符号外推算法可针对重构帧的所 有子向量实施"随机"模式。
[0049] 时域音频信号中的音调或谐频分量将影响MDCT域中多个系数。另一个实施例通 过确定MDCT系数组(而非MDCT系数的整个向量)的符号改变的数目,使得MDCT系数被组 合为例如4维频带,在4维频带中执行符号分析,从而在符号分析中捕捉这种行为。由于符 号不匹配引起的失真在低频区中最可听见,符号分析的另一个实施例只在0-1600HZ的频 率范围中执行以降低计算复杂度。如果该实施例中使用的MDCT变换的频率分辨率是例如 每系数25Hz,则该频率范围将由64个系数组成,这些系数将被分到B个带中,在这个示例中 B= 16〇
[0050] 图4是示出上述示例的帧结构的图。示出了多个连续好帧。将帧n放大,以示出 其包含16个频带或子向量。将帧n的频带b放大,以示出4个变换系数元0):…乂(4)还分 〇 别亦出了帧n_l和n_2的对应子向量或频带b的变换系数和2⑴,…〃。
[0051] 根据实施例,符号改变跟踪算法执行确定由解码器接收的帧中变换系数的符号改 变的数目,并且只要解码器接收帧,即只要没有帧丢失,符号改变跟踪算法就激活。在此期 间,解码器可以针对符号分析中使用的每个子向量或频带b更新两个状态变量:^和△ n,因 而在16个子向量的示例中,将存在32个状态变量。
[0052] 每个子向量或频带b的第一状态变量sn保存当前帧n和前一帧n-1之间的符号 转换的数目,并根据以下进行更新(注意,这里的帧n被认为是好帧,而图2和图3中的帧 n是错误帧):
[0053]
[0054] 其中索引ib指示子向量或频带b中的系数,n是帧号,并且元是所接收的量化变换 系数的向量。
[0055] 如果⑴中变量isTransientn指示帧n是瞬变的,则符号转换的数目不是相关信 息,并且针对所有频带都被设为〇。
[0056] 变量isTransientj为"瞬变比特"(transientbit)从编码器获得,并且可以在 编码器侧确定,如[4]所述。
[0057] 每个子向量的第二状态变量An保存当前帧n和前一帧n-1之间以及前一帧n-1 和帧n-2之间的符号转换的累计数目,其根据以下:
[0058]
[0059] 当解码器没有接收帧或者帧损坏时(即,如果数据损坏),激活符号外推算法。
[0060] 根据实施例,当帧丢失(错误)时,解码器首先执行帧重复算法,并将变换系数从 前一帧拷贝到当前帧。接下来,该算法通过检查所存储的针对三个先前接收帧的瞬变标志, 检查三个先前接收帧是否包含任何瞬变。(然而,如果最后两个先前接收帧的任一个包含瞬 变,则存储器中没有有用的数据来执行符号分析,并且不执行符号预测,如参考图3所述)。
[0061] 如果至少两个先前接收帧是静态的,则符号外推算法将每个频带的符号转换数目 A"与预定转换阈值T相比较,并且如果符号转换数目等于或超过转换阈值,则转换或翻转 当前帧中对应系数的符号。
[0062] 根据实施例并且在4维频带的假设下,转换阈值T的水平依赖于存储器中静态帧 的数量,根据以下:
[0063]
[0064] 根据以下(其中符号翻转或反转用-1表示),完成与阈值T的比较以及针对每个 频带的可能符号翻转/转换。
[0065]
[0066] 在这个方案中,第一丢失帧中的变换系数的外推的符号被转换或者保持与上一个 好帧相同。在一个实施例中,当存在一系列丢失帧时,从第二帧起对符号进行随机化。
[0067]以下表1是根据实施例的,用于索引"n"的丢失帧的隐藏的符号外推算法的概览 (注意,这里帧n被认为是错误的,而以上等式中帧n被认为是好的。因此,表中有1个单位 的索引移位)。
[0068]表1
[0069]
[0070] 图5是示出错误帧的子向量的重构的示例的图。在这个示例中,图4的子向 量将用于示出被假设成错误的帧n+1的重构。3个帧n、n-1、n-2全部被认为是静态的 (isTransientn= 0,isTransientn-i: 0,isTransientn_2= 0)。首先使用以上(1)的符号 改变跟踪来计算\〇3)和Slri(b)。在这个示例中,在帧n和n-1的对应子向量系数之间存在 3个符号反转,并且在帧n-1和n-2的对应子向量系数之间存在3个符号反转。因而,sn(b) =3且Sn_i(b) = 3,根据以上⑵的符号改变累计,这便意味着An(b) = 6。根据阈值定义 (3)和符号外推(4),这足以(在这个示例中)将从帧n的子向量b拷贝到帧n+1的子向量 b的系数的符号反转,如图5所示。
[0071]图6是示出所提出的方法的总体实施例的流程图。该流程图还可以被视为计算机 流程图。步骤S11跟踪连续静态好帧的预定子向量的对应变换系数之间的符号改变。步骤 S12累计预定数量的连续静态好帧的对应子向量的符号改变的数目。步骤S12使用最近的 静态好帧来重构错误帧,但是将符号改变的累计数目超过预定阈值的子向量中的变换系数 的符号反转。
[0072] 如上文所述,阈值可以依赖于连续静态好帧的预定数量。例如,针对2个连续静态 好帧,阈值被赋予第一值,并且针对3个连续静态好帧,阈值被赋予第二值。
[0073] 此外,接收帧的静态性可以通过确定其是否包括任何瞬变来确定,例如,通过检查 变量isTransientn,如上文所述。
[0074]另一个实施例使用变换系数的符号转换的三种模式,例如转换、保持和随机,并且 这是通过与两个不同阈值(即,保持阈值Tp和转换阈值Ts)的比较来实现。这意味着,在符 号转换的数目等于或超过转换阈值1"的情形中,将第一丢失帧中变换系数的外推的符号转 换,并且在符号转换的数目等于或低于保持阈值1"的情形中,保持第一丢失帧中变换系数 的外推符号。此外,在符号转换的数目大于保持阈值1"且低于转换阈值T^勺情形中,对符 号进行随机化,即:
[0075]
[0076]在这个方案中,还将第一丢失帧中的符号外推应用于第
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1