在定点dsp进行mp3音频解码时优化内存空间的方法

文档序号:7514440阅读:215来源:国知局

专利名称::在定点dsp进行mp3音频解码时优化内存空间的方法
技术领域
:本发明涉及基于16位定点DSP的MP3音频解码算法实现,尤其涉及一种在定点数字信号处理器(DSP)进行MP3音频解码时优化内存空间的方法,对一些复杂算法进行优化和合理分配内存空间,提高解码速度的同时降低内存占用率。
背景技术
:活动图像专家小组(MPEG)是IS0/IEC的一个工作小组,负责制定有关活动图像、音频及其组合的压縮、解压縮处理等方面的技术标准。MPEG-1LAYER3(MP3)是MPEG-1国际标准音频(ISO/IEC11172)第三层编码/解码算法,它具有压縮比高,可达l:101:12、声音还原质量好、算法复杂度适中等优点。利用这种标准制作的MP3格式音乐在数字音频的存储、互联网上的多媒体音视频传输等领域得到了广泛的应用。因此,便携式MP3播放器等消费类电子产品也有极大的市场前景。当前市场的MP3播放器大都基于专用集成电路(ASIC)实现,因此存在功能单一、灵活性不够的特点,对于满足消费者对产品新功能、多功能等体验有很大的局限。因此基于定点数字信号处理器(DSP)的MP3音频解码的研究和实现成为满足这一需求的快捷方案。基于定点DSP的音频解码研究和算法实现主要在两个方面受到限制,即解码速率和内存空间的占用率。解码速率体现在解码音频的实时性和连贯性,如果解码速率与音乐数据流不同步,则会严重影响音乐的听觉效果。内存空间占用率主要指在解码过程中,一些中间数据的存储以及空间的及时释放和再利用。当前基于定点DSP的MP3解码实现主要侧重于解码速率的优化,虽然在一定程度上简化了解码指令,提高了解码速率,但却以占用更多的内存资源为代价。对于有限的DSP内存资源来说,就无法进行更多功能的扩展实现。因此,在尽可能提高MP3音频解码速率的同时,也对内存空间占用情况进行优化和再利用,是技术发展的必然需要。
发明内容(—)要解决的技术问题有鉴于此,本发明的主要目的在于提供一种在定点数字信号处理器(DSP)进行MP3音频解码时优化内存空间的方法,以解决在定点DSP芯片进行MP3音频解码实现过程中,对于DSP内存空间占用量过高的情况进行优化。(二)技术方案为了达到以上目的,本发明采用如下技术方案—种在定点DSP进行MP3音频解码时优化内存空间的方法,其中,定点DSP进行MP3音频解码包括音频编码数据读入缓存、读头信息,提取主数据、解码比例因子、解码霍夫曼数据、反量化采样、立体声处理、频谱重新排序、混迭信号消除、改进型反离散余旋变换和子带合成滤波器;其特征在于,该方法包括将反量化采样、立体声处理、改进型反离散余弦变换和子带合成滤波器步骤中涉3及的浮点运算转换为定点运算;以及将实时解码产生的中间数据采用DSP的直接内存访问机制进行数据搬运,存入到外部存储器。上述方案中,该方法进一步包括在解码霍夫曼数据的步骤中采用16bit空间混用部分代码,将每个二维数组用一个16位的地址空间来保存。上述方案中,该方法进一步包括在改进型反离散余旋变换和子带合成滤波器的步骤中,对正弦余弦进行查表运算,根据余弦对称性将查表空间由144个降到18个;根据正弦对称性以及实际解码需要,可将查找表空间由144个降到60个;窗函数也可采用查找表法由2048个空间降到496个空间。上述方案中,该方法进一步包括对于动态存储空间采用縮减音频编码数据流缓存,在解码速度和缓存块大小之间进行折中。上述方案中,所述在解码速度和缓存块大小之间进行折中时,采用256的动态内存空间存放原始数据流。(三)有益效果针对解码实际流程的需要,将各类数据分别存放于静态内存空间或动态内存空间,再针对具体数据特征对各内存空间占用率进行合理优化和分配,从而大大节省了内存空间资源。图1是MP3音频解码流程图;图2是本发明提供的在定点DSP进行MP3音频解码时优化内存空间的方法流程图;图3是本发明中浮点和定点解码波形文件及其相对误差分析图;图4是本发明中部分存储空间(16bit)以及解码速度比较;图5是本发明中霍夫曼解码数据存取空间调用代码;图6是MP3帧数据流结构;图7是IMDCT解码公式和子带合成滤波器中边带合成滤波表达式;图8是利用DMA机制进行内存与外存数据直接读取模式;图9是本发明中最终占用空间资源比较结果。具体实施例方式为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。首先,从占用空间资源的角度分析,音频解码数据读入缓存(Streambuf)、保存霍夫曼解码表、MDCT(改进型反离散余弦变换)以及子带合成滤波都需要占用较大的内存空间。其中静态存储区主要存储音频解码流、霍夫曼解码表、窗函数和一些全局变量,静态数据一直占据内存且数据值基本保持不变,合理存储静态数据可以节省很大的内存资源;动态存储区主要存储实时解码中间数据,将中间数据保存在外部存储器,也可以节省内存。本发明提供的在定点DSP进行MP3音频解码时优化内存空间的方法,包括静态内存的优化,主要指对于霍夫曼解码模块、改进型逆离散余弦变换模块和子带合成滤波器模块涉及的静态数据进行优化和縮减空间占用率,并且不会引进误差;动态空间的优化,主要指对于音频解码数据流进行动态更新,并且进行浮点转定点的运算节省内存空间;将中间数据使用DMA机制存入外存,提高内存空间利用率。下面将结合附图,详细说明本发明的每一个具体实施例。图1为MP3音频解码流程图,该方法包括音频编码数据读入缓存、读头信息,提取主数据、解码比例因子、解码霍夫曼数据、反量化采样、立体声处理、频谱重新排序、混迭信号消除、改进型反离散余旋变换和子带合成滤波器。其中,反量化采样、立体声处理、MDCT、子带合成滤波器都需要进行浮点运算,而16位定点DSP芯片在处理浮点运算过程中,浮点数是以32bit形式存储运算的,虽然解码精度高,但是解码速度很慢,同时也占用大量的内存空间,将浮点运算转为定点运算,在保持解码精度不会带来明显影响的情况下可以使存储空间和解码速度有很大改进。图2是本发明提供的在定点DSP进行MP3音频解码时优化内存空间的方法流程图,该方法主要是将反量化采样、立体声处理、改进型反离散余旋变换和子带合成滤波器步骤中涉及的浮点运算转换为定点运算;以及将实时解码产生的中间数据采用DSP的直接内存访问机制进行数据搬运,存入到外部存储器。图3为浮点与定点运算解码出的PCM波形文件以及相对误差波形。由图3可见,在音量微弱处二者相对误差较大,定点算法基本丢失了原始数据,而只要音量微弱的地方不要持续时间太长,带来的误差也不会很大,而且对于人耳听力基本没有差别。部分以浮点保存的数据转换为定点可以节省一半内存,同时解码速度也提高到原来的3倍左右。图4是浮点运算和改为定点运算的部分存储资源占用率以及解码速度比较结果。所述DSP的直接内存访问机制是一种独立于处理器且能在内存和外部存储器之间直接传输数据的专用控制器实现机制,处理器通过提供写入数据地址、读出数据地址、读写数据深度、使能标志参数设置DSP的直接内存访问机制,DSP的直接内存访问机制自动读写并发出中断信号。本发明提供的在定点DSP进行MP3音频解码时优化内存空间的方法,进一步包括在解码霍夫曼数据的步骤中采用16bit空间混用部分代码,将每个二维数组用一个16位的地址空间来保存。图5是进行16bit空间混用部分代码。在解码霍夫曼数据模块中,将霍夫曼解码表以字节形式存入16bitDM,这样每个memory的高8位都为O,霍夫曼码表一共占用2804个地址空间。根据霍夫曼解码原理,解码树的数据为二维数组,每一个数据值都在0到0xFF之间,所以可以将每个二维数组用一个16位的地址空间保存,这里可以设定低八位保存H0,高八位保存H1。具体调用语句如图5,其中ht[table—number]指所放的霍夫曼解码表对应矩阵,table_number范围为031,val[treelength]指霍夫曼解码树对应矩阵值,treelength范围为0512。使用上述方法,在保证数据读取正确的前提下,没有给整个解码过程引入误差,内存占用可降到2804/2=1402个地址空间。图6是MP3帧数据流结构,由图6可见,主数据不一定跟随在各自帧边信息的后边。以数据流的前三帧为例,分析数据流的主要数据内容。第一帧数据中包括第一帧的全部主数据和第二帧的部分主数据,在第二帧的数据中包括第二帧的剩余主数据和第三帧的5部分主数据,以此类推,在提取主数据信息时,Mairudata—end是一个9bit宽的指针,用来标志当前帧主数据的结束,紧随其后的就是下一帧主数据的开始,当检测到Mairudata—end时,当前帧的主数据结束,还需要开辟一个Databuf存储下一帧的部分主数据,在解码时都是以8bit的形式读取存放在内存空间中,对于16位的DSP内存空间有点冗余,因此可以按16位的数据流存放和读取,能够使Databuf的地址空间縮减一半,这里可由原先的2048的空间地址值降低到512的内存空间进行缓存来縮减内存空间。本发明提供的在定点DSP进行MP3音频解码时优化内存空间的方法,进一步包括在改进型反离散余旋变换和子带合成滤波器的步骤中,对正弦余弦进行查表运算,根据余弦对称性将查表空间由144个降到18个;根据正弦对称性以及实际解码需要,可将查找表空间由144个降到60个;窗函数也可采用查找表法由2048个空间降到496个空间。图7是IMDCT解码公式(摘自IS0/IEC11172-3)和子带合成滤波器中边带合成滤波表达式,解码过程中涉及到正弦余弦变换及运算,为了提高解码速度,这里对正弦余弦进行查表运算,在MDCT模块和子带合成滤波器都采取相应的算法。根据余弦对称性可以将查表空间由144降到36而不会引入误差和太大的运算,在实际运算中由于只用到余弦参数为奇数的对应值,所以仅需18个地址空间就可以满足运算。4个正弦运算数据需要36*4=144个地址空间,根据音频解码部分序列为相逆的序列数组,可以用一个36位的数组保存数据,对于部分相同的序列,只要12个地址空间就可以保存全部数据,然后根据正弦函数对称性,还可以节省一半空间,这样全部需要18+36+6=60个地址空间保存所有表值。在子带合成滤波器中边带合成滤波表达式中,对于保存定点数据,遍历k值及i值需要64*32=2048的地址空间,首先根据余弦函数的对称性可以将存储空间縮减到2048/4=512,再根据实际运算中当i=48时,所有值保持常数-l,不需要保存此16个数据,所以仅需512-16=496个地址空间。图8是DMA直接内存访问机制图,Mp3解码过程中需要将每一帧的数据解码成PCM格式并输出,同时需要保存当前帧的数据留到下一帧使用,这里采用DSP的直接内存访问(DMA)机制进行数据搬运。DMA由一种独立于处理器的,能在内存和外存之间直接传输数据的专用控制器实现,处理器通过提供写入数据地址、读出数据地址、读写数据深度、使能标志等参数设置DMA,DMA可以自动读写并发出中断信号。本发明采用对于PCM格式的每一帧1152字节的解码数据进行搬运和存储到外存,可以节省内存1K的地址空间。对于动态存储空间还可以縮减音频编码数据流缓存(Streambuf),这一过程对解码结果没有影响,只是需要在解码速度和缓存块大小之间进行折中,这里开辟256的动态内存空间存放原始数据流。图9是本发明最终占用空间资源比较结果,纵向比较,从最初的占用空间大于20K降到小于8K的资源,横向比较,换算为8bit形式,也比一些文献记载的最低记录少占用4K以上的内存空间。以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。权利要求一种在定点DSP进行MP3音频解码时优化内存空间的方法,其中,定点DSP进行MP3音频解码包括音频编码数据读入缓存、读头信息,提取主数据、解码比例因子、解码霍夫曼数据、反量化采样、立体声处理、频谱重新排序、混迭信号消除、改进型反离散余旋变换和子带合成滤波器;其特征在于,该方法包括将反量化采样、立体声处理、改进型反离散余旋变换和子带合成滤波器步骤中涉及的浮点运算转换为定点运算;以及将实时解码产生的中间数据采用DSP的直接内存访问机制进行数据搬运,存入到外部存储器。2.根据权利要求1所述的在定点DSP进行MP3音频解码时优化内存空间的方法,其特征在于,该方法进一步包括在解码霍夫曼数据的步骤中采用16bit空间混用部分代码,将每个二维数组用一个16位的地址空间来保存。3.根据权利要求1所述的在定点DSP进行MP3音频解码时优化内存空间的方法,其特征在于,该方法进一步包括在改进型反离散余旋变换和子带合成滤波器的步骤中,对正弦余弦进行查表运算,根据余弦对称性将查表空间由144个降到18个,将正弦查找表空间由144个降到60个,窗函数查找表由2048个空间降到496个空间。4.根据权利要求1所述的在定点DSP进行MP3音频解码时优化内存空间的方法,其特征在于,该方法进一步包括对于动态存储空间采用縮减音频编码数据流缓存,在解码速度和缓存块大小之间进行折中。5.根据权利要求4所述的在定点DSP进行MP3音频解码时优化内存空间的方法,其特征在于,所述在解码速度和缓存块大小之间进行折中时,采用256的动态内存空间存放原始数据流。全文摘要本发明公开了一种在定点DSP进行MP3音频解码时优化内存空间的方法,包括静态内存的优化,主要指对于霍夫曼解码模块、改进型逆离散余弦变换模块和子带合成滤波器模块涉及的静态数据进行优化和缩减空间占用率,并且不会引进误差;动态空间的优化,主要指对于音频解码数据流进行动态更新,并且进行浮点转定点的运算节省内存空间;将中间数据使用DMA机制存入外存,提高内存空间利用率。本发明对DSP的内存空间使用进行优化分配,比其他解码方法节省了更多的内存空间,并且提高了解码效率。文档编号H03M7/30GK101741391SQ20081022668公开日2010年6月16日申请日期2008年11月19日优先权日2008年11月19日发明者梁利平,王志君申请人:中国科学院微电子研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1