基于DM642DSP的视频编码优化方法

2012-09-01 14:24:14来源: 互联网

引言

当前在视频监控,视频会议,网络流媒体等方面数字视频编码成为最核心,最基本的技术手段,尤其是视频监控现已成为最为普通的安保设备之一。基于电脑硬盘为存储体的数字DVR已日渐取代模拟DVR。数字DVR的最关键技术就是视频压缩技术,而视频压缩技术又含有两大选择。首先是视频压缩采用何种算法标准,当前视频算法的国际标准有MPEG2、MPEG4、H.264,H.264以其高压缩效率,在低码率下优良的图像质量成为目前视频监控系统中首选的压缩方式。

但任何事物都有其两面性,H.264编码的高效率,优质图像是用算法的复杂性来换取的。H.264编码器的复杂性是MPEG2的4-5倍。第二个选择是用什么芯片来实现,TI公司的TMS320DM642芯片,是一款专门用作媒体处理的高速DSP,其强大的图像处理能力为在监控系统中实时实现H.264编码提供了可能。为了降低成本,还必须充分运用DM642本身的资源,使一颗DM642能处理更多路的视频,这就是高效率优化的目的,本文首先对整个视频监控的硬件平台做了介绍,后结合DM642的结构特点,提出整个编码软件的框架的安排,对于占用系统资源最多的运动估计提出基于DSP的优化方法,最后以整数DCT为例,讨论了编写汇编代码的技巧。

硬件平台的介绍

整个视频监控的硬件系统的框架如图1所示。DM642芯片为了适应数字媒体处理的需求,增加了三个可配置的视频端口(VP0,VP1,和VP2),这些视频口外设为常用的编解码设备提供了无缝接口。因而不需要外加可编程逻辑器件和FIFO就可满足系统设计的要求。

为了节省成本,提高DSP芯片的利用率,在一块板卡可以同时处理多路的音视频,压缩卡与主机间的数据吞吐量会很大,为了保证数据存储的实时性,系统采用PCI板卡,其与主机通信数据传输速率最高达528MB/s(66MHz,64bit),完全满足大容量高速实时传输系统的需求。


图1 硬件系统框架

由于每个视频口可以接收两路8/10bit的视频信号,视频信号经过SAA7144A/D转换输出为8位BT.656格式的数字视频数据。这样就能利用一颗DM642芯片处理最多6路视频输入。每个视频端口的BT.656视频采集模式采集8bit或是10bit4:2:2格式的亮度和色度信号,并将它们复用到一个数据流里,视频数据以Cb,Y,Cr,Y,Cb,Y,Cr的顺序传送,其中Cb,Y,Cr代表同一位置的亮度和色度样点,紧接着后面的Y代表下一个位置的亮度样点。数据流经解复用后亮度和色度信息分别存放到各自的Y,Cb,CrFIFO中,再经EDMA搬移到SDRAM中,以备CPU读取进行压缩编码。编码后的视频流再经PCI口存入到电脑的硬盘上,从而完成整个视频监控的流程。

编码器整体框架的安排

JM代码是很多可选的H.264标准软件之一,它关心H.264全部的功能在代码上得到体现,所有的情况都得考虑,例如帧编码,场编码都有,内存的分派没有考虑到系统的实际情况,适合用来帮助理解H.264标准,不太适合移植到DSP平台上。为了高效的组织利用DM642有限的片内资源,就得重新组织代码,包括数据结构,数据存放的位置,程序存放的位置,精简地来安排程序。

首先要考虑的是L2的配置问题,第二级L2(256kB)是一个统一的程序/数据空间,可以整体作为SRAM映射到存储空间,也可整体作为第二级cache,或者二者的比例的组合使用。因为一旦二级缓存也不命中的话,那么读取数据申请将转由EDMA来完成,CPU至少有13个cycle的延迟。所以我们总是尽量把程序和数据放在片内存储器内。但是即使全部将L2配置成SRAM也只有256kB大小,以CIF格式图像为例,待编码的一帧图像大小是148.5kB,再加上运动估计的参考图像就大大超过256kB了。所以在配置L2时,笔者选择的是SRAM224kB,L2cache32kB。首先考虑要放到SRAM的是表格,全局变量,栈数据和一些调用频繁的核心程序,如运动搜索,DCT变换,量化……而整个待编码图像和参考图像就只能放在片外存储空间了。

既然图像数据被存放到了片外存储空间中,就要涉及到数据在片内存储跟片外存储间的数据搬移,这可交由DM642强大的EDMA引擎来完成,EDMA工作时不占用CPU的周期,把CPU从繁重的搬移数据的工作中解放出来,专致于运算工作。在编码程序时,为了避免CPU等待EDMA搬完数据后才能工作,可采用乒乓结构的双缓存区,当EDMA传送数据到其中一块存储区域时,CPU对另一块存储区域进行处理。待二者都处理完毕后,乒乓区域交换。

