基于i.MX53的可视IP电话终端设计

2013-07-25 05:56蔡剑卿王宜怀冯德旺
关键词:音视频音频构件

蔡剑卿,王宜怀,冯德旺,景 林

(1.福建农林大学计算机与信息学院,福建福州 350002;2.苏州大学计算机科学与技术学院,江苏苏州 215006)

0 引言

随着网络技术和音视频编解码技术的不断发展,可视IP电话应运而生.可视IP电话是一种基于互联网协议的音视频传输技术.IP电话终端分为两类:一类是基于PC机的终端,另一类是基于嵌入式平台的终端.随着嵌入式技术的发展,基于嵌入式平台的终端成了目前的主要类型.当前的同类产品,多采用1片MCU外加2片DSP的设计方案[1-5],外加的2片DSP分别用软件完成音频和视频的编解码,而系统其它功能由MCU完成,这样硬件和软件的设计都较复杂;也有采用单片MCU的设计方案[6-8],如i.MX21、i.MX27、i.MX51等ARM Cortex A系列的多媒体处理器芯片.i.MX53多媒体处理器建立在i.MX51的技术创新基础之上,提供了更优的性能[9].故本研究以i.MX53处理器为主控芯片,设计和实现了一款硬件集成度高、支持G.711音频编解码标准和H.264视频编解码标准的嵌入式可视IP电话终端.

1 终端的硬件平台

嵌入式可视IP电话终端,需要完成音视频的采集、编码、发送、接收、解码、视频显示和音频播放等功能[10].i.MX53是飞思卡尔(Freescale)公司于2011年上半年推出的基于增强版ARM Cortex-A8内核的高性能处理器,主频高达1.2 GHz,内部集成了视频编解码器、DDR2 SDRAM控制器、NOR FLASH控制器、以太网控制器和LCD控制器等,并具有丰富的外设接口.

基于i.MX53的可视IP电话终端硬件框图如图1所示.终端采用飞思卡尔公司的MC34708电源管理芯片(Power Management IC,PMIC),通过I2C接口与i.MX53相连;采用美信(Maxim)公司的MAX708TCSA复位芯片来提供准确的复位信号;共采用4片DDR2 SDRAM芯片,每片大小为128 MB(64 Mb*16),故SDRAM容量为512 MB(128 Mb*32);采用1片NOR Flash芯片,容量为4 MB,通过SPI接口与i.MX53相连;键盘接口采用3*4矩阵方式,键的定义和排列与一般电话机一致;UART接口通过MAX3232与PC宿主机相连,PC宿主机利用超级终端发送命令进行终端测试.

图1 基于i.MX53的可视IP电话终端硬件框图Fig.1 The hardware diagram of video IP telephone terminal base on i.MX53

2 终端的软件架构

基于嵌入式Linux操作系统,提出了该终端的软件架构,如图2所示.利用Linux操作系统的多线程机制和信号量机制,实现了可视IP电话终端的多任务并发执行.该架构重视软件工程思想,自顶向下分为应用层、中间件和底层三个构件层.底层构件层主要是构建Linux系统和封装MCU的底层硬件驱动.中间件构件层为应用层构件提供了访问底层硬件的接口,降低了应用层构件的设计难度.

图2 基于i.MX53的可视IP电话终端软件架构Fig.2 The software architecture of video IP telephone terminal base on i.MX53

3 主要构件的设计

在已有的底层内部构件基础上,该终端的软件设计主要是中间件和应用层两个构件层的设计.中间件构件层包含了视频采集和显示、视频编解码、音频采集和播放以及网络实时传输四个构件.应用层构件层只有可视IP电话终端一个构件,即实现可视IP电话的功能.

3.1 视频采集和显示构件

视频采集采用Omnivision公司的COMS图像传感器芯片OV9650,该芯片具有130万像素,通过CSI接口与i.MX53相连,而芯片配置通过I2C接口实现.视频显示采用夏普(Sharp)公司的4.3英寸TFTLCD显示屏LQ043T3DX02,其分辨率为480(RGB)×272.

视频采集和显示构件分为视频采集和视频显示两个子构件,基于Linux的V4L2架构实现.该架构在Linux内核中被分别映射为采集和显示两个设备文件,只要对这两个设备文件进行读写和控制操作就可实现视频采集和显示功能.视频采集子构件包括头文件Video_capture.h和源程序文件Video_capture.c,其中:头文件用于对外接口函数的声明;源程序文件用于对外接口函数的实现和内部函数的声明及实现.头文件中声明了4个对外接口函数,分别如下:

