IP电话网关的语音数据处理
发布时间:2008/5/26 0:00:00 访问次数:672
     旭 何 友
     清华大学电子系网络与人机通信研究所(100084)黄永峰
     来源:《电子技术应用》
     摘要:提出了一种集成式ip电话网关的实现方法,分析了语音信号在该网关中的处理过程,详细介绍了语音采样、播放、压缩与解压缩、rtp包的封装与解包以及ip包的接受和发送的实现方法。
    
    
     关键词:ip电话网关
     语音压缩 rtp协议
     随着ip电话技术的飞速发展,ip电话的实现方式正在由pc
     to pc过渡到phone to phone,在phone to phone的实现方式中,需要所谓的ip电话网关来连接pstn和因特网。因此ip电话网关成为目前计算机和通信领域研究的热点之一。虽然国内外许多厂商都在以不同的方式开发ip电话网关,但他们有一个共同的特点,即:几乎所有ip电话网关都采用了自己的专用硬件设备。本文提出了一种采用市场上通用的板卡来构造一种硬件集成式的ip电话网关的方法,并研究了语音数据在该网关的处理过程和实现方法。集成式ip电话网关的硬件构成如图1所示,它是在pentium
     ⅱ pc机基础上,插入dialogic公司的d/41e型语音卡、lsi公司的c6200资源卡和d_link网卡所组成。其中d/41e语音卡用来完成语音的采样和播放。c6200资源卡有一块ti公司的tms320c6201dsp芯片,用来完成语音的压缩和解压缩以及回声抵消。pentium
     ⅱ pc用来实现h.323协议栈的主要功能,网卡用来发送和接受ip包。下面具体分析语音数据在ip电话网关的处理过程和实现方法。
     1 语音采样和播放
     在该ip电话网关中,语音的采样和播放是由dialogic公司的d/41e型语音卡来完成,其中,语音采样是利用语音卡所提供的录音函数来完成的。在实时语音通信时,语音数据存入语音采样缓冲区中,等待语音压缩线程取出并处理。录音函数形式如下:
     dx_reciottdata (activechdev,&chinfo [activechdev].iott,&tptrec[0],&xpbvox,mode);
     该函数的输入参数的含义如下:
     int chdev 语音通道的设备句柄
     dx_iott *iott
     指向语音数据目的地的指针
     dv_tpt *tptp 指向终止参数块的指针
     dx_xpb *xpbp 指向i/o传输块的指针
     unsigned short mode 录音所采取的方式
     iott是一种dx_iott类型的数据结构,该数据结构中的io_type可取值io_dev和io_mem,分别用于指定语音数据存入文件还是存入缓冲区中。io_type的另一类取值可为io_cont,io_link或dx_iott,用于指定语音数据目的地的结构。如果io_type取值io_dev,则io_fhandle的值应为一个文件的句柄;如果io_type取值io_mem,则io_fhandle的值应为0,此时,io_bufp指向存放语音数据的缓冲区的起始地址。io_offset为地址偏移量。io_length用于指定文件或缓冲区的大小。如果io_type取值io_link,则io_nextp指向下一个存放语音数据的dx_iott数据结构,而io_pre
     vp指向上一个存放语音数据的dx_iott数据结构。dx_iott的数据结构定义如下:
     typedef struct dx_iott {
     unsigned short io_type; /*transfer type*/
     unsigned short rfu; /*reserved*/
     int io_fhandle; /*file descriptor*/
     char* io_bufp; /*pointer to base memory*/
     unsigned long io_offset; /*file/buffer
     offset*/
     long int io_length; /*length of data*/
     dx_iott io_nextp; /*ptr to next dx_iott if
     旭 何 友
     清华大学电子系网络与人机通信研究所(100084)黄永峰
     来源:《电子技术应用》
     摘要:提出了一种集成式ip电话网关的实现方法,分析了语音信号在该网关中的处理过程,详细介绍了语音采样、播放、压缩与解压缩、rtp包的封装与解包以及ip包的接受和发送的实现方法。
    
    
     关键词:ip电话网关
     语音压缩 rtp协议
     随着ip电话技术的飞速发展,ip电话的实现方式正在由pc
     to pc过渡到phone to phone,在phone to phone的实现方式中,需要所谓的ip电话网关来连接pstn和因特网。因此ip电话网关成为目前计算机和通信领域研究的热点之一。虽然国内外许多厂商都在以不同的方式开发ip电话网关,但他们有一个共同的特点,即:几乎所有ip电话网关都采用了自己的专用硬件设备。本文提出了一种采用市场上通用的板卡来构造一种硬件集成式的ip电话网关的方法,并研究了语音数据在该网关的处理过程和实现方法。集成式ip电话网关的硬件构成如图1所示,它是在pentium
     ⅱ pc机基础上,插入dialogic公司的d/41e型语音卡、lsi公司的c6200资源卡和d_link网卡所组成。其中d/41e语音卡用来完成语音的采样和播放。c6200资源卡有一块ti公司的tms320c6201dsp芯片,用来完成语音的压缩和解压缩以及回声抵消。pentium
     ⅱ pc用来实现h.323协议栈的主要功能,网卡用来发送和接受ip包。下面具体分析语音数据在ip电话网关的处理过程和实现方法。
     1 语音采样和播放
     在该ip电话网关中,语音的采样和播放是由dialogic公司的d/41e型语音卡来完成,其中,语音采样是利用语音卡所提供的录音函数来完成的。在实时语音通信时,语音数据存入语音采样缓冲区中,等待语音压缩线程取出并处理。录音函数形式如下:
     dx_reciottdata (activechdev,&chinfo [activechdev].iott,&tptrec[0],&xpbvox,mode);
     该函数的输入参数的含义如下:
     int chdev 语音通道的设备句柄
     dx_iott *iott
     指向语音数据目的地的指针
     dv_tpt *tptp 指向终止参数块的指针
     dx_xpb *xpbp 指向i/o传输块的指针
     unsigned short mode 录音所采取的方式
     iott是一种dx_iott类型的数据结构,该数据结构中的io_type可取值io_dev和io_mem,分别用于指定语音数据存入文件还是存入缓冲区中。io_type的另一类取值可为io_cont,io_link或dx_iott,用于指定语音数据目的地的结构。如果io_type取值io_dev,则io_fhandle的值应为一个文件的句柄;如果io_type取值io_mem,则io_fhandle的值应为0,此时,io_bufp指向存放语音数据的缓冲区的起始地址。io_offset为地址偏移量。io_length用于指定文件或缓冲区的大小。如果io_type取值io_link,则io_nextp指向下一个存放语音数据的dx_iott数据结构,而io_pre
     vp指向上一个存放语音数据的dx_iott数据结构。dx_iott的数据结构定义如下:
     typedef struct dx_iott {
     unsigned short io_type; /*transfer type*/
     unsigned short rfu; /*reserved*/
     int io_fhandle; /*file descriptor*/
     char* io_bufp; /*pointer to base memory*/
     unsigned long io_offset; /*file/buffer
     offset*/
     long int io_length; /*length of data*/
     dx_iott io_nextp; /*ptr to next dx_iott if