需要通过EDMA搬移的数据有待编码的宏块,前后帧对应的参考宏块,和编码后的重构宏块(B帧不需要),这些宏块都包括亮度块和色度块。EDMA在搬大量数据时才能将它的性能发挥到极致,如果每编完一个宏块就进行一次乒乓缓存交换,那么在频繁的配置EDMA通道参数上就耗费了过多的CPU周期。有限的片内存储空间,制约着不能一次搬太多的宏块,一般一次搬7--9个宏块为宜。由于EDMA的同步信息是由CPU发出的,我们自然想到QDMA,但QDMA适用于单个的,独立的快速搬移数据,对于这种周期性的,重复性的搬移并没有优势。

为了提高EDMA的效率,可以采用EDMA链,最多开辟12个EDMA通道,让其首尾相连,这样只需触发一次CPU,可将待编码的亮度块色度块,参考帧的亮度块和色度块……一次搬完,如图2所示。在配置EDMA通道时,我们注意到频繁更换的只是EDMA的源地址和目的地址,而其它参量是不变的。由于EDMA控制器是基于RAM结构的,每个通道是通过参数表来配置的,每一个通道的参数都可以在0x01A0000h~0x01A07ffh的2KB的配置表中找到自己固定的位置,所以在更新某一通道的源地址和目的地址时,直接往配置表写上新地址就行了,而不必调用CSL库中的相应的cache函数来修改源地址和目的地址。


图2 EDMA链示意图


图3 六边形搜索算法

快速运动算法的优化

包括MPEG2,MPEG4和H.261、H.263、H264在内的标准都是采取基于块的运动估计模型。当然不同的标准块的大小也不一样,在H.264标准中,支持七种块大小(16x16、16x8、8x16、8x8、8x4、4x8、4x4)。众所周知:运动估计对减少时间域的冗余起了很大的作用,从而能大大提高编码效率,但同时它的计算量特别大,占用了大概整个编码系统的70%~80%的资源。一个好的编码算法就是要在计算量和编码效率两者之间取得一个很好的平衡。

全搜索(FS)能够保证在全局范围内搜到一个最佳的位置,但是其计算量是惊人的。对于在嵌入式系统中应用是不现实的。一般在实际应用中都是把几种算法结合起来,在本系统中采取的是:六边形搜索法,如图3所示,先以预测点为中心进行大模式搜索,如果最优点不在六边形中心,则将六边形的中心移至改点,重复大模式搜索,直到最优点在六边形中点,然后在这点切换到小模式搜索,此搜索法相对于经典的三步法,四步法搜索的点更少。

由于是在DSP平台上,对监控系统实时性要求比较高,提出几种基于DSP平台的优化方法:为了提高L1D的cache的命中率,根据cache不命中流水的原理,一次将参考帧全部灌入L1D内,然后在做运动估计时将七个宏块一齐做,然后再做七个宏块的运动补偿,DCT,量化,反DCT,反量化,编码,写码流。而不是像一般的步骤,对每一个宏块先做运动估计,然后运动补偿,然后DCT,映射到L1D一次,如果每个宏块单独做,在做第一个宏块运动估计时参考帧会由L2映射到L1D,做第二次运动估计时,因为之前程序做过DCT,量化等运算,映射到L1D里的参考帧数据已经被冲走,还得从L2中重新载入。同样的对于程序段一级缓存L1P来说,DCT、量化、反DCT、反量化、编码、写码流等函数都只需映射一次到L1P,而不必被反复地映射,冲掉,再次映射。

在JVT的提案中有很多运动矢量预测算法,如利用运动矢量在时间域有很强的相关性这一特性,我们能够得到比较精确的起始搜索位置。但他不太适合DSP平台,因为这样我们就要保留整个一帧的运动矢量,以CIF图像格式为例,需要12kB的空间,保存在资源紧张的片内显然是不合适的。保存在片外存储空间,调用的时候,先从片外先映射到L2cache,再从L2映射到L1D,其间流水不命中等待的cycle数,还不如从开始不太精确的初始位置多搜几个点。

整数DCT的优化详解

DCT,量化,反DCT,反量化在整个编码程序中占用了大概20%~25%的时间,所以有必要对他们的优化花一番功夫,本文举整数DCT为例说明如何对程序进行汇编级的优化。H.264采用的整数DCT,不仅满足一般DCT的特性,将图像的能量集中到左上角位置,直流系数和低频系数中,还有它特有的几个优点:

-它是整数变换,所有的运算都是整数算法,变换矩阵系数十分简单,核心变换部分可以仅仅用加法和移位来实现。非常有利于在DSP实现。

-可以保证编码端的变换和解码端的反变换完全匹配,没有误差。

首先我们对变换矩阵做必要的调整,如表达式(1),(2)所示,这样做的好处是行变换和列变换的操作完全一样,简化了运算。接下来就是用线性汇编或纯汇编来实

[1] [2]

关键字:DM642DSP  视频编码  优化方法

编辑:神话 引用地址:http://www.eeworld.com.cn/mndz/2012/0901/article_16638.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
DM642DSP
视频编码
优化方法

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved