嵌入式视频图像系统压缩算法的实现和优化

[10-10 20:42:03]   来源:http://www.88dzw.com  电子制作   阅读:8505

文章摘要:引言 随着网络技术和多媒体技术的发展.视频通信的需求逐渐增加.同时最新的视频压缩标准不断推出。MPEG-4 ( Moving Pictures Expcrts Group-4)是国际运动图像像编码专家组(MPEG Moving Picture Experts Group)在1998年11月制定[1]的,它不同于其他标准.是个而向多媒体应用的压缩标准. 第1次提出了基于对象的压缩方法.使交互功能的实现成为可能。日前基于PC平台的MPEG-4视频编码器[2]在互联网的远程教育和高清晰电影等方面己经有较多的应用.但在硬盘录像机、多媒体通信等视频业务的嵌入式系统应用更为广泛。以DSP为嵌入式图像处理核

嵌入式视频图像系统压缩算法的实现和优化,标签:电子小制作,http://www.88dzw.com

引言

随着网络技术和多媒体技术的发展.视频通信的需求逐渐增加.同时最新的视频压缩标准不断推出。MPEG-4 ( Moving Pictures Expcrts Group-4)是国际运动图像像编码专家组(MPEG Moving Picture Experts Group)在1998年11月制定[1]的,它不同于其他标准.是个而向多媒体应用的压缩标准. 第1次提出了基于对象的压缩方法.使交互功能的实现成为可能。日前基于PC平台的MPEG-4视频编码器[2]在互联网的远程教育和高清晰电影等方面己经有较多的应用.但在硬盘录像机、多媒体通信等视频业务的嵌入式系统应用更为广泛。以DSP为嵌入式图像处理核心的系统,具有开发周期短,编程灵活的特点,因此DSP图像处理系统成为了研究热点。

DSPs结构特点

TMS320C6455是TI ( Tcxas Instrumcnts Incorporatcd)公司推出的最新高速DSP芯片[3]。具体结构见图1。最主要的特点从是结构[4]上采用了VLIW(VLIW: VeryLong Instruction Word)超长指令字内核结构.具有1200 MHz的CPU,每个周期可以同时执行8条32bit的指令。速度可达到9600 MIPS ( 1200 MHz X 8条指令=4 800 MIPS) 。片内采用2级高速缓存结构.片外存储器有很强大的外部存储器接口EMIF ( Extcrnal Mcm ory Intcrfacc)。 这些性能能满足视频图像处理的实时性要求.确立了它在高端多媒体应用中的地位。

图1 TMS320C6455DSP 的内核结构

对Cache的优化

最大程度地发挥Cache效率是达到期望编码器性能的一个关键因素[5]。Cache高速的存储访问速度可以减少CPU延迟周期.提高处理器的效率。TMS320C64xDSP有两级存储结构应用片内数据和程序存储。对于L1Cache能够以CPU的同样速度访问。L2Cache既可以作数据空间也可以作为程序空间使用.L2是片外空间与L1的桥梁。

MPEG-4视频编码器是以宏块为单位进行编码处理 ,只有当前宏块处理完成所有的过程后,视频编码器才能传送一个宏块。直接出现的缺点是: 一个视频编码器整个代码大于 L1P。每个宏块在 L1P和 L2之间的传送过程 ,导致严重的Cache缺失。而一个单独的宏块从片外存储空间到片内空间的搬移 , 也不能发挥 EDMA (Extended Direct Memony Access )的优势。
  
为避免发生的Cache大量缺失,采取 3种方法[6] 。

1.整个编码算法应该分成 3个模块: 宏块编码、运动估计、运动重建 , 这样使每个模块代码都适合 L1P。每次循环以宏块组为单位 , 宏块组的大小由 L1D大小决定。在宏块编码模块中, 当宏块组被传送到片内,他们一起经过 DCT Direct Cosine Transform 、量化、熵编码 , 直到宏块组编码模块结束为止,L1D才刷新这组宏块。同时对应的程序包括 DCT、量化、熵编码也被保存到 L1P。

www.88dzw.com

利用 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);

[1] [2]  下一页


Tag:电子制作电子小制作维修教程知识 - 电子制作