许起明,余 翔,徐宇明
(重庆邮电大学,重庆400065)
随着无线通信技术的飞速发展以及无线带宽的不断提高,特别是第三代(3G)以及后三代/第四代(B3G/4G)通信系统的出现,移动带宽显著增加,使得在无线信道中提供各种视频业务成为可能。如:无线信道WCDMA可在5 MHz的带宽内,提供最高384 kbit/s的用户数据传输速率;TD-LTE能够在20 MHz的频谱带宽下,提供下行100 Mbit/s、上行50 Mbit/s的峰值传输速率[1]。无线宽带技术的飞速发展为高质量、动态视频业务提供了无线传输的强力支撑。
在视频编码方面,国际标准化组织ITU-T(国际电信联盟)、ISO/IEC(国际标注化组织/国际电工委员会)以及中国自主知识产权的AVS(音视频编码标准)标准组织在最近十多年的时间里颁布了一系列视频编码标准,极大地推动了视频应用不断向前发展。由ITU-T和ISO/IEC联合制定的H.264(MPEG-4 Part10)是国际上目前最前沿的视频编码标准之一,它具有高压缩率和网络亲和性的显著特点,被广泛应用到相关视频领域中[2]。
伴随着无线通信技术和视频编码标准的发展,人们对实时无线视频传输需求日益增长。而传统的基于专业集成电路的方案显然已经不适合用来实现不断升级的编码算法。目前随着DSP芯片的高速发展,TI公司推出了达芬奇技术,它将固定功能器件的高效性和可编程器件的灵活性结合在一起,支持各种数字视频的终端设备,为实现实时、高要求的音视频信号处理提供了可能性,再加上高效的低码率视频编码标准H.264的成熟应用与算法的不断改进,为实时视频的高质量传输提供了数字视频信号处理平台和算法指导[3]。
无线设备的功耗和资源的有限性与视频编解码技术复杂度的不断增加之间的矛盾,再加上复杂多变的无线信道的高误码率和带宽的有限性,使得通过无线信道传输高质量的视频数据仍面临着巨大的挑战[4]。本文在这样的背景下,根据TI公司最近推出的TMS320DM3730处理器(以下简称DM3730)提出基于无线信道质量变化的自适应视频质量保证技术研究方案,并在WCDMA信道(以下简称W信道)完成了测试验证。
本文根据无线信道的质量变化设计出了一种基于达芬奇平台DM3730上H.264视频编码库的动态参数优化配置方案。在DM3730中,有一些自带的算法库,在使用DM3730平台时,可以直接编写应用端(App)程序,调用自带算法库中的相关函数。本文调用DM3730自带的H.264算法库实现视频的编解码。
系统总体框架如图1所示,主要由终端设备、W基站、监控中心三部分组成。终端设备达芬奇技术平台DM3730调用H.264算法库将摄像头采集的图像数据压缩成H.264格式,再经过W信道传输至远端的监控中心。传输过程中实时地根据监控中心反馈的无线信道的质量情况动态调节H.264编码库的可变参数,实时地更新编码参数以保障视频质量。
图1 系统总体框架图
系统硬件组成结构图如图2所示。
图2 系统硬件结构图
功能模块定义和说明:
1)CPU处理器模块。本文选用德州仪器(TI)最近推出的达芬奇系列TMS320DM3730处理器。该处理器集成了1 GHz的ARM Cortex-A8内核及800 MHz的高级数字信号处理的DSP核[5]。达芬奇技术平台的ARM+DSP的双核结构拥有DSP对数据信号的高速处理能力,又具有ARM对外围设备的强大的管理能力。
2)视频数据采集模块。摄像头选用奥尼国际推出的酷睿高清版HD 1 080P摄像头。该摄像头采用顶尖的制作工艺、声像同步技术,业内首创30 f/s(帧/秒)的速率;内置采用弱光增益技术,IP远程安全监控方案,具有最佳的传感效果;可支持多种分辨率,该模块通过高速USB2.0接口连接到板卡,实现预览等功能。
3)电源管理模块。选用与CPU处理器配套的TPS65930电源管理芯片。它与CPU之间使用I2C协议通信。TPS65930主要的作用是将1.2 V、1.8 V电压提供给CPU,便CPU正常运作。
4)无线传输模块。选用天漠公司推出的3G无线通信模块—WCDMA8000-U,基于高通最新的MSM6280平台UMTS标准开发。通用的USB接口和强大的软件支撑平台,使该模块具备友好的二次开发软硬件平台,可以支持多种外围设备。该模块通过高速USB2.0接口经过USB-HUB连接到板卡。
本节介绍了终端设备编码器端软件整体架构及各个主要子模块的设计与实现,包括视频图像的采集、图像数据的编码、图像数据的存储、图像数据的传输、监控中心的交互以及图形界面的交互,如图3所示。
图3 系统软件功能模块图
本文采用基于嵌入式Linux的达芬奇和Qt软件架构相结合的方式,其中应用层涉及Qt界面设计与达芬奇架构整合和文件IO等操作;内核层涉及到视频数据的采集,通过使用ioctl()系统调用来控制视频设备;信号处理层包括达芬奇平台下H.264算法的调用与可变参数的优化配置。
3.1.1 视频图像的采集
视频的采集是基于Video4Linux2(V4L2)设备驱动实现的,整个流程如图4所示。首先打开设备文件,利用命令标志符VIDIOC_QUERYCAP来获取设备的属性;利用VIDIOC_S_FMT来设置视频采集的格式;接着利用VIDIOC_REQBUFS来向内核空间申请视频帧缓冲;然后使用内存映射函数(即mmap()函数)将申请到的缓存地址转换成应用程序中的绝对地址并利用VIDIOC_QBUF把这段缓存放入缓存队列,用VIDIOC_STREAMON开始视频的采集;利用VIDIOC_DQBUF把已采集的一帧视频数据出队列并利用FifoUtil_put()函数将采集的数据通过写管道传入图像数据压缩的缓冲区,以便视频数据的编码;最后通过VIDIOC_QBUF将帧缓冲重新入队列,实现循环采集。
图4 视频图像的采集流程图
3.1.2 图像数据的编码
在ARM+DSP双核架构的达芬奇平台上,DSP端用DSP/BIOS来支持音视频算法的运行,ARM端用Monta-Vista Linux(MV)来支持其对外设的管理。对于ARM与DSP之间的数据交互,则用编解码引擎(Codec Engine)和服务器(Codec Server)来加以管理。视频编解码是通过调用Codec Engine来实现的。通过这种机制,ARM端的程序就可以通过调用Codec Engine提供的VISA(Video,Image,Speech,Audio)API接口,在 DSP端执行编解码算法。DSP端专门负责各种算法的执行,并通过VISA API接口将算法执行的结果返回给ARM端的程序[6]。
图像数据的编码流程如图5所示。首先通过调用Engine_open()函数打开编码器引擎;再创建编码器Venc1_create(hEngine,H264ENC_NAME,&params,&dynParams);其中params结构体为编码器的基本参数配置,dynParams结构体为算法调用时可以动态改变的参数(在创建编码器前需要配置好这些参数);通过调用FifoUtil_get()读管道将已采集的视频数据读入缓冲区并调用Venc1_process()函数进行一帧数据的编码同时将编码之后的数据通过FifoUtil_put()传入存储线程中;最后将帧缓冲返回给编码线程实现循环编码。
图5 图像数据的编码流程图
3.1.3 图像数据的存储
图像数据的存储如图6所示。首先打开存储文件并调用Rendezvous_meet()函数同步等待其他线程(其他的线程也会同步等待);然后对每帧数据进行拆包、加帧头信息并存入循环链表中以便网络发送;编码之后的数据同时存入本地文件中;最后当线程结束时要清理所有的缓存,释放资源其他线程也是这样。
图6 图像数据的存储流程图
3.1.4 图像数据的传输
图像数据的网络传输是基于UDP协议进行传输的,整个流程如图7所示。首先创建一个UDPSocket,并调用setsockopt()函数和bind()函数进行相关的配置和地址绑定;然后读取存储的循环链表进行发送,缓冲发送至监控中心;最后在参考帧的位置进行检测,如果没收到监控中心的回复信息则阻塞重发。这里有一个H.264编码的可变参数,代表编码I帧间隔的参数intraFrameInterval,编码之后的数据每隔这个参数的值就会出现一个I帧,在监控中心设定当出现I帧就会向传输线程回传一个信息,这样可以保证传输的可靠性。
图7 图像数据的传输流程图
3.1.5 监控中心的交互
为确保终端设备与监控中心的交互的可靠性,选择TCP协议进行传输,整个流程如图8所示。首先创建一个TCPSocket,并调用setsockopt()函数和bind()函数进行相关的配置和地址绑定;调用connect()函数连接监控中心,连接成功后判断是否需要重新绑定;一切就绪后,不断地读取监控中心发过来的包并判断其类型,如果是心跳包则直接回应已收到,如果是命令包则解析命令,再相应地给予回应。监控中心每隔几秒会向终端设备发送命令包以确保连接的正常。最会线程结束时先关闭创建的Socket,再释放缓存。
图8 监控中心交互流程图
3.1.6 图形界面的设计
本文是基于Qt在终端设备的应用程序中设计一个可视化的界面。终端设备要移植tslib和QtE,以保证终端设备具有触摸屏功能并支持Qt编译环境,从而在终端设备实现基于QT图形界面程序[7-9]。终端设备的用户界面如图9所示,先进行PPP拨号获取本地WCDMA网络的IP,再将监控中心的IP写入Ser IP中,最后点击Run按钮执行以上线程从而实现W信道中视频数据的采集、编码与传输。
图9 终端设备的用户界面(截图)
3.2.1 图像数据编码的可变变数分析
本节将对达芬奇平台下H.264编码算法的可变参数逐一比较分析。这些参数位于3.1.2小节中介绍的创建编码器函数Venc1_create()的dynParams结构体中。主要包括最大比特率maxBitRate、最大帧率maxFrameRate、视频的分辨率maxWidth和maxHeight、编码类型encodingPreset、I帧间距 intraFrameInterval。
1)maxBitRate:该参数为编/解码支持的最大比特率,是指视频文件在单位时间内使用的最大数据流量,也称码率,单位为比特每秒(bit/s),是视频编码中画面质量控制最重要的部分。该参数影响图像的体积与质量:同样分辨率下,视频文件的码流越大,压缩比就越小,画面质量就越高,但文件的体积就会越大,传输的数据就会增多。
2)maxFrameRate:该参数为编/解码支持的最大帧率,它的值等于最大帧率的1 000倍,单位为帧每秒(f/s)。帧是组成视频的基本单位,帧率就是1 s时间里传输图片的帧数,可以理解为图片处理器每秒能够刷新几次。该参数影响画面流畅度:帧率越大,画面越流畅;帧率越小,画面越有跳动感。当然帧率越高,每秒钟经过的画面越多,需要的码率也越高,体积也越大。
3)maxWidth,maxHeight:表示编/解码所支持的视频的高度和宽度,即视频的分辨率。这两个参数影响图像大小,与图像大小成正比:分辨率越高,图像越大;分辨率越低,图像越小。在码率一定的情况下,分辨率与清晰度成反比关系:分辨率越高,图像越不清晰,分辨率越低,图像越清晰。在分辨率一定的情况下,码率与清晰度成正比关系,码率越高,图像越清晰;码率越低,图像越不清晰。
4)encodingPreset:此参数用来选择全功能高质量、标准功能或者高速的视频编/解码方式。当选择高质量模式时,编/解码器将会在高质量和高速之间进行折中。
5)intraFrameInterval:此参数表示两个I帧之间的距离。假设没有B帧,该值设为2则编码过后的码流为“IPIPIP……”序列。该参数影响图像画面的质量和体积:I帧间距越小,视频画面越好,但编码文件体积就会越大。其中I帧、B帧和P帧都是H.264编码算法的图像编码类型。下面对这3种类型一一介绍。
I帧是帧内编码帧,也就是关键帧或独立帧,代表一帧画面的完整保留,解码时只需要本帧数据就可以完成相应图像的还原。I帧图像是周期性出现在图像序列中的,出现频率可由编码器设定。I帧图像的压缩倍数相对较低。
P帧是前向预测编码帧。表示一帧数据与前一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面数据叠加上本帧定义的差值,生成最终画面,也就是差别帧。P帧没有完整的画面数据,只有与前一帧画面得到差值。由于是差值传送,P帧的压缩比较高。
B帧是双向预测差别帧,即B帧记录的是本帧与前后帧的差别。要解码B帧,不仅要取得之前的缓存画面,还要获取解码之后的画面,通过前后画面数据与本帧数据的叠加获得最终的画面,B帧压缩率是最高的。主要用于H.264主要档次中,本文采用H.264基本档次,所以编码图像没有B帧。
3.2.2 动态参数优化配置方案的目标
由于信号衰减和多径、阴影以及多普勒效应的存在,无线信道误码率较高,而视频数据是经过高度压缩的数据流,其比特之间的数据相关性很小,对错误十分敏感,一旦发生错误将会剧烈影响后续视频帧的解码。另外,无线信道还存在随机波动性和带宽有限性,所以在无线信道中实现高质量的视频传输仍然面临着巨大挑战。
本文在总结前人的基础上,根据无线信道的质量变化提出了一种基于达芬奇技术平台H.264算法编码库的动态参数优化配置方案。该方案可以有效利用有限的无线资源,最大化地进行视频数据无线传输,同时,在一定程度上也减少无线网络的拥塞,使视频图像质量与网络拥塞达到了很好的平衡。
3.2.3 动态参数优化配置方案的基本原理
监控中心实时地统计接收到的视频数据的丢包率,并以此为依据来判断无线信道的质量,丢包率比较大时判定信道质量较差,丢包率比较小时判定信道质量较好,根据丢包率的具体情况可把无线信道划分为几个等级。在终端设备与监控中心的交互过程中,监控中心将当前无线信道的等级作为交互参数传递给终端设备。丢包率的计算公式如式(1)所示式中:m.frame_seq代表当前监控中心收到的视频数据的帧 号;package.num代 表 当 前 帧 的 分 包 数;m.ulRecvPackage代表当前监控中心接收到的全部视频的帧数;m.percentage代表丢包率。
终端设备在接收到信道的等级参数后,动态地改变达芬奇平台H.264编码算法的可变参数。具体调节如下:在信道质量较好的情况下,将maxBitRate和maxFrameRate值设为较大的值600 000、20 000,分辨率的2个参数max-Width,maxHeight可设为较大的分辨率DCIF格式528×384,encodingPreset模式可设为高质量模式,intraFrameInterval可设为较小的数值如10以下的某个值。在信道质量较差的情况下,maxBitRate和maxFrameRate值调小至400 000、12 000,分辨率调小至QCIF 格式176×144,encodingPreset模式可设为高速模式,intraFrameInterval在尽量保证图像质量的情况下调大至30~100。参数的设定要根据实际的无线信道质量动态的划分好范围,本文给出了实际测试时动态参数的参考范围。
通过动态参数优化配置可以实现在无线信道质量较好时,传输体积比较大的图像数据以得到画面质量高的图像;在无线信道质量较差时,在尽量保证图像质量的情况下传输较小的图像数据以减小网络的堵塞,从而实现视频图像的质量与网络拥塞的合理平衡。
3.2.4 动态参数优化配置方案的实现
在动态改变达芬奇平台H.264编码算法可变参数的过程中,当接收到的信道的等级参数与当前信道的等级参数不一致时,用中断信号跳出当前的图像编码线程,然后根据接收到的信道的等级参数重新配置H.264编码算法可变参数,继续执行图像编码线程。如果等级参数一致则继续原来的编码线程。具体方案流程如图10所示。
图10 动态参数优化配置方案流程图
终端设备选用深圳市天漠科技有限公司推出的基于德州仪器(TI)DM3730处理器的DevKit8500评估套件。监控中心为PC机Windows XP环境下基于MFC的可视化图形界面程序,硬件配置为:Inter Core i3-2120 CPU,主频 3.30 GHz、内存为3.41 Gbyte。
监控中心分别监控两路WCDMA无线信道中终端设备的实时的视频采集传输画面,一路采用动态参数优化配置方案,另一路不采用该方案,通过多次测试统计监控中心的显示状态与数据信息并作出比较。
1)测试系统能否稳定地在WCDMA无线信道正常工作;
2)测试不作参数优化配置时实时传输,监控中心接收的帧率、字节流、丢包率和系统延时;
3)测试采用动态参数优化配置方案下实时传输,监控中心接收的帧率、字节流、丢包率和系统延时。
图11为监控中心实时的监控图。分别采用动态参数优化配置方案和不采用该方案实时测试,监控中心返回的性能指标如表1所示。
图11 监控中心实时监控图(截图)
表1 统计的性能指标
分析表1可以得出:采用动态参数优化配置方案和不采用该方案实时传输时,监控中心在字节流、帧率、丢包率和系统延时都存在一定范围的波动。采用动态参数优化配置方案实时传输时字节流、帧率、丢包率的均值均要大于不采用该方案进行的传输,但由于采用动态参数优化配置方案算法增加了算法的复杂度,系统延时的统计均值要略大于不采用该方案进行的传输。
从以上统计的数据可以看出,基于动态参数优化配置方案的视频传输系统充分利用了无线信道的实时带宽资源。在信道质量好的情况下,能传输高质量的图像数据;在信道质量下降时,能动态调节编码参数使传输的图像更流畅,减少了网路堵塞。该方案使视频图像质量与网络拥塞达到了很好的平衡。
随着无线网络技术的高速发展,人们对无线环境下各种多媒体服务的要求越来越高,如何在无线环境下传输高质量的数据显得非常重要。由此本文根据无线信道的质量变化提出一种基于达芬奇技术平台H.264算法视频编码库的动态参数优化配置方案,实现了无线信道的自适应视频高质量保障,有效地提高了视频传输画面的实时性和流畅度。
[1]王映民,孙韶.TD-LTE技术原理与系统设计[M].北京:人民邮电出版社,2011.
[2]毕厚杰 .新一代视频压缩编码标准—H.264/AVC[M].北京:人民邮电出版社,2004.
[3] TIApplication report(SPRS283D),TMS320DM6446 digitalmedia system -on - chip[R].Dallas:Texas Instruments,2005:1-212.
[4]石迎波.无线信道中的视频编码与传输技术研究[D].西安:西安电子科技大学,2007.
[5]向海波,李波,闫中江.基于TMS320DM3730的H.264编码器移植与优化方法研究[J].电子设计工程,2012(20):180-183.
[6]陈颖锋.基于达芬奇平台的H.264编码算法优化与实现[D].北京:北京交通大学,2008.
[7]徐海洋.基于达芬奇技术的TD探测终端设计与实现[J].电视技术,2011,35(23):66-70.
[8]何永琪.嵌入式Linux系统实用开发[M].北京:电子工业出版社,2010.
[9]范朋.基于Qt的嵌入式Linux系统GUI的研究与实现[D].北京:北京邮电大学,2011.