法律状态公告日
法律状态信息
法律状态
2013-11-06
未缴年费专利权终止 IPC(主分类):G06F12/02 授权公告日:20120523 终止日期:20120916 申请日:20100916
专利权的终止
2012-05-23
授权
授权
2011-03-23
实质审查的生效 IPC(主分类):G06F12/02 申请日:20100916
实质审查的生效
2011-02-09
公开
公开
技术领域
本发明涉及DSP音频编码领域,特别是涉及一种在DSP上实现先进音频编码算法的内存优化方法。
背景技术
先进音频编码算法(Advanced Audio Coding),简称为AAC,是ISO MPEG组织在MPEG-2基础上发展起来的一种新一代感知音频压缩编码技术,该技术综合了多种主流音频编码技术的优点,具有信号压缩比高,重建音质好,编码过程高度模块化和声道配置灵活等特点。但在DSP实时音频编码应用领域,AAC始终没有取得领先地位,究其原因,一方面是由于AAC编码算法本身的高复杂度,一方面是由于DSP系统资源有限导致AAC编码算法在该系统上的实现存在困难。
当前的优化方法主要是对AAC快速编码算法的研究,这些优化算法降低了AAC编码本身的复杂度,但并没有解决在DSP有限资源条件下充分实现AAC编码算法的问题。
发明内容
为了克服AAC编码算法在DSP系统上实现困难的缺点,本发明提出一种在DSP上实现AAC音频编码的内存优化方法,使得AAC编码算法在DSP有限的系统资源条件下得以实现。
为了达到以上目的,本发明采用如下技术方案:
步骤一:使用直接内存访问机制实现采样音频数据到AAC编码器的搬运,包括将PCM音频码流以每帧1024个采样点的形式传输到DSP中进行AAC编码;
步骤二:对编码结构体进行外部静态内存分配,在编码函数中使用指针的形式调用该结构体,编码结构体中应包含用户配置信息、心理声学模型配置信息、滤波器系数、窗函数信息、频谱系数、量化模块信息。
步骤三:由于AAC编码过程中栈的大小相对于堆是相对可控的,于是在栈的内存分配过程中,首先通过仿真测试的方法精确测量栈的使用深度,然后设定 栈的大小以节约内存资源,栈的计算式(1)所示:
Stack=addr(Stack_end)-min(Sp) (1)
其中addr(Stack_end)指测试得出的栈底地址,min(Sp)指指针的最小值即栈顶地址。
步骤四:编码完成后,使用直接内存访问机制实现编码数据到下级设备的搬运,即将AAC码流以帧的形式传输到下级设备中,帧的大小由下级设备与编码器约定。
本发明的优点以及积极效果在于:该内存优化方法减少了DSP系统内存碎片的产生概率,对栈的合理分配节约了内存的使用量,并提高了数据传输以及内存访问的效率,使得AAC编码算法在DSP有限的系统资源条件下得以实现。
附图说明
图1是本发明中的AAC编码内存优化流程图;
图2是本发明中的DSP与外围设备通信原理图;
图3是本发明中的编码程序栈深度测试原理图;
具体实施方式
本发明是一种在DSP上实现AAC音频编码的内存优化方法,为使本发明的目的、技术方案和优点更加清楚,以下结合具体实例以及附图,对本发明的技术方案做进一步说明。主要内容如下:
本发明流程如图1所示,以下分别就图1中101-104分四个步骤详细说明。
步骤一:如图2中201所示,将DSP(本例中为TI系列的C6727系列DSP)的EMIF总线与外围设备(本例中为FPGA)相连,由外围设备控制音频PCM码流以1024个采样数据为一帧的形式传输到DSP中,此过程中,使用DSP的直接内存访问机制以实现数据的高效传输。
步骤二:如图1中的102所示,对于AAC编码中频繁使用的数据结构使用静态内存分配代替动态内存分配。
具体方法是对编码结构体进行外部静态内存分配,并在编码函数中使用指针的形式调用该结构体,编码结构体中包含用户配置信息、心理声学模型配置信息、滤波器系数、窗函数信息、频谱系数、量化模块信息。
步骤三:如图1中的103所示,在栈的内存分配过程中,首先通过仿真测试的方法精确测量栈的使用深度,然后设定栈的大小以节约内存资源。本例中使用CCS(C6727系列DSP开发平台)提供的HWI(硬件中断)对象的monitor,将其属 性域配置为stack pointer(堆栈指针)来追踪系统的堆栈指针,monitor的统计模块可以精确的得出硬件中断发生时指针指向的堆栈位置。如图3所示,栈的计算公式如下所示:
Stack=addr(Stack_end)-min(Sp) (1)
其中addr(Stack_end)指测试得出的栈底地址,min(Sp)指指针的最小值即栈顶地址。
步骤三:编码完成后,如图2中202所示,使用直接内存访问机制实现编码数据到下级设备的搬运,即将AAC码流以帧的形式传输到下级设备中,帧的大小由下级设备与编码器约定以适应不同传输码率需要。
说明书附图中出现的英文缩写,其含义如下:
DMA:直接内存访问
EMIF:DSP配备的外部存储器接口;
PCM:脉冲编码调制。
Stack_end:编码程序的栈底位置。
机译: 使用直接内存访问(DMA)引擎在低内存处理器上实现高内存算法的设计方法
机译: 先进的处理器,在数据移动环上使用桥接器,以实现内存和I / O流量的最佳重定向
机译: 先进的处理器,在基于环的数据移动网络上实现内存排序