基于ZigBee和H.264的无线视频传输系统的设计
ap()映射后的显示缓冲区,进而实现图像的显示。
3.3H.264编解码
VPU(Video Processing Unit)是i.MX27中的视频处理单元,主要用于H.264 BP、MPEG-4 SP、H.263 P3格式的硬件编解码[6]。为了用户能够使用VPU的硬件编解码器,Freescale提供了一套Linux下的基于i.MX27 VPU的库文件。不论是编码还是解码,首先都必须调用vpu_Init()函数对VPU硬件进行初始化。
对于H.264编码,需要执行以下步骤:(1)调用vpu_EncOpen()函数对VPU编码器初始化;(2)调用vpu_EncGetInitialInfo()函数获取编码初始化信息;(3)调用vpu_EncRegisterFrameBuffer()函数注册编码帧缓冲;(4)调用vpu_EncStartOneFrame()函数,将编码帧缓冲中的每一帧图像数据送入VPU编码器编码,并将编码得到的H.264码流存放到指定的位流缓冲区中;(5)当需要结束编码操作时,只需调用vpu_EncClose()函数。H.264编码的执行流程如图3所示。
对于H.264解码,需要执行以下步骤:(1)调用vpu_DecOpen()函数对VPU解码器初始化;(2)调用vpu_DecGetInitialInfo()函数获取解码初始化信息;(3)调用vpu_DecRegisterFrameBuffer()函数注册解码帧缓冲;(4)为了获取需解码的H.264码流,可调用vpu_DecGetBitstreamBuffer()函数;(5)调用vpu_DecStartOneFrame()函数,将H.264码流送入VPU解码器进行解码,并将得到的图像数据存放到解码帧缓冲中;(6)当需要结束解码操作时,只需调用vpu_DecClose()函数。H.264解码的执行流程如图4所示。
3.4H.264无线传输
要进行H.264码流无线接收和发送,首先需要加载i.MX27的SPI接口驱动mx27_spi.ko。通过SPI接口,i.MX27可以将H.264码流[7]传输到CC2430中并无线发送出去,也可以将CC2430无线接收的H.264码流输入到i.MX27中。
由于ZigBee在2.4 GHz工作频段和250 KB/s的传输速度下,物理层每次最多只能传输127 B的数据包。除去物理层和MAC层的网络包头,ZigBee每次传输的实际数据最多只有89 B[8]。由于ZigBee网络层不能对H.264码流进行分割和重组,而传输的H.264码流远多于89 B,因此必须在ZigBee协议的应用层将H.264码流分割为等于或小于89 B的数据包进行传输。在接收端需要对这些分解的数据包进行重组,以形成正确的H.264码流。由于在无线数据传输过程中被分割的数据包可能会丢失,这将直接影响接收端的数据重组,因此需要建立一个重传机制来重传数据传输过程中丢失的数据包。下面给出分组传输的数据包的格式。
数据发送之前,先执行握手协议[9]。ZigBee发送端先发送请求包,告诉ZigBee接收端即将发送的一帧H.264数据将被分割为几个数据包以及第一个数据包的编号。编号字段定义为4 B,能对4 GB的数据进行编号,这样可以保证当编号重复时,旧编号的数据包早已在网络中消失。
ZigBee接收端接收到请求包后,将返回一个确认包,表示ZigBee接收端接受ZigBee发送端的请求。ZigBee发送端接收到确认包后,同样也返回一个确认包,这样握手协议完成。接下来就是实际的数据通信了。握手协议的执行流程如图5所示。
握手协议完成后,ZigBee接收端将根据分割数据包的数量来分配接收缓冲区大小。将接收到的每个数据包按照数据包的编号依次存放到接收缓冲区对应的位置处,并将该位置的标志置1,表示接收到了对应的数据包。如果接收缓冲区中某些位置的标志为0并且对应的定时器超时,则表示该位置没有接收到对应的数据包,数据包在无线传输的过程中丢失。ZigBee接收端需要向ZigBee发送端发送一个重传包,请求将丢失的数据包重新传递过来。本传输协议规定,若针对某位置连续3次发送重传包后,定时器连续4次超时,则表示传输失败。ZigBee接收端将发送重新开始包,命令ZigBee发送端对下一帧H.264数据进行传输。协议重传的执行流程如图6所示。
4.系统测试
为了测试ZigBee发送端是否将每一帧H.264数据成功地传输到了ZigBee接收端,现在在ZigBee发送端和接收端之间依次放置1~4个ZigBee路由器,对100帧H.264数据进行传输测试。无线传输H.264图像的测试结果如表1所示。
可见,图像从ZigBee发送端无线传输到ZigBee接收端所经过的路由器越少,传输的成功率越高。实际测试时,每秒能传输约14帧H.264图像数据,基本上达到了无线视频传输的要求。
5.结论
本文详细地介绍了基于ZigBee和H.264的无线视频传输系统的设计与实现,文中所设计的方案不仅能用于无线数字视频传输,也可以应用到无线数字音频传输,具有很强的通用性。
- 基于Zigbee技术家用无线网络的构架(12-14)
- 基于精简协议栈的ZigBee网络节点研究(07-17)
- ZigBee无线传感器网络的研究与实验(02-08)
- 解析ZigBee堆栈架构(03-26)
- 组建SMAC协议构架的ZigBee星形网络(06-11)
- ZigBee基本技术问答(12-07)