1)函数Video_capture_init()

该函数用于初始化视频采集设备,具体格式为:

uint8 Video_capture_init(uint32 vcfhandle,uint16 width,uint16 height,uint32 rate);

其中:参数vcfhandle为视频采集设备文件句柄,width为视频采集宽度,height为视频采集高度,rate为视频采集速率.函数返回值用于表示函数执行状态:0表示初始化成功,非0表示初始化失败.

2)函数Video_capture_start()

该函数用于启动视频采集,具体格式为:

uint8 Video_capture_start(uint32 vcfhandle);

其中:参数vcfhandle为视频采集设备文件句柄.函数返回值用于表示函数执行状态:0表示启动成功,非0表示启动失败.

3)函数Video_capture_stop()

该函数用于停止视频采集,具体格式为:

void Video_capture_stop(uint32 vcfhandle);

其中:参数vcfhandle为视频采集设备文件句柄.该函数无返回值.

4)函数Video_capture_buffer()

该函数用于将采集到的视频数据存入帧缓冲区,具体格式为:uint8 Video_capture_buffer(uint32 vcfhandle,uint8* buff);

其中:参数vcfhandle为视频采集设备文件句柄,buff为帧缓冲区.函数返回值用于表示函数执行状态:0表示操作成功,非0表示操作失败.

视频显示子构件的设计与视频采集子构件相似,只是操作对象变成了视频显示设备而已.

3.2 视频编解码构件

i.MX53内部集成了视频处理单元(Video Process Unit,VPU),该硬件视频加速器支持30帧·s-1的720 p视频编码;支持30帧·s-1的1 080 p视频解码;支持H.264、H.263和MPEG4等多种视频编解码标准.

视频编解码构件分为视频编码和视频解码两个子构件,是基于底层VPU构件实现的.VPU构件在Linux内核中被映射为一个设备文件.视频编码子构件包括头文件Video_encode.h和源程序文件Video_encode.c.头文件中声明的7个对外接口函数如表1所示,其中:encparam是编码参数结构体,frmbuff是帧缓冲地址结构体,vpucmd是VPU操作命令(枚举类型),encoutinfo是编码后的输出信息结构体.视频解码子构件的设计与视频编码子构件相似,在其头文件中也声明了7个类似的函数.

表1 视频编码子构件头文件中声明的函数Tab.1 Functions declared in header file of video encode sub -component

3.3 音频采集和播放构件

终端采用16位精度的音频编解码芯片wm9712,该芯片内部包含单声道和立体声两个编解码通道,其中单声道通道支持音频的采集和播放,采样频率为8或16 kHz;立体声通道仅支持音频的播放,采样频率范围为8~96 kHz.由于单声道通道可同时支持音频采集和播放,且本终端的音频信号是普通的语音信号,故采用了单声道编解码通道,且选择16 kHz的采样频率.

音频采集和播放构件分为音频采集和音频播放两个子构件,是基于底层PMIC构件和Linux的ALSA架构实现的.选择ALSA架构的模拟OSS模式,该模式提供的配置接口以函数ioctl()实现,而音频采集和播放以函数write()和read()实现.音频采集子构件包括头文件Audio_capture.h和源程序文件Audio_capture.c.头文件中声明的4个对外接口函数如表2所示.音频播放子构件的设计与音频采集子构件相似.

表2 音频采集子构件头文件中声明的函数Tab.2 Functions declared in header file of audio capture sub -component

3.4 网络实时传输构件

i.MX53内部集成了以太网控制器,但没有集成以太网物理层收发器,故外接了AC101L物理层芯片.它支持10/100BASE-T,通过MII接口与i.MX53相连.

网络实时传输构件基于实时传输协议(Real-time Transport Protocol,RTP)实现.为了满足音视频传输的实时性要求,采用了UDP套接字接口来实现.UDP套接字的编程接口主要包括4个函数:①socket():用于建立一个UDP类型的套接字描述符;②bind():用于将IP地址和端口号绑定到套接字描述符上;③sendto():用于通过UDP套接字的数据发送;④recvfrom():用于通过UDP套接字的数据接收.网络实时传输构件包括头文件Network_transmit.h和源程序文件Network_transmit.c.头文件中声明的4个对外接口函数如表3所示,其中rtp_struct是定义的RTP数据流结构体.

表3 网络实时传输构件头文件中声明的函数Tab.3 Functions declared in header file of network transmit component

