找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

[嵌入式/ARM] 用DSP实现MPEG音频层III压缩的加速方法

[复制链接]
admin 发表于 2013-3-22 08:30:40 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
  1 概述
     数字音频压缩技术给人们提供了一种更为有效的音频存储、传输方法。音频压缩的技术有很多种,它们的复杂度、音频压缩质量、以及压缩比都有很大的差别。如:μ-law音频压缩算法,其特点是简单,但压缩比很低,但音质一般。根据CCITT G.711建议,采用自然对数的量化过程,在输入幅度比较小的时候能够提供比较大精度的量化,而对于出现概率比较小的大幅度信号,量化噪声相对而言则较大。这种量化方式使得8 bit的数字量化信号在量化噪声效果上等同于14 bit的线性量化。而ADPCM压缩编码则充分利用了相邻的抽样值幅度变化比较小的特点,编码输出结果是当前抽样值与预测值的差值。虽然ADPCM编码的保真度较高,但其压缩比却比较小,只能够达到4/1的压缩比。改进的ADPCM编码方法有IMA (Interactive Multimedia Association)提出的改进算法,CCITT的G.721,G.723建议等[1]。
     MPEG(Motion Picture Expert Group)音频压缩标准提供了一种高保真度,高压缩比的压缩算法。在ISO11172-3标准中,描述了具有不同复杂度和性能的子带音频编码方案,以适应各种高音质数字音频的应用。根据编码计算复杂度及编码效率的不同,分为层I,层II和层III三种标准。
     MPEG音频标准最初来源于被分为四种类型的算法草案,它们是音频频域感觉熵编码ASPEC(Audio Spectral Perceptual Entropy Coding),掩蔽模式通用子带集成编码与多路复用MUSICAM(Masking-pattern Universal Sub-band Integrated Coding and Multiplexing),子带ADPCM SB/ADPCM(Sub-Band Adaptive Difference PCM)。经过一系列的客观和主观音质测试,考虑到不同比特率下的音质,对传输比特错误的敏感性,编码/解码复杂度,以及编解码延时等因素,在大约100 kbit/s低码率下,ASPEC和MUSICAM表现出最好的音质效果。在低码率(64 kbit/s)时,ASPEC表现出更为出色的音质,而MUSICAM则在编码解码的复杂度和延时上略胜一筹。根据ASPEC的若干算法,对 MUSICAM进行改进,加大了计算复杂度,但获得了更好的压缩比及音质,这就是ISO11172-3音频层III的标准。
     层I是最简单的一种算法。如Philips公司的数字盒式录音机DCC(DIGItal Compact Cassette)便是利用层I的压缩算法,其应用的比特率为192 kbit/s每通道。
     层II具有中等的编码复杂度,适用比特率大约为128 kbit/s每通道。广泛应用于数字音频广播DAB(Digital Audio Broadcasting)的音频编码及视频CD中。
     层III是最复杂的编码算法,但是在相同的比特率下,它所提供的音质也是最好的。典型的比特率为64 kbit/s,最适合于ISDN上的音频传输。
     1998年4月22日,APT(Audio Processing Technique)公司利用Apt-X100系统,通过ISDN线路,成功地转播了北京-东京-上海的“国际地球日”大型广播音乐会。但是,这次转播占用了3条(即6个B)的ISDN线路,以保证22 kHz频响的立体声传送,这是由于Apt-X100系统采用的是SB/ADPCM音频压缩方法[2]。然而,如果使用MPEG层III音频压缩方法,只需要一条ISDN线路,就可以实现22 kHz频响的立体声传送。由于MPEG层III音频压缩编码复杂度太高,运算量太大,难以用一般的DSP(Digital Signal Processor)单片实现,所以在目前的音响设备中很少使用这一算法。为了能用较低的成本实现MPEG层III这一高效音频压缩算法,我们对这一算法进行了全面分析,提出了适用于DSP实现的编码加速方案。
     2 MPEG音频层III压缩编码流程及特点
     MPEG音频层III压缩编码流程如图1所示,相对于层Ⅰ和层Ⅱ而言,其特点在于:
    20121107051935672844848.jpg
   图1 MPEG音频层Ⅲ编码流程图(单声道模型)
     (1)利用独立于信号频率及声压级的耳蜗扩散函数(Cochlea spreading function)-Modified Rounded 类扩散函数,计算人耳听觉的掩蔽门限。
     (2)增加了MDCT模块,以提高频率分辨率。
     (3)通过控制环,对非均匀量化率进行迭代分配,以保持相对恒定的信噪比。并且,采用不定长熵编码-Huffman编码,对量化后的各子带信号可以获得更好的数据压缩比。
     将层III编码算法流程分成:(1)时频映射,(2)心理声学模型,(3)量化编码等三大功能块。时频映射中,是多相混合滤波器组(Polyphase/MDCT Hybrid Filter Bank)的计算,这是较规范的计算,其运算量是可计算的。而且有各种快速算法,以降低运算复杂度。心理声学模型的计算,主要运算量集中在1 024点和256点的FFT。不过,这是比较标准的计算过程,无论用哪种FFT都可以精确估计其运算复杂度。而量化编码是通过迭代循环来完成,其循环控制变量是不确定的,再加上Huffman码表的查找表过程,使其运算量和复杂度难以预测和估计。因此,我们认为:量化编码部分的规范化是优化MPEG音频层 III编码的突破点。
   
     层III编码器迭代循环与量化编码部分完成的功能是:将子带滤波和MDCT变换后的样值进行量化并根据心理声学模型的计算结果进行量化噪声的控制,使得在一定比特率要求的情况下完成频域信号的Huffman编码。层III量化编码部分的迭代循环分为内循环和外循环,参考文献[1]中FigureC. 9.a,C.9.b,C.9.c给出了量化编码的迭代循环流图。
     3 用DSP实现音频层III压缩的主要问题及解决方案
     DSP编程并不提供像C语言一样的灵活指针、数组寻址操作。在用DSP实现音频层III压缩中的迭代循环量化编码时,由于涉及到非规则性的大量数组寻址操作,而消耗大量指令,降低了DSP的利用率,抑制了编码的实时实现。因此,不规则的类似表查询指令,需要经过很好的组织才能够使程序结构清楚,简洁,高效。
     3.1 Huffman编码的多重地址索引
     层III编码中的Huffman编码是一个穷举、查表的过程。在参考文献[1]表B.7中列出了用于层III编码的32个Huffman码表。它们的最大值域范围,码表适用的信号统计特性都不相同。在编码过程中,首先找到能够将所要编码区域样值的最大值,并依次查询各个Huffman码表,直到该码表能够对这一最大值进行编码为止,然后计算用该表进行编码所需的比特数。再尝试相同编码值域范围的另一些码表,找到最小比特数需求的码表进行最后的编码。
     由于标准中所提供的32个表中,并非所有的表都能用,而且有大量的码表只是linbits不同。因此如何存储这些码表,并能够很方便地进行查询、编码,是编码过程中很关键的问题之一。但提出的“多级索引”方法可以很好地的解决这一问题。过程如图2所示。对可能的表有不同的处理方式:
    20121107051935813464849.jpg
   图2 Huffman编码的多重地址索引
    正常表 如表15,即每一级索引都是对应于表15的各项信息。
    无效表 如表14,其最终的指向是码表零,即相当于无效表。
    雷同表 如表16和17实际上只是在第II级索引的linbits不同,其最后的Huffman数据是相同的。通过这样的多级码表地址索引可以很好的解决程序的模块化实现。
     3.2 层III编码迭代循环的加速
     在迭代循环编码部分,对于使用标准中所建议的初始量化常数进行量化和编码时,初始比特数要求要远远大于所允许的上限值。这时,如果只是将步长加一进行再次量化编码,将会使得系统效率大大地降低。
     经过实际的实验结果,一般初始可获得比特数大约为700 bits/Granule,而初始的量化编码结果一般在5 000 bits以上。如果再次量化步长加上20,可以迅速地逼近所要求的比特数。表1列出了一种我们使用的可能加速逼近方法。
   表1 一种可能的迭代循环加速方法
    20121107051935860334850.jpg
     在AD(Analog Device)公司的定点DSP芯片ADSP2181上实际的运算结果表明,这种加速方法能够将原算法的指令运算周期减少2/3左右。
     4 结束语
     MPEG音频层III压缩标准是一种高效、高保真的压缩编码算法,但由于其复杂度和运算量较高,很难用一般的DSP实时实现。在对该算法进行全面分析的基础上,提出了在用DSP实现时,降低复杂度、提高DSP运算效率的关键是优化循环迭代量化编码。提出“Huffman编码的多重地址索引”,对非规则性的大量数组寻址操作提供了简明清晰的线条,节省了寻址指令,提高了DSP的利用率。进一步还提出了“迭代循环的加速”方案,通过ADSP2181定点芯片的运算,表明该方案能减少2/3的指令周期。
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-23 19:30 , Processed in 0.056005 second(s), 10 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表