侵权投诉
当前位置:

OFweek电子工程网

放大/调整/转换

正文

基于DSP+H.264的网络视频监控系统设计

导读: 在本文中,首先描述的是设计的硬件系统,它是H.264算法和网络协议对应的C代码运行的平台。核心器件是TMS320 DM642,它是TI公司专门针对多媒体传输或网络视频的监控设计并生产的一款DSP芯片。在此硬件平台下对于EDMA和网络接口的高效使用是极其重要的。

  随着英特网的普及,人们可以从网络上得到的信息越来越多。以前,人们只能得到文字和一些简单的图形信息,能够得到的视频信息是很少的。造成这种现象的主要原因是视频信息的数据量是非常巨大的,如果想传输它,就必须有很大的网络带宽,而如此大的网络带宽在现实中是需要耗费巨大的成本才能完成的。视频的编码标准就是在这个前提下被提出来的。

  视频编码技术到现在为止已发展了很多年了,各种研究机构和标准化组织也已经提出了很多解决办法,但到现在为止视频编码的标准主要分为两大类:一类是国际标准化组织和国际电工委员会第一联合技术组制定的MPEG系列标准;另一类是ITU针对多媒体通信制定的H.26x系列视频编码标准。H.264只是视频编码标准,它对音频方面没有任何的规定,但是它的压缩效率高、图像质量好并且传输码率很低,所以它非常适合于视频的网络传输。

  在本文中,首先描述的是设计的硬件系统,它是H.264算法和网络协议对应的C代码运行的平台。核心器件是TMS320 DM642,它是TI公司专门针对多媒体传输或网络视频的监控设计并生产的一款DSP芯片。在此硬件平台下对于EDMA和网络接口的高效使用是极其重要的;其次描述的是H.264编码器的优化。由于H.264算法是极其复杂的,所以要实现视频编码的实时性也就成为一件难事。因此,就必须对代码进行优化,以达到视频序列能够在网络中实时传输的目的;最后描述的是H.264编码码流的网络传输。在此部分主要介绍H.264编码器中的NAL层和RTP传输层的对接,将NAL层的数据按照RFC3984协议的规定对数据进行打包。

 

  1 硬件平台

 

  视频监控系统的硬件是H.264算法和网络传输协议运行的基本硬件平台,图1所示为本系统设计的硬件系统框图。

 

  

  图1 系统设计的硬件系统框图

 

  设计中用到的RTP协议是主要针对于H.264编码码流进行处理的RFC3984协议。至于UDP和IP,由于,TI提供的各种类型的DSP套件是支持Socket套接字的,所以,在得到RTP层的打包数据后,就可以直接利用套接字对RTP层以后的数据流进行处理。

  系统中的TMS320DM642是TI公司C6000系列DSP,它的处理核心是C64x型的高性能数字信号处理器,具有极强的处理性能,这里用的DSP的核心频率是600Mhz。它在使用时具有高度的灵活性和可编程性,而且外围集成了非常完整的音频、视频和网络通信等设备及接口,特别适用于网络视频监控、数字广播以及基于数字视频/图像处理的消费类电子产品等高速DSP应用领域。本系统中用到的外围接口主要有:视频接口、存储器接口、网络接口和串口。

  图像A/D转换芯片用的是SAA7115,它负责将模拟视频信号转换成为数字视频信号。NORFLASH用的是spansion公司的Am29LV033C,它的作用是负责永久性的存储完成H.264编码算法和网络传输协议的C代码。在硬件系统刚刚上电启动时,NOR FALSH中引导程序先被加载到DSP内,然后,引导程序被执行,引导程序会将应用程序加载到SDRAM中,最后,应用程序会在SDRAM中被执行。SDRAM用的是三星的HY57V28162 0E,它的作用主要有两个:一是存储要执行的应用程序,二是临时存储要被处理的图像数据。串口在这里主要是辅助调试用的。EMAC接口是非常重要的,它是传输已经处理的H.264编码码流的,这里用的是intel公司研发的LXT971A。

  硬件系统的工作过程如下:首先是模拟COMS摄像头采集PAL制式的模拟视频信号。然后图像A/D转换芯片SAA7115HL会将模拟视频信号转换成数字视频信号并传输给TMS320DM642。TMS320DM642中的EDMA控制器会先将从A/D转换器得到的视频图像存储到SDRAM中,等到TMS320DM6 42处理器已经准备好处理图像的时候,再从SDRAM中将图像取出来进行H.264格式的编码压缩。编码完成之后,会得到H.264的编码码流,这个时候,再利用RTP/UDP/IP的协议栈将H.264的编码码流进行逐层打包并通过EMAC接口发送到因特网上。

 

  2 H.264编码器的优化

 

  H.264的编码器是非常复杂的,所以,当我们用C代码实现其功能的时候,往往会面临实时性的问题,即处理器无法在1s内完成所要求的数据处理量。为了使视频远端显示连续,必需使处理器在1s内能够压缩编码并通过网络传输20帧以上的图像。但是,在写出第一版代码时,会发现处理器根本就无法达到要求,在1s钟之内,它只能处理5-6帧的图像,因此就必须对编码器进行优化,以求能够达到实时性。

  一般来说,如果在DSP中实现H.264的编码器优化,那么优化过程主要分为四个阶段,分别是算法优化、C代码优化、线性汇编的优化、CCS编译器下的选项优化,它们被顺序的完成。在DSP中实现H.264编码器的优化过程见图2。

 

  

  图2 在DSP中实现H.264编码器的优化过程框图

 

  H.264的编码算法主要有:帧内预测编码、帧间预测编码、DCT变换和量化、熵编码,其中最消耗时间的是帧间预测编码,它用的时间要占到整套算法运行时间80%左右,因此,帧间预测编码算法的优化也就成为H.264编码器算法优化的重点。

  实现编码器C代码的优化,主要是注意在写C代码的时候要写出高效简洁的代码,使在能够保持算法基本功能的前提下,占用的处理器运算资源最少。如果C代码级优化完了之后,还不能满足实时性,就必须用到线性汇编的优化。线性汇编代码是对影响速度的关键C代码进行重写。线性汇编代码与C6000的汇编代码类似,不同的是线性汇编代码并不用像汇编代码那样要给出所有的信息,它可以对这些信息进行一些选择,也可以由汇编优化器确定,如指令使用的寄存器,指令使用的功能单元等,汇编优化器会根据代码的情况确定这些信息,并产生汇编文件。

  在优化过程中,一般都会借助于编译器自带的优化功能进行优化。CCS中有优化选项,来帮助我们对代码进行进一步的优化。优化选项共有四个:o0、o1、o2、o3。o0级别的优化内容有:简化控制流图、分配变量到寄存器、进行循环旋转、删除未使用的代码、简化表达式和代码;o1级别的优化除了包括o0的内容外还有:执行局部复制/常量传递、删除未使用的赋值语句、删除局部共有表达式:o2级别的优化除了包括o1的内容外还有:进行软件流水、进行循环优化、删除全局共有子表达式、删除全局未使用的赋值语句、把循环中对数组的引用转变为递增的指针形式、进行循环展开;o3级别的优化除了包括o2的内容外还有:删除未使用的所有函数、内联小的函数、重新对函数声明进行排序、识别文件变量的特征。

 

1  2  下一页>  
声明: 本文由入驻OFweek公众平台的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。

我来说两句

(共0条评论,0人参与)

请输入评论

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

文章纠错
x
*文字标题:
*纠错内容:
联系邮箱:
*验 证 码:

粤公网安备 44030502002758号