一种用于音频解码的定点修正离散余弦反变换的方法

文档序号:2824012阅读:158来源:国知局
专利名称:一种用于音频解码的定点修正离散余弦反变换的方法
技术领域
本发明属于计算机技术领域,涉及一种用于音频解码的定点修正离散余弦反变换的方法。
背景技术
修正离散余弦反变换(IMDCT)在音视频信号编码中已得到广泛地应用,但其计算量很大,因此其快速算法在实时编码系统中显得尤为重要。在MP3,WMA,AAC(MP4)等主流音频解码方案中,修正离散余弦反变换(IMDCT)模块也是一种普遍使用的模块。对于其具体的软硬件实现,除了简单按照其原始公式来运算外,通常还有相应的快速算法。为了保证最终音频解码输出的PCM值的精度(通常为16位比特),IMDCT的输入输出及其中间结果一般都使用更高的比特数来存储。譬如将目前较常用的纯M位或者纯32位比特数作为数据的存储位宽,如图1和图2所示。图1中,输入数据xr[N]经过IMDCT处理后,再与修正数据overlapjn [N]经加窗及叠加处理,最后输出数据sample [N]和更新的修正数据overlap^ut [N]。在整个运算过程中,所有的数据的存储位宽均为纯M位比特数。图2中,输入数据xr[N]经过IMDCT处理后,再与修正数据overlapjn [N]经加窗及叠加处理,最后输出数据sample [N]和更新的修正数据0Verlap_0ut [N]。在整个运算过程中,所有的数据的存储位宽均为纯32位比特数。事实上对于很多软件解码实现来说,由于主流CPU或者DSP的处理单元通常为16 位或者32位而没有特别的M位处理单元,为了保证16位精度的PCM输出正常,IMDCT通常以32位进行计算和数据存储。典型的例子如著名的MP3开源软件LIBMAD,即如图2所示。无论是以M位还是32位来存储,现有IMDCT的计算和数据存储方法的一个特点是其输入、输出以及中间结果都使用统一的比特数,即要么全部是M位,要么全部是32位。其存在的缺陷是不能灵活利用存储资源,计算量大。

发明内容
本发明所要解决的技术问题是提供一种用于音频解码的定点修正离散余弦反变换的方法,该方法能在确保最终PCM输出的高精度的同时降低存储资源的消耗。为解决上述技术问题,本发明采用如下技术方案。一种用于音频解码的定点修正离散余弦反变换的方法,包括以下步骤步骤一,对Lbit的输入数据xr [N]做IMDCT处理;步骤二,利用P bit的修正数据0Verlap_in[N]对经IMDCT处理后的数据进行加窗及叠加处理,最后输出L bit的数据sample[N]和L bit的更新的修正数据0Verlap_ out[N],其中L与P均为正整数,且L> P ;步骤三,测得所述L bit的更新的修正数据0Verlap_0ut[N]的N个值中的最大溢出位为K,其中K< P;
步骤四,将L bit overlap_out[N]按照K缩减为P位存储,定点存储格式为(1+K). (P-K-I);步骤五,将当前帧的更新的修正数据0Verlap_0ut[N]作为下一帧的修正数据 0Verlap_in[N],重复步骤一;所述K为当前帧的更新的修正数据0Verlap_0ut[N]中N个数里最大的溢出比特数;K的取值随帧的变化而变化。作为本发明的一种优选方案,当K大于等于0小于等于M时,所述定点存储格式在 1. (P-I) (1+M). (P-M-I)范围内动态变化,其中M < P。作为本发明的另一种优选方案,所述L的值为32,P的值为16,K大于等于0小于等于3,overlap_out的定点化格式在1. 15 4. 12范围内动态变化。作为本发明的再一种优选方案,所述L的值为24,P的值为16,K大于等于0小于等于3,overlap_out的定点化格式在1. 15 4. 12范围内动态变化。作为本发明的再一种优选方案,所述L的值为16,P的值为8,K大于等于0小于等于3,overlap_out的定点化格式在1. 7 4. 4范围内动态变化。作为本发明的再一种优选方案,所述L的值为M,P的值为8,K大于等于0小于等于3,overlap_out的定点化格式在1. 7 4. 4范围内动态变化。本发明的有益效果在于本发明所述方法通过将overlap数据由高位宽改为低位宽存储,有效降低了存储要求;并通过检测overlap的最大溢出比特数,让低位宽存储的 overlap能够动态使用,尽可能最大的定点化精度,保证了最终PCM输出的高精度。


