|
X86平台上的網路視訊電話 |
|
程式功能解說 |
|
語音與影像傳送的資料流與週邊裝置的關係 |
|
實現在Embedded system(ARM平台:Mini2440)上的網路視訊電話 |
作品簡易說明:
傳統在x86架構的PC上使用網際網路Video/Voice over IP (VVoIP)應用,傳輸層通訊協定採用TCP或UDP是有不錯的表現。但是如果將VVoIP實現在ARM-Based嵌入式平台之無線網路環境, VVoIP的通話連線效能遭受到一些侷限性的問題。例如TCP通訊協定無法達成即時性的封包傳遞效能,而UDP通訊協定封包傳遞常常會發生封包的遺失、重複、或順序錯置等等問題。而
IETF所提出的串流控制傳輸協定
Stream Control Transmission Protocol(SCTP)提供了幾個很好的特性。
SCTP:
1.
Multi-homing:這個特性使一個端點可以擁有多個網路IP,可以更容易的在不同的IP的切換;並且可以動態的加入新的網路位址到連線中,也可以動態的由連線中移除某一個網路位址。當主要線路(primary path)發生擁塞時,在使用者可以忍受的時間內,切換到另一個可以使用的線路,使得使用者可以繼續通話,而不會有所查覺線路中斷。
2.
Multi-streaming:透過多個虛擬的通道,來同時傳遞不同的封包,並且當其中任一種封包遺失時,並不會影響到其它封包的傳遞,因而達到更好的效能。
3.
PR-SCTP:PR-SCTP是SCTP的延伸,它定義了不完全可靠度傳輸(partial reliable)的新服務。採用PR-SCTP通訊協定的優勢,就是當不重要的封包因延遲或遺失的時候,來不及在接收端接收,可以將那些封包忽略掉,而持續進行後面其他封包的傳送或接收,因此可以達成即時性封包傳輸的效能。
透過以上這些特性,使得我們很容易透過SCTP來完成多個網路之間移動,並不會讓使用者查覺資料傳送中的中斷,還可達成在不同基地台之間無縫式換手連線,實現即時性視訊語音網路電話。
|
在不同基地台之間無縫式換手連線 |
國科會計畫第一階段先在Linux下參照SCTP的幾點特性來實作一影像語音通話程式,第二階段則是修改部分程式碼再編譯成ARM平台上的程式。
部分早期程式碼來自以下Open Project: IHU (一支Open Source Code的VoIP程式)
使用技術或工具:Linux(ubuntu)
、Qtopia/QtE、PR-SCTP協定、OpenCV、
Qmake、arm-none-linux-gnueabi-4.4.3、C語言、
Embedded System(ARM platform: Mini2440)
。
國科會編號:NSC99-2220-E-390-002
OpenFoundry: http://of.openfoundry.org/of/projects/1717
說明手冊以及Source Code都在
OpenFoundry裡,有興趣的人再去下載學習。
程式碼授權:OSI: GNU Affero General Public License v3 (AGPL3)