利用 EDMA进行数据搬移, 提高存储速度
TMS320C6455DSP支持 EDMA功能 , 是在没有 CPU介入的情况下 , 访问存储器的一种工作方式。它可以直接通过 EDMA通道 , 提前把外设或片外存储器中的数据直接搬移到片上内存。对 CPU来说 , 所访问的数据总是在片内的 , 没有阻塞的情况发生 , 减少了 CPU等待时间[8]。
使用 TI的 CSL (Chip SupportLibrary )支持功能[9,10]。它有专门的 DMA模块 , 便于对 DMA的各个存储器控制。主要使用 DAT函数 , 进行 DMA存储器间数据传送。其中使用 DAT copy ( )和DAT fill ( )。
就象常用的内存操作 memcpy 、memset 一样 , 只需要在 API接口指出源地址、目的地址、长度、维数属性等 , 而不需要再去考虑具体的寄存器。
下面的代码就是把 SDRAM中的 90帧 CIF 288 ×352 格式视频序列中的一帧 , 利用 EDMA在缓存中进行搬移。
DAT_open(DAT_CHANNY, DAT_ PRI_ LOW,DAT_OPEN_2D);
Copy2FrameBuf(Unit8*framebuf)
{
if((tempbuf_rawbuf)>13685852)
if (tempbuf!=NULL)
free(tempbuf);
return 1;
}
DAT.copy(tempbuf,framebuf,152064);
Tembuf+=152064;
return 0;
}
编码器的总体性能
表2 MPEG-4编码器的性能
从表2数据可以看出,对于不同的视频序列帧率提高至少5倍以上,信噪比虽然有所降低,但是由于频帧的大幅度提高并达到实时要求而得到弥补,显示效果更好。
结语
笔者论述了TMS32OC6455DSP 平台上进行视频编码算法优化的措施。主要考虑根据DSP自身特点和视频算法进行优化,通过实验可以验证达到30帧/秒以上的实时性要求,随着IC 技术的发展和DSP 价格的降低,基于DSP的视频编码器的商用价值越来越明显。