位置:51电子网 » 技术资料 » 通信网络

基于PXA255和嵌入式QT的IP视频电话设计

发布时间:2007/4/23 0:00:00 访问次数:458

传统的IP电话是将语音信号转变成数字信号,进行打包和压缩,在数据网上进行传输。但近年来,人们已经不满足于只能听到语音,还希望能见到对方的图像。本系统就是针对人们的这一需求,在Intel的PXA255平台上利用QT/Embedded图形开发工具设计的一个IP视频电话系统。

1 硬件系统结构

整个系统主要是在Intel PXA255评估平台Sitsang板上实现的。PXA255是基于Intel的Xscale架构的嵌入式处理器,该平台配备了大量的硬件资源。整个系统的硬件结构如图1所示。

2 软件系统结构

系统中采用的是基于Qt/Embedded 2.3.10版本的嵌入式图形库。该图形库是基于Linux系统的Frame Buffer机制的,并使用基于该图形库的Qtopia 2.2.1 PDA版本的窗口环境管理系统。Qt/Embedded是一个完整的自包含GUI和基于Linux的嵌入式平台开发工具,是QT的嵌入式开发版本。

音频和视频信号的采集、压缩、播放和传输都是建立在该图形界面和嵌入式Linux内核以上的,所以,在交叉编译移植嵌入式Linux内核时,要正确配置对USB、Video4Linux、摄像头和音频设备的支持以及对Frame Buffer机制的支持。交叉编译嵌入式QT时,要配置使其支持多线程、JPEG算法库、音频设备以及qvfb(基于X11的虚拟Frame Buffer机制)。本文主要讨论IP视频电话系统的设计实现,故嵌入式Linux内核和嵌入式QT的配置编译过程不再详述。整个系统的软件结构如图2所示。

3 系统的具体设计

本IP视频电话系统主要由音频采集/播放模块、视频采集/播放模块和网络传输模块组成。音频和视频模块采样本地数据,压缩处理后交给网络传输模块,由其发送到另一对话端,并从网络传输模块接收对方的音频和视频数据处理后进行播放。

3.1 网络传输模块设计

系统启动后,本地服务器端即对5000端口进行监听。若有IP电话连接进来,则接受连接,为其分配套接字资源,并根据通话类型,生成相应的音频、视频类实例来处理相应的音频、视频数据。系统可以实现视频通话,也可以只进行语音通话,即实现传统IP电话的功能,因为音频、视频数据格式不同,需要分别做不同的处理,故采用两个不同的套接字来进行处理,网络传输模块服务器端的基本流程如图3所示。

本地网络服务器端用从QServerSocket类继承的子类IPphoneServer实现。QT/Embedded类库已经对网络操作进行了很好的封装,所以系统只利用QT的信号和槽机制,给IPphoneServer类增加一个新的信号--VoidnewConnect(int)。信号所带的参数为套接字号,并重载了QServerSocket的虚子函数成员void newConnect(intsocket)。一旦发现有新的连接,它将把服务器端给新连接指定的接收套接字号(int socket)通过信号newConnect(int)发送出来,以便主程序设置对应的数据处理套接字。

在系统主程序中启动服务器,并将服务器实例的newConnect(int)信号连接到主程序的newConnect(int)槽函数上。一旦来了新的连接,server的newConnect(int)被发出,则由主程序的newConnect(int)槽函数接收套接字号并判断是音频还是视频连接后,将其指定给相应的音频或视频数据传输套接字,启动服务器的代码如下:

server=new IPphoneServer((tPort->text()).toUShort());connect(server,SIGNAL(newConnect(int)),SLOT(new-Connect(int)));

具体与音频/视频模块相关连进行数据传输的套接字从QSocket类继承来的子类IPPDataSock实现,它增加了一个新的QDataStream类指针成员变量ds来进行数据的传输处理,在IPPDataSock的构造函数中被实例化。

为音频和视频进行数据传输的套接字实例分别为aDataSock和vDataSock。若从已方发起连接,先通过QT的信号和槽机制设定相应的套接字连接、关闭和其他处理槽函数,再使用connectToHost()函数连接到远端服务器即可。音频套接字实例化代码如下:

