在分析视频监控系统网络化趋势和实时性要求的基础上,采用DSP TMS320C6416和ARM微控制器,设计并实现了支持煤矿井下工业以太网传输的嵌入式H.264视频编码器。
给出了系统结构原理及硬件设计,实现了DSP编码算法和面向RTP/UDP/IP的NAL接口。测试表明,系统能够进行高质量的视频网络化传输。
目前,在煤矿使用模拟视频信号的煤矿工业电视监控系统已经不能满足煤矿综合自动化的技术发展,新型的视频监控系统应在确保视频采集和压缩的实时性的同时,支持视频流在工业以太网上的IP传输,实现全矿信息化的数字化和网络化。
H.264/AVC作为最新的视频编码标准,定义了视频编码层(VCL)和网络提取层(NAL)。从框架结构上将NAL与VCL分离,主要实现两个目的:(1)可以定义VCL视频压缩处理与NAL网络传输机制的接口,这样允许视频编码层VCL的设计可以在不同的处理器平台进行移植,而与NAL层的数据封装格式无关;(2)VCL和NAL都被设计成工作于不同的传输环境,异构的网络环境并不需要对VCL比特流进行重构和重编码。从H.264在VCL和NAL上优点来说,它对于复杂多样的嵌入式应用环境是非常适用的,提高了网络适应性,从而保证了视频传输的QoS。
基于以上分析,本文提出了一种综合运用DSP和嵌入式ARM微控制器的嵌入式实时网络化视频方案。该方案采用全嵌入式设计,具有可靠性高、体积小、环境适应性强的优点,符合IEEE802.3u规范,在保证图像质量的同时支持数字化视频流在煤矿工业以太网上直接传输。
基于工业以太网的视频监控系统
如图1,使用自行开发的KJJ系列隔爆型工业以太网交换机1、2、3,构成基于光纤传输介质的100Mbps单环冗余工业以太网,H.264编码器设备使用RJ45双绞线连接到交换机,速率10/100Mbps自适应。环网通过交换机4连接至矿区Intranet或地面监控主机。因此,嵌入式视频编码器是视频监控系统实现的关键。
图1 基于工业以太网的视频监控系统
H.264编码器系统设计
结合煤矿应用环境的特点,其系统结构设计摒弃了传统的计算机扩展插卡的设计形式,采用全嵌入式网络化设计。如图2所示,以TI公司的高性能C6416系列定点DSP芯片和Samsung公司的嵌入式ARM-S3C4510B芯片为基础,构建嵌入式视频编码器系统硬件平台,支持通过嵌入式文件系统实现系统软件的在线升级。
系统主要由视频采集、视频缓冲、视频处理和视频传输4部分组成。CCD摄像头获得的模拟视频信号经A/D转换为数字视频信号后,视频信号通过高速DSP压缩成所需的数据码流。视频压缩后的数据流由S3C4510B从DSP的数据接口HPI32读出,在嵌入式操作系统的UDP/IP协议栈,将数据打包,并运行WebServer服务器,等待客户服务端通过网络访问数据流,从而实现基于Web的嵌入式视频压缩编码系统。
图2 系统结构原理
C6416与S3C4510B接口模块
DSP与微控制器的接口是通过C6416的主机接口HPI32实现的,为了确保数据吞吐量,使用32位总线,C6416的主机接口和PCI总线引脚共用,设置PCI_EN=0,配置为HPI模式。这样做的优点是充分利用DSP的带宽资源,减少总线上的冲突,减轻EMIF总线压力。因为DSP为高速器件,S3C4510B为低速器件,接口DSP采用异步从模式,即DSP(slave),S3C4510B(master),这样DSP工作在从模式下,无须加入共享存储器模块,节省了开发的成本,同时也降低了开发的难度,其他相关控制信号线连接如图3。
因为S3C4510B有自己的地址和数据总线,所以地址选通信号/HAS接高电平,S3C4510B通过内存分区(BANK)RCS5访问C6416来传递数据。S3C4510B配置了64MSDRAM在RAM分区0,引导BootROM2MB和文件系统IntelFlashROM8MB分别放在ROM分区0和1。在S3C4510B上运行VxWorks实时操作系统,包括TrueFFS文件系统和嵌入式Web服务器。
图3 C6416和S3C4510接口
视频采集
该模块的主要功能是将从CCD摄像头输入的模拟视频信号转换为数字信号。如图4所示,普通CCD摄像头的输出是NTSC制式(或PAL制式)的复合全电视信号CVBS或是S-Video信号,二者均为模拟信号。通过Philips公司的TV解码芯片SAA7114H将模拟TV信号解码并且模数转换为符合CCIR.601标准的数字视频信号,并且存储到AVERLOGIC(凌泰)专用的视频帧FIFO芯片AL4V8M440(8Mb)中,等待DSP处理。帧FIFO配置在C6416的CE2空间,CPLD通过SAA7114H的输出状态信号以及C6416DSP的相应输出控制信号生成FIFOAL4V8M440的控制信号。通过检测SAA7114H输出的同步信号来生成DSP中断,通知DSP读取视频FIFO中已满的一场图像数据。
图4 视频采集模块
由于H.264的视频格式主要为QCIF和CIF,QCIF的Y信号规定为176点/行、144行/帧,其色度信号Cb和Cr的规定为88点/行、72行/帧,每个像素用12位表示;CIF的Y信号的规定为352点/行、288行/帧,其色度信号Cb和Cr的规定为176点/行、144行/帧,每个像素用12位表示。H.264标准中默认的输入位流为4:2:0形式,所以要对采集来的视频数据进行存储格式转换,即通过存储转换使视频流在FIFO中以4:2:0的QCIF或者CIF格式进行存放,这里称之为视频格式转换。
主处理器模块
TMS320C6416是德州仪器(TI)公司最新推出的高性能定点DSP,其时钟频率可达600MHz,最高处理能力为4800MIPS,该DSP具有Viterbi译码协处理器(VCP)和Turbo译码协处理器(TCP)。采用两级缓存结构:一级缓存(L1)由128kb的程序缓存和128kb的数据缓存组成,二级缓存(L2)为8Mb。有2个扩展存储器接口(EMIF),可以与异步(SRAM,EPROM)/同步存储器(SDRAM、SBSRAM、ZBTSRAM、FIFO)无缝连接,最大可寻址范围为1280MB;主机接口(HPI)总线宽度可由用户配置(32/16b)。由于需要处理的图像数据量非常大(对于720*576的图像需要829440B),而且系统频繁的转移数据,采用64位数据宽度的SDRAM对提高整体效率非常有用,所以配置64位宽128MB的SDRAM在A总线EMIFA上,使用分区CE0。FLASHROM用于存放程序,连接在分区CE1,使用16位宽B总线EMIFB,共8MB。帧FIFO配置在分区CE2,用于存放A/D采集的像素,由CPLD控制写入,DSP读出数据进行压缩处理,具体流程如图5所示。
图5 系统工作流程
实现的主要功能:
(1)采用H.264/AVC标准,能够对数字视频数据进行压缩和编码处理;
(2)完成对整个硬件系统各模块的控制功能,实现数字视频流的传输控制;
(3)通过C6416的HPI32总线将压缩后的视频流传送到微控制器上;
(4)通过C6416的McBSP1模拟I2C总线,对视频A/DSAA7114H和视频FIFO进行配置;
(5)带有音频扩展接口,可以很方便的构成音频视频同步的网络视频监控系统。
面向RTP的NAL接口
H.264首先对视频编码流的相关信息进行语法优先级上的数据分类,根据具体的网络传输环境,在保证视频抗误码能力的前提下选择大小合适的数据分类整合打包策略。在此基础上,H.264提供了面向RTP/UDP/IP和H.223信道传输的NAL接口,本系统使用面向RTP/UDP/IP的NAL接口。
H.264将每个编码帧或者分片Slice在MTU容量的限制下分成传输优先级不同的两个输出包:
(1)编码信息包(优先级高)
TYPE_HEADER,TYPE_MBHEADER;
TYPE_MVD,TYPE_EOS;
(2)纹理信息包(优先级低)
TYPE_CBP,TYPE_2x2DC;
TYPE_COEFE_Y,TYPE_COEFE_C;
H.264/AVC编码及关键技术
为了满足不同速率、解析度以及网络传输的要求,H.264提供了多种档次(Profile)和等级(level)。根据H.264/AVC规范,结合矿山监控系统信息流的特点,经过测试分析,采用如图6所示的编码结构。H.264编码主要由帧间预测(Inter-Prediction),帧内预测(Intra-Prediction),整数变换(Transition)、量化(Q)、环路滤波(filter)和熵编码(EntropyEncoding)等几部分组成,编码器生成的码流提交给NAL层。
图6 H.264编码器
输入帧Fn经过宏块(MC)处理后,根据是在帧间还是帧内预测编码模式,分别确定预测值(P):在帧内模式,P值由前面经过编码、译码和重建的分片uF'n决定;在帧间模式,P值由帧间的运动补偿预测决定。
另外,H.264使用以下几项关键技术:
(1)H.264除了支持P帧、B帧外,还包括流间传送帧—SP帧,能在有类似内容但有不同码率的码流之间快速切换,使用多参考帧进行帧间预测编码,其中参考帧的个数为1~5个,这样比单参考帧节省了5%~10%的码子空间;
(2)帧间预测可以基于7种不同大小的块来进行,这比单独的16×16块预测方法提高大于15%的编码率;
(3)H.264的运动估计采用高精度的亚像素运动补偿,支持1/4或者1/8像素精度的运动估值。对于QCIF的视频格式使用1/4像素精度预测方式;对CIF的视频格式使用1/8像素精度预测方式。
(4)H.264中可选32种不同的量化步长,这与H.263中有31个量化步长很相似,但是在H.264中,步长是以12.5%的复合率递进的,而不是一个固定常数;
(5)H.264使用基于4×4块的整数残差变换编码方式,反变换过程中没有匹配错误问题;
(6)采用基于4×4块边界的去块滤波器来消除块效应,从而极大地改善了图像的主观质量;
(7)H.264采用两种可选择熵编码CAVLC(基于内容的自适应变长编码)和CABAC(自适应二进制算术编码)。后者可以提高大约10%
的编码率。
H.264算法的DSP实现和优化
代码实现
ITU-T官方提供的H.264的核心算法不仅在代码结构上需要改进,而且在具体的核心算法上也需要做大的改动,才能达到实时的要求。
需要做的具体工作包括:去除冗余代码,规范程序结构,全局和局部变量的调整和重新定义,结构体的调整等。开发工具CCS有自己的ANSIC编译器和优化器,并有自己的语法规则和定义,所以在DSP上实现H.264的算法要把PC机上C语言编写的H.264代码进行改动,使其完全符合DSP中C的规则。相关的改动包括:去除所有的文件操作;去除可视化界面的操作;合理安排内存空间的预留和分配;规范数据类型——因为C6416是定点DSP芯片,只支持4种数据类型:short型(16b)、int(32b)、long型(40b)和double型(64b),因此必须对数据进行重新规范,把浮点数的运算部分近似用定点表示,或用定点实现浮点运算;根据内存的分配定义远近程常量和变量;把常用的数据在数据结构中提取出来,以near型数据定义在DSP内部存储空间,以减少对EMIF端口的读取,从而提高速度。
H.264的DSP算法优化
结合DSP本身的特点,对算法进一步优化,实现H.264算法对视频图像的实时处理。采取了以下措施:
(1)通过选择CCS提供的编译优化参数-mw、-pm、-o3和-mt等,根据H.264系统的要求进行优化,通过不断地对各个参数的选择、搭配、调整,改善循环、多重循环体的性能,从而提高软件的并行性。
(2)对反复调用和影响编码速度的关键C代码进行线性汇编重写。结合CCS代码剖析工具,利用线性汇编重写了反整数变换、1/4像素内插和去块效应等关键函数,函数运行时钟周期只是C语言的1/2~1/3。
(3)对原测试模型进行裁减,定制H.264的编码代码,通过实际测试盒性能分析,删除了对性能影响不大的算法,如峰值信噪比计算等部分。
(4)使用intrinsics内联函数优化C程序,内联函数直接替代复杂的C代码,有助于减少指令周期,提高代码性能。
(5)利用EDMA实现大容量数据传输,以DMA的方式加快数据处理速度,从而减少CPU接入,减轻处理器的负担。
(6)在网络软件实现、EDMA数据传输和定时器使用上,充分利用TI提供的库函数,有助于提高性能,降低代码长度。
H.264编码器防爆设计和性能评价
由于煤矿井下环境极其恶劣,因此除了在进行硬件设计时需考虑电路板的电气特性以外,基于编码器功耗和现场安全要求,对其采用防爆外壳。外壳的设计参照《煤矿安全规范》、《煤矿设计规范》、《爆炸性环境用防爆电气通用设备要求》、《煤矿通信、检测、控制用电工电子产品通用技术要求》、《爆炸性环境用防爆电气设备本质安全型电路和电气设备要求》等技术标准,要求产品能够通过振动、冲击、淋水、湿热、高低温工作、电压波动等10多项安全检测,并能安全运行在井下有爆炸性气体的环境中。
对H.264与MPEG-4、H.263++编码性能在10/100Mbps工业以太网试验环境进行比较,结果表明:H.264具有比MPEG和H.263++更优秀的PSNR性能。H.264的PSNR比MPEG-4平均要高2dB,比H.263++平均要高3dB。而且在同样的编码速率下,基于H.264的编码系统视频更清晰、流畅,能满足现场的需求。
结束语
本文提出了使用数字信号处理器和嵌入式网络微控制器,设计面向煤矿工业以太网应用的H.264编码器,从而构建基于工业以太网的网络化视频监控系统,对煤矿视频监控系统的网络化关键技术进行研究。有利于促进煤矿企业信息化和网络化,构建基于IP的管控一体化网络。