保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

基于OMAP的MPEG—4实时解码器的实现


过VLC解码、反扫描、反预测、反量化和反DCT得到的只是残差信息。利用解码得到的运动矢量、残差信息和参考帧进行运动补偿可以得到重构的帧。(凹丫丫范文网fanwen.oyaya.net收集整理)

2.2 在OMAPl510上的程序结构

在OMAP上开发程序通常分为两部分,一部分是使用Embedded Visual C开发ARM端程序,另一部分是使用TI CCS开发DSP端程序。前者主要是为了使设计的算法与xDAIS(eXpressDSP TM算法标准)兼容,在ARM端程序中调用一些DSP/BIOS桥的API实现在DSP上初始化信号处理任务、与DSP任务交换消息、对来自DSP和从DSP发出的数据流进行缓冲、暂停、继续、删除DSP任务并进行资源状态查询等。而具体的功能实现则是在DSP端完成。图2显示了TI-enhanced ARM925应用程序与DSP节点之间的关系。

通过写节点封装器的创建、执行及删除函数,将xDAIS算法封装于DSP节点中。创建函数可分配节点处理和xDAIS算法所需的存储器,还可分配节点的相关模块。这些模块是传递到执行和删除函数的一种结构。创建函数还可给出xDAIS算法的实例,并可将其激活,还可初始化任何在任务执行前必须初始化的数据或参数。执行函数是主要的分派函数,在此函数执行阶段中一般不分配存储器及其它资源。执行函数一般包括消息处理循环,该循环可中断函数并等待来自ARM925的消息或数据流,然后节点将这些消息或数据分派到合适的xDAIS控制或处理任务中去。同时执行函数查询DSP/BIOS桥所发送的指示函数退出循环的特殊消息,然后检查定制消息或流数据,并对这些消息或数据流进行适当处理。删除函数清空创建函数所分配的资源,包括相关模块和数据流。删除函数还必须关闭算法、释放存储器以及分配给节点的其它资源。

2.3 程序的优化考虑

(1)合理分配存储位置。TMS320C55x的片内存储器容量小而存取速度快,片外存储器容量大但存取速度慢。在分配存储器的时候应考虑到这个特点合理地安排程序各部分。对于那些使用频繁的变量应考虑放在片内,如VLC表、运动矢量、反量化、反DCT的系数以及其它中间变量都应放在片内,而对于那些执行次数比较少或者比较大的变量如参考帧和当前解码出的帧则应该放在片外。此外由于编译和分配空间是以文件为单位的,所以应当把使用频繁的函数尽量放在相同的几个文件中,再将这几个文件放入片内存储器以高效地利用有限的片内资源。

(2)数据传输的管理。对于视频解码工作来说,TMS320C55x的片内存储器资源不是很多,必须合理利用。例如一帧4∶2∶0的QCIF(176x144)图像,如果以紧凑的方式(2个字节存到一个16bit的字中)存放也需要18K字。因此不可能在解码时把一整帧都放在片内,而应考虑使用DMA在需要时把图像的一部分传入片内进行处理。此外,为了使CPU访问和DMA传输同时无冲突地进行,将数据访问设计成乒乓结构。在解I帧时片内准备两个大小为一宏块行的存储区用于存放YUV数据,CPU将解码的一宏块行数据放在其中一块后,DMA把这一宏块行的数据传输到片外对应的位置,同时CPU解下一宏块行的数据并将结果放在另外一块存储区,DMA再传送此块的数据,如此反复执行。选择两宏块行大小的原因是不能使用片内太多的存储器资源,同时如果每次解码传输的数据太少将过于频繁地启动DMA,导致效率下降,折衷考虑决定在片内为解码数据开辟两宏块行大小的缓存。而在解P帧的时候因为要先读入参考帧的某些数据所以更为复杂。在片内开辟两块缓存,用以存放对Inter宏块进行运动补偿所需的参考帧中对应搜索范围内的数据,同时准备两个宏块大小的片内空间用于存放当前宏块解码的结果(为描述方便称为M1和M2)。此时需要使用两个DMA通道,通道1负责将解当前宏块进行运动补偿时所需的参考帧部分数据读到片内缓存中,通道2负责将解码的数据传输到片外对应的空间。先启动通道1读所需参考帧数据到缓存1,CPU用这些数据和读人的码流对Inter宏块进行运动补偿解出当前宏块的数据放入M1,同时通道1读下一宏块所需的参考帧数据到缓存2。之后CPU、通道1、通道2并行工作,CPU利用缓存2的数据解下一宏块放入M2,通道1再读数据到缓存1中,通道2将解码的数据从M1传输到片外对应的空间,如此循环,P帧利用DMA解码如图3所示。

    (3)使用TI提供的IMCLIB库函数。IMCLIB是专门为图像处理和视频提供的库,用来提高视频处理速度。这些库函数中有的是软件库函数,是用汇编写成的高效代码例如反量化函数IMG_dequantiZe_8x8等;有的则是硬件库函数,它们利用OMAPl510芯片中一些专门为视频编解码的硬件加速模块来处理数据,如利用反DCT模块的IMG_idct_8x8等,这些函数处理数据的

《基于OMAP的MPEG—4实时解码器的实现(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/163282.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。