IP電話網關的語音數據處理
發布時間:2008/5/26 0:00:00 訪問次數:648
     旭 何 友
     清華大學電子系網絡與人機通信研究所(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