aDataSock=new IPPDataSock(this); connect(aDataSock,SIGNAL(connected()),SLOT(tConnected())); connect(aDataSock,SIGNAL(connectionClosed()),SLOT(tClosed())); connect(aDataSock,SIGNAL

传统的IP电话是将语音信号转变成数字信号,进行打包和压缩,在数据网上进行传输。但近年来,人们已经不满足于只能听到语音,还希望能见到对方的图像。本系统就是针对人们的这一需求,在Intel的A255平台上利用QT/Embedded图形开发工具设计的一个IP视频电话系统。

1 硬件系统结构

整个系统主要是在Intel A255评估平台Sitsang板上实现的。A255是基于Intel的Xscale架构的嵌入式处理器,该平台配备了大量的硬件资源。整个系统的硬件结构如图1所示。

2 软件系统结构

系统中采用的是基于Qt/Embedded 2.3.10版本的嵌入式图形库。该图形库是基于Linux系统的Frame Buffer机制的,并使用基于该图形库的Qtopia 2.2.1 PDA版本的窗口环境管理系统。Qt/Embedded是一个完整的自包含GUI和基于Linux的嵌入式平台开发工具,是QT的嵌入式开发版本。

音频和视频信号的采集、压缩、播放和传输都是建立在该图形界面和嵌入式Linux内核以上的,所以,在交叉编译移植嵌入式Linux内核时,要正确配置对USB、Video4Linux、摄像头和音频设备的支持以及对Frame Buffer机制的支持。交叉编译嵌入式QT时,要配置使其支持多线程、JPEG算法库、音频设备以及qvfb(基于X11的虚拟Frame Buffer机制)。本文主要讨论IP视频电话系统的设计实现,故嵌入式Linux内核和嵌入式QT的配置编译过程不再详述。整个系统的软件结构如图2所示。

3 系统的具体设计

本IP视频电话系统主要由音频采集/播放模块、视频采集/播放模块和网络传输模块组成。音频和视频模块采样本地数据,压缩处理后交给网络传输模块,由其发送到另一对话端,并从网络传输模块接收对方的音频和视频数据处理后进行播放。

3.1 网络传输模块设计

系统启动后,本地服务器端即对5000端口进行监听。若有IP电话连接进来,则接受连接,为其分配套接字资源,并根据通话类型,生成相应的音频、视频类实例来处理相应的音频、视频数据。系统可以实现视频通话,也可以只进行语音通话,即实现传统IP电话的功能,因为音频、视频数据格式不同,需要分别做不同的处理,故采用两个不同的套接字来进行处理,网络传输模块服务器端的基本流程如图3所示。

本地网络服务器端用从QServerSocket类继承的子类IPphoneServer实现。QT/Embedded类库已经对网络操作进行了很好的封装,所以系统只利用QT的信号和槽机制,给IPphoneServer类增加一个新的信号--VoidnewConnect(int)。信号所带的参数为套接字号,并重载了QServerSocket的虚子函数成员void newConnect(intsocket)。一旦发现有新的连接,它将把服务器端给新连接指定的接收套接字号(int socket)通过信号newConnect(int)发送出来,以便主程序设置对应的数据处理套接字。

在系统主程序中启动服务器,并将服务器实例的newConnect(int)信号连接到主程序的newConnect(int)槽函数上。一旦来了新的连接,server的newConnect(int)被发出,则由主程序的newConnect(int)槽函数接收套接字号并判断是音频还是视频连接后,将其指定给相应的音频或视频数据传输套接字,启动服务器的代码如下:

server=new IPphoneServer((tPort->text()).toUShort());connect(server,SIGNAL(newConnect(int)),SLOT(new-Connect(int)));

具体与音频/视频模块相关连进行数据传输的套接字从QSocket类继承来的子类IPPDataSock实现,它增加了一个新的QDataStream类指针成员变量ds来进行数据的传输处理,在IPPDataSock的构造函数中被实例化。

为音频和视频进行数据传输的套接字实例分别为aDataSock和vDataSock。若从已方发起连接,先通过QT的信号和槽机制设定相应的套接字连接、关闭和其他处理槽函数,再使用connectToHost()函数连接到远端服务器即可。音频套接字实例化代码如下:

aDataSock=new IPPDataSock(this); connect(aDataSock,SIGNAL(connected()),SLOT(tConnected())); connect(aDataSock,SIGNAL(connectionClosed()),SLOT(tClosed())); connect(aDataSock,SIGNAL

相关IC型号

Warning: Undefined variable $stockkeys in G:\website_51dzw\www.51dzw.com\code\tech\view.php on line 152

热门点击

 

推荐技术资料

耳机的焊接
    整机电路简单,用洞洞板搭线比较方便。EM8621实际采... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!