吴 迪,宋晓梅
(西安工程大学电子信息学院,西安 710048)
视频分配器是通过硬件电路把一个视频信号源平均分配成多路视频信号,并通过VGA、DVI或是HDMI高清视频输出线等将一路视频信号多路输出到N个有线连接的显示器上。广泛应用于视频会议、多媒体教学等场合。视频分配器的最大分配数量一般为4路、8路、16路、32路、64路等,由硬件电路决定,不能再进行扩展。如果需要扩展只能购买新的视频分配器设备。
目前,视频信号的应用场合越来越广泛,这种视频分配方式已经无法满足人们的需求。首先,由于有线视频分配器的线长是一定的,只能在一定距离内使用(一般在20米内),所以严重影响了使用的方便性,而如果利用WIFI技术进行无线收发,使用距离则可以扩展到100米并且能够适应任何地域环境。其次,由于有线视频分配器最大承载量一定并且数量比较少,所以对大部分用户来说接入节点的数量决定了设备的数量和网络的复杂程度以及成本的高低,而WIFI的最大理论接入数量为65535,实际接入量由于硬件资源与成本关系,系统调度又采用FIFO模式,如果接入量达到FIFO深度时,硬件资源提供的资源不能满足所有设备同时工作的最大要求,会造成FIFO满而出现溢出,这时会出现数据丢失的现象,所以接入量最优为100个(不大于100个),这已经可以满足大多数用户的需求。基于这些原因,研究基于WIFI的无线视频分配问题,以缓解目前所遇到的这一难题。
视频信号分为数字视频信号和模拟视频信号,在计算机中,数据都是以二进制进行存储的,也即视频信号都是以数字信号的形式在计算机中进行传输的。但是,数字视频的数据量非常大,比如一路NTSC制数字电视的信息速率高达216Mbps,这样的话,1GB容量的存储器也只能存储不到10秒钟的数字视频。所以,要进行视频的实时传输,必须进行视频编码处理。视频编码的目的就是在确保实时视频质量的前提下,尽可能地减少视频序列的数据量,以便在信道上实时传输视频信息。
将视频信号进行压缩编码以后,就可以传送到WIFI模块进行发送。CPU对接收到的数据流进行存储(在缓存中进行临时存储)和转发(通过WIFI发送模块)。接收方接收到数据流以后,对数据包进行相同压缩方法的解压缩,恢复到视频信号,进行播放。
文章采用实时性较强的片上系统——ARM9,同时,开发软件运行于内核态,这样就有效避免了系统调度延时,可以直接对硬件进行操作。在CPU对接收到的数据进行转发的过程中,利用DAM方式进行,这样可以有效地适应视频信号的大容量性,同时对实时性进行进一步的控制。
图1 硬件设计框图
软件设计分为两部分:上层功能性软件和底层软件。其中,上层软件(包含界面设计等)保证视频文件的一对多(指定接收端)发送,而底层软件(基于Linux操作系统)则是通过内核的多线程处理以及数据转发,来保证视频文件传输的实时性。
图2 软件整体设计框图
内核的多线程处理可以使软硬件协调工作,提高视频分配器的实时性、确定性。硬件传输具有快速有效以及覆盖传输等特点,需要软件进行缓冲处理。多线程的目的是为了对收发做互斥处理,尽量减少对多点传输的相互影响,而设定优先级是为了使高优先级的操作得到快速有效的传输,保证实时的高优先级传输操作。
中断服务程序主要用于软硬协调。操作系统对中断操作优先处理,当中断到达时,需要及时的清除中断,避免中断频发对操作系统正常运行的内核态产生影响,从而使操作系统内核崩溃,进而触发操作系统内核的自我保护系统,触发死机现象。由于中断为硬件触发,具有高速性,而程序具有延时性,所以为避免在处理中断的情况下丢失中断状态,需要一个中断服务程序,中断服务程序采用队列模式,可以缓存各种中断状态并进行对应接收线程的事件触发。
接收服务程序是为了对数据进行校验、处理以及对发送线程进行触发等。
DMA的开启主要是为了避免CPU参与工作带来的延时,可以有效的进行多拍读写操作,并节省时间。
图3 线程工作流程框图
基于以上处理,在系统上电后,硬件进行自检测。驱动程序根据物理层芯片和链路层芯片的状态寄存器判断检测是否完成。如果自检完成,驱动程序申请系统运行时需要的内核资源,并把物理内存映射为虚拟内存。映射完成后,驱动程序对各个节点进行初始化配置,并启动系统内核态的收发线程。线程为事件驱动模式,线程如果处于阻塞态,即线程处于无限等待模式,线程挂接的服务程序为对应的收发处理函数。启动如果失败则等待重试,如果成功则阻塞当前线程。本设计接收线程的等待事件,由中断延时处理函数置位。发送线程同样为事件驱动模式,该线程的等待事件为循序队列的写指针置位。
当线程等待事件(接收模块接收到新数据时)触发时,线程变阻塞态为就绪态并设置当前线程的优先级。当线程处于运行态时,如果高优先级的线程到达,则低优先级的线程由运行态变为挂起状态。
图4 线程状态转换图
当新数据到达时,系统触发中断,此时中断处理函数调用中断延时处理函数,在延时处理函数中过滤中断状态以及触发对应的线程事件。然后线程启动,调用处理函数,处理函数启动DMA(Direct Memory Access——直接内存访问)搬运数据,并进行数据处理,同时通知发送线程的新数据到达事件。驱动发送线程处理数据,发送线程通过调用发送服务程序,发送接收到的新数据。
数据转发——通过队列模式实现数据转发。在接收服务程序启动后,启动硬件侧DMA,把数据从硬件资源缓存到预先申请的内存区,并且通过写指针把数据存放到指定位置。写操作完成后,更新写指针。当发送服务程序启动后,启动主机侧DMA把数据从内存区搬运到发送模块硬件资源中。而主机侧DMA搬运通过读写指针差距获取需要搬运的大小,搬运完成后,更新读指针,并检测读写指针是否相等,如果相等则变发送线程为阻塞状态,如果不相等则继续搬运数据。
为了节省内存空间,使内存区循环利用,本设计采用循环队列模式。当读写指针到达内存区最大地址时,则通过设置使读写指针从最小地址再次开始,如此循环复用。当指针跳变(最大地址变到最小地址)时,若读指针地址大于写指针地址,则需要进行边缘处理,即读指针与读指针最大值进行比较搬运数据,当轮换为最小时与写指针比较搬运数据。
图5 循环队列工作框图
DMA搬运数据的效率可以控制在1.2us/M以下,所以不会出现内存溢出的现象(内存溢出现象为当读指针大于写指针一个周期时,进行内存溢出报错的现象)。
数据转发时使用循环队列对数据进行缓存,可以缓存6000×512K字节的数据包,保证传输的确定性。所谓确定性就是数据传输过程中出现的错误现象可预知,并通过一定的手段避免这种现象的发生。由于收发数据进行线程切换,并协调线程工作,因此,执行时不能保证数据接收发送过程中系统内核态时间片的占用,从而可能使系统的操作对收发数据有影响。
视频图像的国际编解码标准有:JPEG、JPEG 2000、H.261、H.263、H.264,以及 MPEG - 1、MPEG-2、MPEG-4,根据其压缩比和比特率的不同。其应用场所也有所不同,其中,H.264即先进视频编码标准(Advanced Video Coding),比特率为8Kb/s~100Mb/s。在结构上和算法上,H.264在H.263的基础上进行改进,拥有更高的编码效率,可节省50%左右的码率。而它自适应的时延特性,使其既可以工作于低时延模式下(如视频会议),也可以用于没有时延限制的场合(如视频存储)。同时,H.264引入了面向IP包的编码机制,有利于网络中的分组传输,支持网络中视频流媒体的传输。符合利用WIFI进行视频转发的需要,故采用基于H.264的编解码芯片。
芯片选择富士通的高清H.264编解码芯片MB86H51,运行频率为27MHz/108MHz,可以对应1,920 ×1,080(60i/50i)、1,440 × 1,080(60i/50i)、1,280 ×720(60p/50p)、720 ×480(60i)、720 ×576(50i)等不同分辨率输出,流码率最大支持20Mbps。
WIFI是IEEE定义的无线网技术,基于802.11系列标准。目前广泛使用的WIFI基于802.11n,传输速度为52Mbps,而在此基础上制定的802.11ac标准的5GWIFI,即工作在5GHz频段上,数据吞吐量为:在单通道链路上的最低速率为500Mb/s,最高可达到1Gbps。
802.11 ac的物理层是对802.11n标准的延续,并且后向兼容。理论上说802.11n在使用了40MHz带宽和4个空间流后可以达到最高600Mbps的数据速率,尽管目前很多无线设备只能支持2路空间流。对于802.11ac来说,理论上使用160MHz带宽,8个空间流,MCS9编码,256QAM调制,最高速率能达到6.93Gbps。而真正可以使用的数据速率大概是1.56Gbps。
芯片选择博通5G WIFI 802.11ac系列整合式系统芯片,可根据家庭和企业选择不同的芯片,包括适用于中小企业路由器和网络附接储存装置(NAS)的StrataGX BCM5301x系列,以及支持家用路由器和网关的 BCM4708x系列。其中 BCM5301x相比BCM4708x系列,CPU性能更高,接口更丰富,可为中小企业的网络运作和视频会议提供更好的支持。而BCM4708x系列可为消费者提供在家中或移动中更可靠、无缝地连接,以及清晰流畅的网络视频观看。
通过上述软硬件设计,现假设一部高清电影需占用1G的存储空间,使用H.264压缩编码后,每秒的数据流通常在30-45MB之间,而5G WIFI的传输速度提升到了1Gbps,每秒可以传输约125MB的内容。即使加上信道时延所占用的时间(不到0.1s),信道上每秒大约仍剩余0.5s左右的空闲。而人眼的视觉暂留时间是0.05秒,因此,当连续的图象变化超过每秒24帧画面的时候,人眼便无法分辨每幅单独的静态画面,因而看上去是平滑连续的视觉效果。所以,通过WIFI实时地接收和发送多路视频信号在理论上是可行的。
在科技高速发展的今天,人们对视频等文件传输速度的要求越来越高,而千兆无线传输速率标准所带来的传输的便捷性也满足了我们日益增长的无线传输需求,为打造新一代无线网络生活奠定基础。
文章针对如何利用内核多线程处理和数据转发、结合H.264视频压缩技术和5G WIFI技术实时传输视频文件做出了初步分析。而目前,5G WIFI技术尚不成熟(存在兼容性问题),相信在不久的将来,随着5G WIFI技术的发展与成熟,能够解决视频文件实时性传输的产品将会带来科技产品的又一次新变革。
[1]郭政.5G WiFi标准——802.11ac解析及应用展望[J].科技传播,2012(15):1 -2.
[2]谢希仁.计算机网络(第5版)[M].北京:电子工业出版社,2009.
[3]王宁宁,张瑾.微型计算机原理与接口技术[M].北京:国防工业出版社,2009.
[4]李云飞.基于ARM9的无线路由器设计[J].计算机工程与设计,2006(24):1-4.
[5]刘国梁.从H.264向H.265的数字视频压缩技术升级[J].铁路通信信号工程技术,2011(5):2 -4.
[6]钱方远.基于H.264的视频压缩技术及其在网络视频监控系统中的应用研究[D].北京:北京邮电大学,2008.
[7]侯素芳,芦汉生,殷玉喆..基于H.264的数字视频压缩图像质量的评价[J].光学技术,2006(S1):1-3.
[8]杰夫瑞,克里斯托夫,葛子昂,等.windows核心编程[M].北京:清华大学出版社,2009.