图1为现有的纯M位IMDCT的计算和数据存储的方法流程图;图2为现有的纯32位IMDCT的计算和数据存储的方法流程图;图3为实施例一所述的用于音频解码的定点修正离散余弦反变换的方法流程图;图4为实施例二所述的用于音频解码的定点修正离散余弦反变换的方法流程图;图5为实施例三所述的用于音频解码的定点修正离散余弦反变换的方法流程图;图6为实施例四所述的用于音频解码的定点修正离散余弦反变换的方法流程图。
具体实施例方式在本发明中,overlap_in/overlap_out改由低位宽存储。由于overlap数组的长度跟xr—样,这样节省下来的存储用RAM将会相当可观。为了确保在降低存储要求的同时保证最终PCM输出的高精度,本发明将额外引入2比特的溢出标志K,以保证overlap存储的数据的动态范围得到合理表达。overlap」!!和overlapjut在内存中共享同一块区域, 即overlap区域既是IMDCT的输入也是IMDCT的输出。IMDCT在计算完成后将更新这一区域。以32位的存储为例,如果采用4. 28格式作为定点化格式,即32位中的前4位表示整数部分(包括1比特符号位),后观位表示小数部分。由于最终PCM输出的值域范围只能在-1到1之间,任何超出部分都只能被截断,所以只要前4位中出现有效值,就表示数据已经溢出。不过由于IMDCT的计算中的中间数据可能需要溢出以保证最终输出的正确性,那么该4位即用来作为溢出保护。当将IMDCT与加窗及叠加操作后的输出的oVerlap_out [N]由32位改为16位存储时,数据精度的损失将不可避免。其损失的大小,完全取决于16位的定点化格式。显而易见,1. 15格式(1比特符号位+15位小数位)的损失最小,其表达的动态范围也最大(15位小数位),然而该格式将无任何比特数表达溢出情况。对于通常的音频编码系统来说,当前中贞的overlap_out将作为下——中贞的输入艮口下——中贞的overlap_in0所以如果overlap_out中有值出现溢出的情况下,仍然用1.15格式表达的话,将在下一帧计算中出现严重失真。本发明充分考虑到这一情况,并使用K来记录当前帧的溢出情况,K将记录下0Verlap_0Ut [N] 中N个数里最大的溢出比特数。对于4. 28格式的32位数据来说,其最大可能的溢出比特数为3,所以K用2bits表达就已经足够。这样,16位的0Verlap_0ut的真正定点化格式是动态的,也即根据其溢出情况,使用尽可能最大化的精度来表达,其表达格式如下(1+K). (15-K)这样0verlap_0ut的定点化格式将在1. 15 4. 12范围内动态变化。下面结合附图对本发明的具体实施方式
作进一步详细说明。实施例一本实施例提供一种用于音频解码的定点修正离散余弦反变换的方法,如图3所示,包括以下步骤Al、对32bit的输入数据xr[N]做IMDCT处理;A2、利用16bit的修正数据0Verlap_in[N]对经IMDCT处理后的数据进行加窗及叠加处理,最后输出32bit的数据sample [N]和32bit的更新的修正数据overlapjut [N];A3、测得所述32bit的更新的修正数据overlapjut [N]的N个值中的最大溢出位为K,其中K < 16;A4、将32bit overlap_out [N]按照K缩减为16位存储,定点存储格式为(1+K). (15-K);其中0Verlap_0ut的定点化格式将在1. 15 4. 12范围内动态变化。举例来说,如果K值为0,也即N个0Verlap_0ut值都没有发生溢出,那么0Verlap_ out[N]将使用1. 15格式存储;如果K值为1,那么0Verlap_0ut[N]将使用2. 14格式存储;如果K值为2,那么0Verlap_0ut[N]将使用3. 13格式存储;如果K值为3,也即 overlap_out里有值发生了最大可能的溢出,那么overlapjut [N]将使用4. 12格式存储, 以保证下一帧数据的计算正常。例如4. 12格式的overlap[N]中发生最大溢出的那个数是〃 0101.010101010101〃,由于前4位中最大溢出位为3 (加粗部分),那么K = 3。实施例二本实施例与实施例一的区别在于,输入数据xr[N]和输出数据sample [N]均为纯 Mbit,如图4所示,包括以下步骤Bi、对24bit的输入数据xr[N]做IMDCT处理;B2、利用16bit的修正数据0Verlap_in[N]对经IMDCT处理后的数据进行加窗及叠加处理,最后输出Mbit的数据sample [N]和Mbit的更新的修正数据overlapjut [N];B3、测得所述Mbit的更新的修正数据oVerlap_out[N]的N个值中的最大溢出位为K,其中K < 16;B4、将24bit overlap_out [N]按照K缩减为16位存储,定点存储格式为(1+K). (15-K);其中0Verlap_0ut的定点化格式将在1. 15 4. 12范围内动态变化。实施例三
本实施例与实施例一的区别在于,输入数据xr[N]和输出数据sample [N]均为纯 16bit,修正数据overlap_in[N]为8bit,如图5所示,包括以下步骤Cl、对16bit的输入数据xr[N]做IMDCT处理;C2、利用8bit的修正数据0Verlap_in[N]对经IMDCT处理后的数据进行加窗及叠加处理,最后输出16bit的数据sample[N]和16bit的更新的修正数据overlap_out [N];C3、测得所述16bit的更新的修正数据oVerlap_out[N]的N个值中的最大溢出位为K,其中K<8;C4、将16bit overlap_out[N]按照K缩减为8位存储,定点存储格式为(1+K). (7-K);其中0Verlap_0ut的定点化格式将在1. 7 4. 4范围内动态变化。实施例四本实施例与实施例二的区别在于,修正数据0Verlap_in[N]位8bit,如图6所示, 包括以下步骤D1、对24bit的输入数据xr[N]做IMDCT处理;D2、利用8bit的修正数据0Verlap_in[N]对经IMDCT处理后的数据进行加窗及叠加处理,最后输出Mbit的数据sample[N]和Mbit的更新的修正数据overlapjut[N];D3、测得所述Mbit的更新的修正数据oVerlap_out[N]的N个值中的最大溢出位为K,其中K<8;D4、将24bit overlap_out [N]按照K缩减为8位存储,定点存储格式为(1+K). (7-K);其中0Verlap_0ut的定点化格式将在1. 7 4. 4范围内动态变化。本发明针对音频解码中的IMDCT模块,提出了一种用于音频解码的定点修正离散余弦反变换的方法,该方法能够降低存储要求且维持高精度输出,该方法具有如下优点1、通过将overlap数据由高位宽(32位/ 位)改为低位宽(16位)存储,有效降低了存储要求,节省了生产成本;2、通过检测overlap的最大溢出比特数,能让低位宽(16位)存储的overlap动态使用尽可能最大的定点化精度,保证了最终PCM输出的高精度要求;3、本发明与实现IMDCT的具体算法和长度(N)无关,也即无论IMDCT采用何种算法,何种长度,本发明都可以在有效降低存储要求的同时维持高精度输出;4、本发明充分考虑到当前主流的CPU或者DSP的数据处理位宽,不需要使用非标准的比特位宽。本发明中建议的低存储位宽(16位)并非唯一,可以根据具体方案自由选择位宽, 以取得输出精度和存储要求之间的最优平衡,如实施例二至四。这里本发明的描述和应用是说明性的,并非想将本发明的范围限制在上述实施例中。这里所披露的实施例的变形和改变是可能的,对于那些本领域的普通技术人员来说实施例的替换和等效的各种部件是公知的。本领域技术人员应该清楚的是,在不脱离本发明的精神或本质特征的情况下,本发明可以以其他形式、结构、布置、比例,以及用其他元件、 材料和部件来实现。
权利要求
1.一种用于音频解码的定点修正离散余弦反变换的方法,其特征在于,包括以下步骤步骤一,对L bit的输入数据xr[N]做IMDCT处理;步骤二,利用P bit的修正数据0Verlap_in[N]对经IMDCT处理后的数据进行加窗及叠加处理,最后输出L bit的数据sample [N]和L bit的更新的修正数据overlapjut [N], 其中L与P均为正整数,且1^> ;步骤三,测得所述L bit的更新的修正数据0Verlap_0Ut[N]的N个值中的最大溢出位为K,其中K<P;步骤四,将L bit overlap_out[N]按照K缩减为P位存储,则定点存储格式为(1+K). (P-K-I)。
2.根据权利要求1所述的用于音频解码的定点修正离散余弦反变换的方法,其特征在于所述方法还包括步骤五,将当前帧的更新的修正数据0Verlap_0Ut[N]作为下一帧的修正数据oVerlap_in[N],重复步骤一;所述K为当前帧的更新的修正数据overlapjut [N] 中N个数里最大的溢出比特数;K的取值随帧的变化而变化。
3.根据权利要求2所述的用于音频解码的定点修正离散余弦反变换的方法,其特征在于当K大于等于0小于等于M时,所述定点存储格式在1. (P-I) (1+M). (P-M-I)范围内动态变化,其中M < P。
4.根据权利要求3所述的用于音频解码的定点修正离散余弦反变换的方法,其特征在于所述L的值为32,P的值为16,K大于等于0小于等于3,0Verlap_0Ut的定点化格式在 1. 15 4. 12范围内动态变化。
5.根据权利要求3所述的用于音频解码的定点修正离散余弦反变换的方法,其特征在于所述L的值为M,P的值为16,K大于等于0小于等于3,overlap_out的定点化格式在 1. 15 4. 12范围内动态变化。
6.根据权利要求3所述的用于音频解码的定点修正离散余弦反变换的方法,其特征在于所述L的值为16,P的值为8,K大于等于0小于等于3,overlap_out的定点化格式在 1.7 4. 4范围内动态变化。
7.根据权利要求3所述的用于音频解码的定点修正离散余弦反变换的方法,其特征在于所述L的值为24,P的值为8,K大于等于0小于等于3,overlap_out的定点化格式在 1.7 4. 4范围内动态变化。
全文摘要
本发明公开了一种用于音频解码的定点修正离散余弦反变换的方法,包括以下步骤步骤一,对Lbit的输入数据xr[N]做IMDCT处理;步骤二,利用Pbit的修正数据overlap_in[N]对经IMDCT处理后的数据进行加窗及叠加处理,最后输出Lbit的数据sample[N]和Lbit的更新的修正数据overlap_out[N],其中L与P均为正整数,且L>P;步骤三,测得所述Lbit的更新的修正数据overlap_out[N]的N个值中的最大溢出位为K,其中K<P;步骤四,将Lbitoverlap_out[N]按照K缩减为P位存储,定点存储格式为(1+K).(P-K-1)。本发明可以在有效降低存储要求的同时维持高精度输出。
文档编号G10L19/00GK102200963SQ20101060833
公开日2011年9月28日 申请日期2010年12月28日 优先权日2010年12月28日
发明者赵颖 申请人:上海山景集成电路技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1