3.5 可视IP电话终端构件

可视IP电话终端构件主要是通过调用中间件构件层提供的函数接口,并利用Linux的多线程机制和信号量机制实现的.利用Linux的信号量机制可实现线程的互斥操作,线程使用pthread_mutex_lock占用资源,使用pthread_mutex_unlock释放资源.

该构件建立4个线程,每个线程通过相应的函数实现:①视频采集编码后发送函数Video_send():调用了视频采集、视频编码和网络实时传输3个构件;②视频接收解码后显示函数Video_display():调用了网络实时传输、视频解码和视频显示3个构件;③音频采集与发送函数Audio_send():调用了音频采集和网络实时传输2个构件;④音频接收与播放函数Audio_play():调用了网络实时传输和音频播放2个构件.

4 终端的测试

测试时,将两台可视IP电话终端直接连到路由器,同时每台电话终端通过串口和一台PC机相连,PC机通过超级终端发送命令控制着终端上测试程序的运行.终端上运行的测试程序有:①音频通信测试程序:用于测试终端能否成功地采集、收发和播放语音;②视频通信测试程序:用于测试终端能否成功地采集、收发和显示视频;③终端总体测试程序:用于测试同时进行音视频传输时,电话终端能否完成传输以及传输的同步性.

可视IP电话终端间的通信效果与网络状况有直接关系,故本终端分别在三种典型的网络状况下进行测试,测试结果如表4所示.从表4可以看出,网络状况良好的情况下音视频通信效果良好,网络状况一般的情况下音视频通信效果一般,网络状况较差的情况下音视频通信效果较差.测试结果表明,单独的音频和视频均能正常传输,且同时进行音视频传输时的同步性也较好,故本终端能成功地采集、收发音视频数据并进行音频播放和视频显示.

表4 三种典型网络状况下的终端测试结果Tab.4 Terminal’s testing results under three kinds of typical network status

5 结语

随着人们生活质量的不断提高,可视IP电话终端必将会不断普及.本文提出的可视IP电话终端,以高性能的i.MX53多媒体处理器为主芯片进行单控制芯片的硬件设计.i.MX53内部集成了视频编解码器,故只需外扩一块音频编解码器芯片即可实现可视IP电话的功能,降低了硬件设计的复杂度,且系统稳定性仅取决于主芯片.软件方面,遵循软件工程思想,自顶向下分为应用层、中间件和底层三个构件层,中间件为应用层屏蔽了调用底层硬件驱动的复杂性,故降低了软件设计的复杂度,且具有很强的可移植性和扩展性.

[1]李君懿,赵利.基于SIP的嵌入式无线可视电话终端设计与实现[J].电子技术应用,2008,34(9):29-31.

[2]杨森,习勇,王丽洁.一种具有多跳功能的无线VoIP终端设计[J].现代电子技术,2010,33(3):59-61;64.

[3]郑子超.基于SIP的嵌入式音视频终端的设计[J].科技信息,2011(33):63-64.

[4]黄月祥,陈盛云.基于SIP的嵌入式VOIP终端研究与实现[J].微处理机,2011,32(4):62-64.

[5]金志涛,陈忠辉,陈新,等.VOIP语音传输终端设计[J].通信技术,2011,44(4):140-143.

[6]赵伟.一种基于i.MX51的嵌入式VoIP终端的设计与实现[D].苏州:苏州大学,2011.

[7]魏宏安,陈忠辉,徐艺文.嵌入式VOIP网络接口的设计[J].福州大学学报:自然科学版,2011,39(6):868-872.

[8]邵长彬,张重阳,郑世宝.基于Android的可视IP电话多媒体终端设计与实现[J].电视技术,2011,35(6):62-65.

[9]Freescale Semiconductor inc.Architectural differences between i.MX51 and i.MX53[EB/OL].(2011 -02 -13)[2012 -01-20].http://www.freescale.com.

[10]范先龙,郭传雄,迟学斌.一种基于Windows Peer-to-Peer网络的VoIP系统及其实现[J].计算机应用研究,2006,23(11):220-223.

猜你喜欢
音视频音频构件
3KB深圳市一禾音视频科技有限公司
必须了解的音频基础知识 家庭影院入门攻略:音频认证与推荐标准篇
基于Daubechies(dbN)的飞行器音频特征提取
WIFI音视频信号传输的关键问题探究
高速公路整合移动音视频系统应用
音频分析仪中低失真音频信号的发生方法
建筑构件
建筑构件
建筑构件
建筑构件