欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

發(fā)送設備和方法、接收設備和方法、存儲介質以及程序的制作方法

文檔序號:7600731閱讀:138來源:國知局
專利名稱:發(fā)送設備和方法、接收設備和方法、存儲介質以及程序的制作方法
技術領域
本發(fā)明涉及發(fā)送設備和方法、接收設備和方法、存儲介質以及程序。更具體地,本發(fā)明涉及允許根據(jù)通信網(wǎng)絡的狀態(tài)而更有效地發(fā)送包含冗余數(shù)據(jù)的數(shù)據(jù)的發(fā)送設備及其方法、接收設備及其方法、記錄介質以及程序。
背景技術
目前,廣泛應用通過各種通信介質如因特網(wǎng)發(fā)送視頻數(shù)據(jù)或音頻數(shù)據(jù)的服務。近年來,具體地,除了使用下載發(fā)送方案的服務之外,使用流發(fā)送方案的服務正變得越來越流行。
在流發(fā)送服務中,發(fā)送設備順序地發(fā)送數(shù)據(jù),而接收設備接收從發(fā)送設備發(fā)送的數(shù)據(jù)并同時重放基于所接收數(shù)據(jù)的視頻或音頻。流發(fā)送方案通常應用于網(wǎng)際電話、遠程電視會議服務、以及基于因特網(wǎng)的服務如視頻點播服務。
在流發(fā)送方案中,從發(fā)送設備發(fā)送的數(shù)據(jù)一般稱作“流數(shù)據(jù)”。
當通過不能保證數(shù)據(jù)到達的傳輸路徑如因特網(wǎng)發(fā)送運動圖象流數(shù)據(jù)或音頻流數(shù)據(jù)時,因傳輸負荷增加而發(fā)生數(shù)據(jù)包丟失。
由于數(shù)據(jù)包丟失,接收方遭受所重放運動圖象數(shù)據(jù)的擾動和/或所重放音頻的中斷。
為解決此問題,已經使用這樣的方法,其中,與流數(shù)據(jù)一起發(fā)送冗余數(shù)據(jù),允許接收方對丟失數(shù)據(jù)包糾錯。一個實例是FEC(向前糾錯)方案。在FEC方案中,為一組數(shù)據(jù)包產生多個冗余數(shù)據(jù)包,并且與該組數(shù)據(jù)包一起發(fā)送。當從屬于該組的數(shù)據(jù)包丟失任何數(shù)據(jù)包時,接收方使用冗余數(shù)據(jù)包對丟失數(shù)據(jù)包糾錯。
例如,如圖1所示,發(fā)送方在一組5個數(shù)據(jù)包即數(shù)據(jù)包1-1至1-5上增加兩個冗余數(shù)據(jù)包即FEC數(shù)據(jù)包2-1和2-2,并且向接收方發(fā)送所得到的數(shù)據(jù)包。通過對數(shù)據(jù)包1-1至1-5的既定組合執(zhí)行“異或”(XOR)操作而產生FEC數(shù)據(jù)包2-1和2-2。
例如,當在傳輸路徑上丟失數(shù)據(jù)包1-2時,接收方對數(shù)據(jù)包1-1和FEC數(shù)據(jù)包2-1執(zhí)行“異或”操作,以恢復數(shù)據(jù)包1-2。
在圖1所示實例中,可以糾正數(shù)據(jù)包丟失的錯誤,其中,可被糾正的丟失數(shù)據(jù)包的數(shù)量等于FEC數(shù)據(jù)包2-1和2-2的數(shù)量。也就是說,當丟失數(shù)據(jù)包1-1至1-5中的一個或兩個時,可以恢復所述數(shù)據(jù)包。
EFC方案可用于為一個幀的組產生冗余數(shù)據(jù)。然而,當使用軟件來產生冗余數(shù)據(jù)時,有這樣的問題在處理上增加明顯更高的負擔。
圖2示出一組數(shù)據(jù)包1-1至1-5和作為冗余數(shù)據(jù)包的FEC數(shù)據(jù)包2-1和2-2的發(fā)送順序。圖2中水平方向表示時間。
為了發(fā)送一組數(shù)據(jù)包1-1至1-5和作為冗余數(shù)據(jù)包的FEC數(shù)據(jù)包2-1和2-2,首先順序地發(fā)送數(shù)據(jù)包1-1至1-5,接著,順序發(fā)送FEC數(shù)據(jù)包2-1和2-2。
圖3為示出用于發(fā)送數(shù)據(jù)包和FEC數(shù)據(jù)包的已知處理的流程圖。在步驟S11中,發(fā)送設備初始化內部計時器。
在步驟S12中,發(fā)送設備基于計時器值而確定計時器是否已經停止。當計時器未停止時,就重復步驟S12中的確定處理,直到計時器停止。
當在步驟S12中確定計時器已經停止時,這意味著已經過去與一個幀相應的時間周期。然后,過程前進到步驟S13,在此步驟中,發(fā)送設備捕捉所提供的視頻數(shù)據(jù)。在步驟S14中,發(fā)送設備對捕捉到的圖象數(shù)據(jù)進行編碼。
在步驟S15中,發(fā)送設備產生RTP(實時傳輸協(xié)議)數(shù)據(jù)包,RTP數(shù)據(jù)包是包含編碼視頻數(shù)據(jù)的數(shù)據(jù)包。在步驟S16中,發(fā)送設備向接收方發(fā)送RTP數(shù)據(jù)包。
在步驟S17中,發(fā)送設備基于RTP數(shù)據(jù)包而產生FEC數(shù)據(jù)包。在步驟S18中,發(fā)送設備向接收方發(fā)送FEC數(shù)據(jù)包。
在步驟S19中,發(fā)送設備更新增加到RTP數(shù)據(jù)包上的時戳。在步驟S20中,發(fā)送設備設置內部計時器。然后,過程返回到步驟S12,并且重復上述處理。
未經審查的日本專利申請出版號2000-224226公開一種相關的技術。發(fā)送方產生每個數(shù)據(jù)包的信息塊,從而,該塊具有前一數(shù)據(jù)包和后一數(shù)據(jù)包的信息塊所共有的部分,發(fā)送方通過糾錯編碼而對信息塊進行編碼,并且發(fā)送編碼的信息塊。根據(jù)傳輸路徑的狀態(tài)而改變公共部分的大小。另一方面,接收方通過使用解碼和糾錯功能對信息塊進行糾錯。當接收方不能解碼時,該信息塊的公共部分就用前一數(shù)據(jù)包的公共部分替換,并且接收方對已替換公共部分的信息塊再次執(zhí)行解碼和糾錯。
未經審查的日本專利申請出版號2003-179580公開一種在數(shù)據(jù)包發(fā)送過程中基于網(wǎng)絡監(jiān)測單元監(jiān)測的網(wǎng)絡狀態(tài)而執(zhí)行糾錯控制的系統(tǒng)。此系統(tǒng)根據(jù)網(wǎng)絡中的數(shù)據(jù)包丟失和錯誤發(fā)生狀態(tài),通過動態(tài)改變模式,如基于FEC方案的錯誤控制或基于重放請求處理(ARQ自動重復請求)的糾錯,而執(zhí)行數(shù)據(jù)包傳輸。例如,當RTT(往返時間)較短時,系統(tǒng)選擇基于ARQ的糾錯,并且當RTT較長時,系統(tǒng)選擇基于FEC的糾錯,由此實現(xiàn)動態(tài)糾錯控制。
然而,總是與流數(shù)據(jù)一起發(fā)送冗余數(shù)據(jù)包涉及發(fā)送不希望有的數(shù)據(jù)。
另外,由于在網(wǎng)絡中不能計算出發(fā)生多少數(shù)據(jù)包丟失,因此,已知的方法在確定應該發(fā)送多少冗余數(shù)據(jù)包時有問題。

發(fā)明內容
本發(fā)明的一個方面提供一種用于通過通信網(wǎng)絡發(fā)送包含流數(shù)據(jù)的發(fā)送數(shù)據(jù)包的發(fā)送設備。發(fā)送設備包括用于確定通信網(wǎng)絡是否處于擁擠狀態(tài)的確定部件;以及,用于產生糾錯數(shù)據(jù)包的產生部件,所述糾錯數(shù)據(jù)包包含用于對流數(shù)據(jù)進行糾錯的糾錯數(shù)據(jù)。發(fā)送設備進一步包括控制部件,當確定結果從不擁擠狀態(tài)改變?yōu)閾頂D狀態(tài)時,所述控制部件控制由產生部件執(zhí)行的糾錯數(shù)據(jù)包產生,以便改變糾錯數(shù)據(jù)包的數(shù)量。
當確定通信網(wǎng)絡處于擁擠狀態(tài)時,控制部件執(zhí)行控制,以使產生部件產生預定數(shù)量的糾錯數(shù)據(jù)包,并且,當確定通信網(wǎng)絡不處于擁擠狀態(tài)時,控制部件執(zhí)行控制,以便取消產生部件執(zhí)行的糾錯數(shù)據(jù)包產生。
當確定結果從不擁擠狀態(tài)改變?yōu)閾頂D狀態(tài)時,控制部件根據(jù)緊前面的一擁擠狀態(tài)中的發(fā)送數(shù)據(jù)包的接收狀態(tài)而執(zhí)行控制,以便改變糾錯數(shù)據(jù)包的數(shù)量。
至少一個發(fā)送數(shù)據(jù)包可定義在預定時間周期內的一個糾錯單元。當根據(jù)預定時間周期內一個或多個糾錯單元的接收狀態(tài)而確定在預定時間周期內一個或多個糾錯單元中的糾錯數(shù)據(jù)包的數(shù)量不足時,控制部件執(zhí)行控制,以便增加糾錯數(shù)據(jù)包的數(shù)量。
確定部件根據(jù)短程相關延遲時間和遠程相關延遲時間而確定通信網(wǎng)絡是否處于擁擠狀態(tài),短程相關延遲時間取決于在從第一時間到當前時間的周期內向接收方發(fā)送所述發(fā)送數(shù)據(jù)包所需的延遲時間,而遠程相關延遲時間取決于在從第一時間到比第一時間更早的第二時間的周期內向接收方發(fā)送所述發(fā)送數(shù)據(jù)包所需的延遲時間。
本發(fā)明的另一方面提供一種用于通過通信網(wǎng)絡發(fā)送包含流數(shù)據(jù)的發(fā)送數(shù)據(jù)包的發(fā)送方法。所述方法包括用于確定通信網(wǎng)絡是否處于擁擠狀態(tài)的確定步驟;以及用于產生糾錯數(shù)據(jù)包的產生步驟,所述糾錯數(shù)據(jù)包包含用于對流數(shù)據(jù)進行糾錯的糾錯數(shù)據(jù)。所述方法進一步包括控制步驟,當確定結果從不擁擠狀態(tài)改變?yōu)閾頂D狀態(tài)時,所述控制步驟控制由產生部件執(zhí)行的糾錯數(shù)據(jù)包產生,以便改變糾錯數(shù)據(jù)包的數(shù)量。
本發(fā)明的另一方面提供一種記錄計算機可讀程序的存儲介質,所述程序用于通過通信網(wǎng)絡發(fā)送包含流數(shù)據(jù)的發(fā)送數(shù)據(jù)包的發(fā)送處理。所述計算機可讀程序包括用于確定通信網(wǎng)絡是否處于擁擠狀態(tài)的確定步驟;以及用于產生糾錯數(shù)據(jù)包的產生步驟,所述糾錯數(shù)據(jù)包包含用于對流數(shù)據(jù)進行糾錯的糾錯數(shù)據(jù)。所述計算機可讀程序進一步包括控制步驟,當確定結果從不擁擠狀態(tài)改變?yōu)閾頂D狀態(tài)時,所述控制步驟控制由產生部件執(zhí)行的糾錯數(shù)據(jù)包產生,以便改變糾錯數(shù)據(jù)包的數(shù)量。
本發(fā)明的另一方面提供一種用于使計算機執(zhí)行發(fā)送處理的程序,所述發(fā)送處理用于通過通信網(wǎng)絡發(fā)送包含流數(shù)據(jù)的發(fā)送數(shù)據(jù)包。所述程序包括用于確定通信網(wǎng)絡是否處于擁擠狀態(tài)的確定步驟;以及用于產生糾錯數(shù)據(jù)包的產生步驟,所述糾錯數(shù)據(jù)包包含用于對流數(shù)據(jù)進行糾錯的糾錯數(shù)據(jù)。所述程序進一步包括控制步驟,當確定結果從不擁擠狀態(tài)改變?yōu)閾頂D狀態(tài)時,所述控制步驟控制由產生部件執(zhí)行的糾錯數(shù)據(jù)包產生,以便改變糾錯數(shù)據(jù)包的數(shù)量。
發(fā)送設備可以是用于執(zhí)行發(fā)送處理的獨立設備或設置于通信設備內的部件。
本發(fā)明的另一方面是提供一種用于通過通信網(wǎng)絡接收包含流數(shù)據(jù)的發(fā)送數(shù)據(jù)包的接收設備。接收設備包括用于接收糾錯數(shù)據(jù)包的接收控制部件,所述糾錯數(shù)據(jù)包包含用于對流數(shù)據(jù)進行糾錯的糾錯數(shù)據(jù);以及確定部件,所述確定部件用于確定所接收糾錯數(shù)據(jù)包的數(shù)量對流數(shù)據(jù)糾錯是否足夠。
確定部件可確定所接收糾錯數(shù)據(jù)包的數(shù)量對流數(shù)據(jù)糾錯而言是不足、足夠或過多。
對于由至少一個發(fā)送數(shù)據(jù)包定義的每個糾錯單元,確定部件確定所接收糾錯數(shù)據(jù)包的數(shù)量對流數(shù)據(jù)糾錯是不足、足夠或過多。接收設備進一步包括設置部件,所述設置部件用于執(zhí)行設置,從而,當根據(jù)在預定時間周期內對一個或多個糾錯單元的確定結果而確定在預定時間周期內一個或多個糾錯單元中的糾錯數(shù)據(jù)包的數(shù)量不足時,要發(fā)送給接收方的通知表示糾錯數(shù)據(jù)包不足。
接收設備進一步包括產生部件,所述產生部件基于確定結果而產生包含通知的反饋數(shù)據(jù)包;以及發(fā)送控制部件,所述發(fā)送控制部件用于控制向接收方發(fā)送產生部件所產生的反饋數(shù)據(jù)包。
本發(fā)明的又一方面提供一種用于通過通信網(wǎng)絡接收包含流數(shù)據(jù)的發(fā)送數(shù)據(jù)包的接收方法。所述方法包括用于接收糾錯數(shù)據(jù)包的接收控制步驟,所述糾錯數(shù)據(jù)包包含用于對流數(shù)據(jù)進行糾錯的糾錯數(shù)據(jù);以及確定步驟,所述確定步驟用于確定在接收控制步驟中接收的糾錯數(shù)據(jù)包的數(shù)量對流數(shù)據(jù)糾錯是否足夠。
本發(fā)明的另一方面提供一種記錄計算機可讀程序的存儲介質,所述程序用于通過通信網(wǎng)絡接收包含流數(shù)據(jù)的發(fā)送數(shù)據(jù)包的接收處理。所述計算機可讀程序包括用于接收糾錯數(shù)據(jù)包的接收控制步驟,所述糾錯數(shù)據(jù)包包含用于對流數(shù)據(jù)進行糾錯的糾錯數(shù)據(jù);以及確定步驟,所述確定步驟用于確定在接收控制步驟中接收的糾錯數(shù)據(jù)包的數(shù)量對流數(shù)據(jù)糾錯是否足夠。
本發(fā)明的還一方面提供一種用于使計算機執(zhí)行接收處理的程序,所述接收處理用于通過通信網(wǎng)絡接收包含流數(shù)據(jù)的發(fā)送數(shù)據(jù)包。所述程序包括用于接收糾錯數(shù)據(jù)包的接收控制步驟,所述糾錯數(shù)據(jù)包包含用于對流數(shù)據(jù)進行糾錯的糾錯數(shù)據(jù);以及確定步驟,所述確定步驟用于確定在接收控制步驟中接收的糾錯數(shù)據(jù)包的數(shù)量對流數(shù)據(jù)糾錯是否足夠。
接收設備可以是用于執(zhí)行接收處理的獨立設備或設置于通信設備內的部件。
根據(jù)發(fā)送設備和方法、記錄介質以及程序,確定通信網(wǎng)絡是否處于擁擠狀態(tài),并且產生糾錯數(shù)據(jù)包,所述糾錯數(shù)據(jù)包包含用于對包含在發(fā)送數(shù)據(jù)包內的流數(shù)據(jù)進行糾錯的糾錯數(shù)據(jù)。當確定結果從不擁擠狀態(tài)改變?yōu)閾頂D狀態(tài)時,控制糾錯數(shù)據(jù)包的產生,以便改變糾錯數(shù)據(jù)包的數(shù)量。
根據(jù)接收設備和方法、記錄介質以及程序,接收糾錯數(shù)據(jù)包,所述糾錯數(shù)據(jù)包包含用于對包含在發(fā)送數(shù)據(jù)包內的流數(shù)據(jù)進行糾錯的糾錯數(shù)據(jù),并且,確定所接收糾錯數(shù)據(jù)包的數(shù)量對流數(shù)據(jù)糾錯是否足夠。
根據(jù)本發(fā)明,由于產生糾錯數(shù)據(jù)包,因此可發(fā)送用于糾錯的冗余數(shù)據(jù)。進一步地,根據(jù)本發(fā)明,確定通信網(wǎng)絡是否處于擁擠狀態(tài),并且產生糾錯數(shù)據(jù)包。當確定結果從不擁擠狀態(tài)改變?yōu)閾頂D狀態(tài)時,控制數(shù)據(jù)包產生,以便改變糾錯數(shù)據(jù)包的數(shù)量。這允許根據(jù)通信網(wǎng)絡的狀態(tài)而更有效地發(fā)送包含冗余數(shù)據(jù)的數(shù)據(jù)。
根據(jù)本發(fā)明,由于接收糾錯數(shù)據(jù)包,因此可對接收的數(shù)據(jù)糾錯。根據(jù)本發(fā)明,接收糾錯數(shù)據(jù)包,并確定所接收糾錯數(shù)據(jù)包的數(shù)量對流數(shù)據(jù)糾錯是否足夠。結果,發(fā)送方可根據(jù)通信網(wǎng)絡的狀態(tài)而有效地發(fā)送包含冗余數(shù)據(jù)的數(shù)據(jù)。


圖1示出已知的FEC數(shù)據(jù)包發(fā)送;圖2示出已知的FEC數(shù)據(jù)包發(fā)送順序;圖3為示出用于發(fā)送數(shù)據(jù)包和FEC數(shù)據(jù)包的已知處理的流程圖;圖4示出根據(jù)本發(fā)明一個實施例的通信系統(tǒng);圖5為示出服務器的典型配置的框圖;圖6為示出服務器的功能配置的框圖;圖7為示出客戶的功能配置的框圖;圖8為示出FEC數(shù)據(jù)包發(fā)送的時間圖;圖9示出FEC塊信息;圖10為示出數(shù)據(jù)發(fā)送處理的流程圖;圖11示出RTP數(shù)據(jù)包;圖12為示出用于控制FEC數(shù)據(jù)包發(fā)送的處理的流程圖;圖13為示出遠程相關RTT和短程相關RTT的圖形;圖14示出RTT測量數(shù)據(jù)包;圖15為示出用于更新FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)的處理的流程圖;圖16為示出用于改變FEC數(shù)據(jù)包數(shù)量的處理的流程圖;圖17為示出解碼處理的流程圖;圖18為示出用于發(fā)送FEC反饋數(shù)據(jù)包的處理的流程圖;
圖19示出FEC反饋數(shù)據(jù)包;圖20為示出用于更新接收-結束塊的FEC塊狀態(tài)的處理的流程圖;圖21為示出用于設置通知FEC狀態(tài)的處理的流程圖;以及圖22為示出用于返回RTT測量數(shù)據(jù)包的處理的流程圖。
具體實施例方式
在描述本發(fā)明的實施例之前,簡單解釋在此描述的方面與本發(fā)明的實施例之間的關系。也就是說,此描述用于確認在此包括本文所描述的支持本發(fā)明的實施例。相應地,即使存在任何在本文描述但與本發(fā)明的方面無關的實施例或實例,也不意味著此實施例或實例不覆蓋本發(fā)明的該方面。相反,即使所描述實施例與本發(fā)明的方面相對應,也不應推斷為該實施例不與本發(fā)明的任何其它方面相對應。
另外,此描述不代表在本文公開的所有方面。換句話說,本文描述不否認存在本發(fā)明的任何在本文中描述但未在此專利申請中要求權利的方面,也就是說,不否認存在通過分開的申請和/或修改而產生或增加的方面。
本發(fā)明提供一種發(fā)送設備。此發(fā)送設備(如圖4中所示的服務器12)包括確定部件(如圖6中的擁擠/不擁擠確定單元105)、產生部件(如圖6中的FEC(向前糾錯)數(shù)據(jù)包產生器84)、以及控制部件(如圖6中的FEC發(fā)送控制器86)。確定部件確定通信網(wǎng)絡是否處于擁擠狀態(tài)。產生部件產生糾錯數(shù)據(jù)包(如圖8中所示的FEC數(shù)據(jù)包組182-1),所述糾錯數(shù)據(jù)包包含用于對包含在發(fā)送數(shù)據(jù)包(如圖8中所示的RTP(實時傳輸協(xié)議)數(shù)據(jù)包組181-1)中的流數(shù)據(jù)進行糾錯的糾錯數(shù)據(jù)。當確定結果從不擁擠狀態(tài)改變?yōu)閾頂D狀態(tài)時,控制部件控制由產生部件執(zhí)行的糾錯數(shù)據(jù)包產生,以便改變糾錯數(shù)據(jù)包的數(shù)量。
當確定通信網(wǎng)絡處于擁擠狀態(tài)時,發(fā)送設備的控制部件(如圖6的FEC發(fā)送控制器86)可執(zhí)行控制,以便使產生部件(如圖6中的FEC數(shù)據(jù)包產生器84)產生預定數(shù)量的糾錯數(shù)據(jù)包(如圖8中所示的FEC數(shù)據(jù)包組182-1)。當確定通信網(wǎng)絡不處于擁擠狀態(tài)時,控制部件可執(zhí)行控制,以便取消產生部件執(zhí)行的糾錯數(shù)據(jù)包產生。
當確定結果從不擁擠狀態(tài)改變?yōu)閾頂D狀態(tài)時,發(fā)送設備的控制部件(如圖6的FEC發(fā)送控制器86)可根據(jù)緊前面的一擁擠狀態(tài)中的發(fā)送數(shù)據(jù)包的接收狀態(tài)而執(zhí)行控制,以便使產生部件(如圖6中的FEC數(shù)據(jù)包產生器84)改變糾錯數(shù)據(jù)包的數(shù)量。
在發(fā)送設備中,至少一個發(fā)送數(shù)據(jù)包定義在預定時間周期內的一個糾錯單元(如圖8中的FEC塊171-1)。當根據(jù)在預定時間周期內一個或多個糾錯單元的接收狀態(tài)而確定在預定時間周期內一個或多個糾錯單元中的糾錯數(shù)據(jù)包的數(shù)量不足時,控制部件(如圖6的FEC發(fā)送控制器86)控制產生部件(如圖6中的FEC數(shù)據(jù)包產生器84)執(zhí)行的糾錯數(shù)據(jù)包產生,以便增加糾錯數(shù)據(jù)包的數(shù)量。
確定部件(如圖6中的擁擠/不擁擠確定單元105)根據(jù)短程相關延遲時間和遠程相關延遲時間而確定通信網(wǎng)絡是否處于擁擠狀態(tài)。短程相關延遲時間取決于在從第一時間到當前時間的周期內向接收方發(fā)送所述發(fā)送數(shù)據(jù)包所需的延遲時間,遠程相關延遲時間取決于在從第一時間到比第一時間更早的第二時間的周期內向接收方發(fā)送所述發(fā)送數(shù)據(jù)包所需的延遲時間。
本發(fā)明還提供一種發(fā)送方法。此發(fā)送方法包括確定步驟(如圖12所示步驟S87中的處理)、產生步驟(如圖10所示步驟S59中的處理)、以及控制步驟(如圖12所示步驟S91中的處理)。在確定步驟中,確定通信網(wǎng)絡是否處于擁擠狀態(tài)。在產生步驟中,產生糾錯數(shù)據(jù)包,所述糾錯數(shù)據(jù)包包含用于對包含在發(fā)送數(shù)據(jù)包中的流數(shù)據(jù)進行糾錯的糾錯數(shù)據(jù)。在控制步驟中,當確定結果從不擁擠狀態(tài)改變?yōu)閾頂D狀態(tài)時,控制在產生步驟中的糾錯數(shù)據(jù)包產生,從而改變糾錯數(shù)據(jù)包的數(shù)量。
本發(fā)明進一步提供一種程序。此程序由計算機執(zhí)行,并且包括確定步驟(如圖12所示步驟S87中的處理)、產生步驟(如圖10所示步驟S59中的處理)、以及控制步驟(如圖12所示步驟S91中的處理)。在確定步驟中,確定通信網(wǎng)絡是否處于擁擠狀態(tài)。在產生步驟中,產生糾錯數(shù)據(jù)包,所述糾錯數(shù)據(jù)包包含用于對包含在發(fā)送數(shù)據(jù)包中的流數(shù)據(jù)進行糾錯的糾錯數(shù)據(jù)。在控制步驟中,當確定結果從不擁擠狀態(tài)改變?yōu)閾頂D狀態(tài)時,控制在產生步驟中的糾錯數(shù)據(jù)包產生,從而改變糾錯數(shù)據(jù)包的數(shù)量。
此程序可記錄到存儲介質(如圖5中所示的磁盤51)上。
本發(fā)明提供一種接收設備。此接收設備(如圖4中所示的客戶機14)包括接收控制部件(如圖7中所示的接收器151)和確定單元(如圖7中的FEC處理器135)。接收控制部件接收糾錯數(shù)據(jù)包(如圖8中的FEC數(shù)據(jù)包組182-1),所述糾錯數(shù)據(jù)包包含用于對包含在發(fā)送數(shù)據(jù)包(如圖8中的RTP數(shù)據(jù)包組181-1)中的流數(shù)據(jù)進行糾錯的糾錯數(shù)據(jù)。確定部件確定所接收糾錯數(shù)據(jù)包的數(shù)量對流數(shù)據(jù)糾錯是否適當。
在接收設備中,確定部件(如圖7中所示的FEC處理器135)可確定所接收糾錯數(shù)據(jù)包的數(shù)量對流數(shù)據(jù)糾錯是不足、足夠或過多。
在接收設備中,對于至少一個發(fā)送數(shù)據(jù)包所定義的每個糾錯單元(如圖8中的FEC塊171-1),確定部件(如圖7中的FEC處理器135)可確定所接收糾錯數(shù)據(jù)包(如圖8中的FEC數(shù)據(jù)包組182-1)的數(shù)量對流數(shù)據(jù)糾錯是不足、足夠或過多。接收設備可進一步包括用于執(zhí)行設置的設置部件(如圖7中的通知FEC狀態(tài)保存單元137),從而,當根據(jù)在預定時間周期內對一個或多個糾錯單元的確定結果,確定在預定時間周期內一個或多個糾錯單元中的糾錯數(shù)據(jù)包的數(shù)量不足時,要向接收方發(fā)送的通知表示糾錯數(shù)據(jù)包不足。
接收設備可進一步包括產生部件(如圖7中所示的FEC反饋數(shù)據(jù)包產生器153)以及發(fā)送控制部件(如圖7中所示的發(fā)送器152)。產生部件基于確定結果而產生包含通知的反饋數(shù)據(jù)包,并且發(fā)送控制部件控制向接收端發(fā)送產生部件所產生的反饋數(shù)據(jù)包。
本發(fā)明進一步提供一種接收方法。此接收方法包括接收控制步驟(如圖18所示步驟S172中的處理)以及確定步驟(如圖22所示步驟S221中的處理)。在接收控制步驟中,接收糾錯數(shù)據(jù)包,所述糾錯數(shù)據(jù)包包含用于對包含在發(fā)送數(shù)據(jù)包中的流數(shù)據(jù)進行糾錯的糾錯數(shù)據(jù)。在確定步驟中,確定在接收控制步驟中接收的糾錯數(shù)據(jù)包的數(shù)量對流數(shù)據(jù)糾錯是否足夠。
本發(fā)明進一步提供一種程序。此程序由計算機執(zhí)行,并包括接收控制步驟(如圖18所示步驟S172中的處理)以及確定步驟(如圖22所示步驟S221中的處理)。在接收控制步驟中,接收糾錯數(shù)據(jù)包,所述糾錯數(shù)據(jù)包包含用于對包含在發(fā)送數(shù)據(jù)包中的流數(shù)據(jù)進行糾錯的糾錯數(shù)據(jù)。在確定步驟中,確定在接收控制步驟中接收的糾錯數(shù)據(jù)包的數(shù)量對流數(shù)據(jù)糾錯是否足夠。
此程序可記錄到存儲介質(如圖5中所示的磁盤51)上。
本發(fā)明可應用于實時發(fā)送流數(shù)據(jù)的通信系統(tǒng)。實例包括網(wǎng)際電話、TV電話、遠程電視會議系統(tǒng)、現(xiàn)場視頻流分配系統(tǒng)、以及用于發(fā)送流數(shù)據(jù)的通信系統(tǒng)。
圖4示出根據(jù)本發(fā)明一個實施例的通信系統(tǒng)。照相機11捕捉圖象,并向服務器12提供與所捕捉圖象相應的視頻數(shù)據(jù)。例如,照相機11捕捉運動圖象,并向服務器12提供與運動圖象相應的視頻數(shù)據(jù)。
視頻數(shù)據(jù)是流數(shù)據(jù)的一個實例。流數(shù)據(jù)可以是隨著時間的流逝需要順序發(fā)送或接收的任何數(shù)據(jù)。流數(shù)據(jù)的實例包括音頻數(shù)據(jù)和實時控制數(shù)據(jù)。
服務器12把從照相機11提供的視頻數(shù)據(jù)裝入到數(shù)據(jù)包中,并通過通信網(wǎng)絡13把所述數(shù)據(jù)包發(fā)送給客戶機14。服務器12還產生用于對包含視頻數(shù)據(jù)的數(shù)據(jù)包進行糾錯的冗余數(shù)據(jù),把冗余數(shù)據(jù)裝入數(shù)據(jù)包,并且通過通信網(wǎng)絡13把得到的數(shù)據(jù)包發(fā)送給客戶機14。
通信網(wǎng)絡13是有線或無線的傳輸路徑,例如包括因特網(wǎng)或通信線路或網(wǎng)絡,并且,通信網(wǎng)絡13用于把從服務器12發(fā)送的數(shù)據(jù)包傳輸給客戶機14。
客戶機14通過通信網(wǎng)絡13接收從服務器12發(fā)送的各種數(shù)據(jù)包。
當客戶機14不能正確地接收包含流數(shù)據(jù)的數(shù)據(jù)包時,客戶機14根據(jù)包含冗余數(shù)據(jù)的數(shù)據(jù)包而對不能正確接收的包含視頻數(shù)據(jù)的數(shù)據(jù)包進行糾錯。
客戶機14向服務器12發(fā)出表示數(shù)據(jù)包接收狀態(tài)的通知,其中,所述數(shù)據(jù)包是從服務器12通過通信網(wǎng)絡13發(fā)送的。服務器12獲得通信網(wǎng)絡13的通信狀態(tài)。例如,服務器12根據(jù)往返時間(RTT)而獲得通信網(wǎng)絡13是否擁擠的狀態(tài)。服務器12根據(jù)客戶機14的通知和通信網(wǎng)絡13的傳輸狀態(tài),而改變要發(fā)送給客戶機14的包含冗余數(shù)據(jù)的數(shù)據(jù)包的數(shù)量。
圖5為示出服務器12的典型配置的框圖。CPU(中央處理單元)31根據(jù)記錄在ROM(只讀存儲器)32或記錄單元38中的程序而執(zhí)行各種處理。如果需要,RAM(隨機存取存儲器)33儲存數(shù)據(jù)和/或由CPU 31執(zhí)行的程序。CPU 31、ROM 32和RAM 33通過總線34互連。
CPU 31還通過總線34連接到輸入/輸出接口35。輸入單元36和輸出單元37連接到輸入/輸出接口35,其中,輸入單元36包括鍵盤、鼠標和開關,輸出單元37包括顯示器、揚聲器和燈。CPU 31為響應通過輸入單元36輸入的指令而執(zhí)行各種處理。
記錄單元38連接到輸入/輸出接口35,并且例如包括硬盤。記錄單元38記錄各種數(shù)據(jù)和/或由CPU 31執(zhí)行的程序。通信單元39通過通信網(wǎng)絡13如因特網(wǎng)或其它網(wǎng)絡與外部設備如客戶機14通信。
通過通信單元39獲得程序,服務器12可把程序記錄到記錄單元38上。
進一步地,驅動器40連接到輸入/輸出接口35。存儲介質,如磁盤51、光盤52、磁光盤53或半導體存儲器54,連接到驅動器40。驅動器40驅動存儲介質,以獲得記錄在介質中的程序和/或數(shù)據(jù)。如果需要,所獲得的程序和/或數(shù)據(jù)傳輸并記錄到記錄單元38上。
由于客戶機14具有與服務器12相同的配置,因此,下面不給出對客戶機14的描述。
圖6為示出根據(jù)本發(fā)明一個實施例的服務器12的配置的框圖。
服務器12配置為包括通信單元39、編碼器81、緩沖器82、RTP(實時傳輸協(xié)議)數(shù)據(jù)包產生器83、FEC(向前糾錯)數(shù)據(jù)包產生器84、RTT(往返時間)測量單元85、FEC發(fā)送控制器86、FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)保存單元87、FEC發(fā)送模式存儲單元88以及FEC數(shù)據(jù)包計數(shù)保存單元89。
編碼器81對從照相機11提供的視頻數(shù)據(jù)(它是流數(shù)據(jù)的一個實例)進行編碼,并且把編碼的視頻數(shù)據(jù)提供給緩沖器82。
緩沖器82臨時儲存從編碼器81提供的視頻數(shù)據(jù)。
RTP數(shù)據(jù)包產生器83從緩沖器82獲得編碼視頻數(shù)據(jù)。RTP數(shù)據(jù)包產生器83接著通過把獲得的視頻數(shù)據(jù)裝入到RTP格式數(shù)據(jù)包中而產生RTP數(shù)據(jù)包,并且把產生的RTP數(shù)據(jù)包提供給通信單元39。
RTP數(shù)據(jù)包基于IETF RFC(因特網(wǎng)工程任務強制轉移征求意見文件)1889規(guī)定的RTP(實時傳輸協(xié)議)方案。
RTP數(shù)據(jù)包產生器83還向FEC數(shù)據(jù)包產生器84提供包含在所產生RTP數(shù)據(jù)包內的RTP數(shù)據(jù)包數(shù)據(jù)。
FEC數(shù)據(jù)包產生器84查詢儲存在FEC發(fā)送模式存儲單元88中的FEC發(fā)送模式標記。當模式標記表示FEC發(fā)送模式時,F(xiàn)EC數(shù)據(jù)包產生器84使用從RTP數(shù)據(jù)包產生器83提供的RTP數(shù)據(jù)包中的數(shù)據(jù),以根據(jù)預定的糾錯方案而產生一定數(shù)量的數(shù)據(jù)包,此數(shù)量由從FEC數(shù)據(jù)包計數(shù)保存單元89提供的FEC數(shù)據(jù)包計數(shù)(即FEC數(shù)據(jù)包的數(shù)量)指示。FEC數(shù)據(jù)包產生器84把產生的FEC數(shù)據(jù)包提供給通信單元39。
當模式標記不指示FEC發(fā)送模式時,F(xiàn)EC數(shù)據(jù)包產生器84不產生FEC數(shù)據(jù)包。
通信單元39具有用于發(fā)送各種數(shù)據(jù)包的發(fā)送器101和用于接收各種數(shù)據(jù)包的接收器102,由此通過通信網(wǎng)絡13發(fā)送/接收數(shù)據(jù)包。
當通信單元39接收從RTP數(shù)據(jù)包產生器83提供的RTP數(shù)據(jù)包和從FEC數(shù)據(jù)包產生器84提供的FEC數(shù)據(jù)包時,通信單元39的發(fā)送器101通過通信網(wǎng)絡13向客戶機14發(fā)送這些數(shù)據(jù)包。
更具體地,通信單元39的發(fā)送器101臨時保存從RTP數(shù)據(jù)包產生器83提供的RTP數(shù)據(jù)包和從FEC數(shù)據(jù)包產生器84提供的FEC數(shù)據(jù)包。隨后,發(fā)送器101根據(jù)預定的方案如分段傳輸方案,通過通信網(wǎng)絡13向客戶機14發(fā)送包含相同F(xiàn)EC塊ID的RTP數(shù)據(jù)包和FEC數(shù)據(jù)包,作為一個FEC塊。在后面描述用于FEC塊標識的FEC塊ID的細節(jié)。
RTT測量單元85向通信單元39提供RTT測量數(shù)據(jù)包。接著,通信單元39的發(fā)送器101通過通信網(wǎng)絡13向客戶機14發(fā)送RTT測量數(shù)據(jù)包。
通信單元39的接收器102通過通信網(wǎng)絡13接收從客戶機14發(fā)送的RTT測量數(shù)據(jù)包,并接著把RTT測量數(shù)據(jù)包提供給RTT測量單元85。通信單元39的接收器102還通過通信網(wǎng)絡13接收從客戶機14發(fā)送的FEC反饋數(shù)據(jù)包,并接著把FEC反饋數(shù)據(jù)包提供給FEC發(fā)送控制器86。
如上所述,RTT測量單元85產生RTT測量數(shù)據(jù)包,并把產生的RTT測量數(shù)據(jù)包提供給通信單元39。RTT測量單元85還根據(jù)由通信單元39接收并提供的RTT測量數(shù)據(jù)包而計算延遲時間(即RTT)。
RTT測量單元85具有用于計算遠程相關RTT的遠程相關RTT計算單元103和用于計算短程相關RTT的短程相關RTT計算單元104。RTT測量單元85的遠程相關RTT計算單元103基于RTT測量單元85計算的延遲時間而計算遠程相關RTT。RTT測量單元85的短程相關RTT計算單元104基于RTT測量單元85計算的延遲時間而計算短程相關RTT。在后面描述遠程相關RTT和短程相關RTT的細節(jié)。
RTT測量單元85進一步向FEC發(fā)送控制器86提供由遠程相關RTT計算單元103計算的遠程相關RTT和由遠程相關RTT計算單元104計算的短程相關RTT。
FEC發(fā)送控制器86控制FEC數(shù)據(jù)包產生器84所執(zhí)行的FEC數(shù)據(jù)包產生。FEC發(fā)送控制器86具有用于確定通信網(wǎng)絡13是否處于擁擠狀態(tài)的擁擠/不擁擠確定單元105。
更具體地,基于從RTT測量單元85提供的遠程相關RTT和短程相關RTT,F(xiàn)EC發(fā)送控制器86的擁擠/不擁擠確定單元105確定通信網(wǎng)絡13是否處于擁擠狀態(tài),并接著儲存確定結果。當確定結果表示通信網(wǎng)絡13處于擁擠狀態(tài)時,F(xiàn)EC發(fā)送控制器86在FEC發(fā)送模式存儲單元88中設置FEC發(fā)送模式標記(如設置“1”)。當確定結果表示通信網(wǎng)絡13不處于擁擠狀態(tài)時,即處于不擁擠狀態(tài)時,F(xiàn)EC發(fā)送控制器86重置FEC發(fā)送模式存儲單元88中的FEC發(fā)送模式標記(如設置“0”)。
根據(jù)由通信單元39接收和提供的FEC反饋數(shù)據(jù)包,F(xiàn)EC發(fā)送控制器86更新保存在FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)保存單元87中的FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)。FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)表示FEC數(shù)據(jù)包的數(shù)量是增加、減少或保持不變。在后面描述用于改變FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)的處理的細節(jié)。
FEC發(fā)送控制器86進一步讀取保存在FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)保存單元87中的FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài),以更新由FEC數(shù)據(jù)包計數(shù)保存單元89保存的FEC數(shù)據(jù)包計數(shù)。在后面描述用于改變FEC數(shù)據(jù)包數(shù)量的處理的細節(jié)。
FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)保存單元87保存(儲存)從FEC發(fā)送控制器86提供的FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)。
FEC發(fā)送模式存儲單元88儲存表示操作是否處于FEC發(fā)送模式的FEC發(fā)送模式標記。當設置FEC發(fā)送模式標記(如用“1”表示)時,這代表操作處于FEC發(fā)送模式。當重置FEC發(fā)送模式標記(如用“0”表示)時,這代表操作不處于FEC發(fā)送模式。當操作處于FEC發(fā)送模式時,F(xiàn)EC數(shù)據(jù)包產生器84產生FEC數(shù)據(jù)包。當操作不處于FEC發(fā)送模式時,F(xiàn)EC數(shù)據(jù)包產生器84不產生FEC數(shù)據(jù)包。
當通信網(wǎng)絡13處于擁擠狀態(tài)時,儲存在FEC發(fā)送模式存儲單元88中的FEC發(fā)送模式標記由FEC發(fā)送控制器86設置。當通信網(wǎng)絡13為不擁擠狀態(tài)時,儲存在FEC發(fā)送模式存儲單元88中存儲的FEC發(fā)送模式標記由FEC發(fā)送控制器86重置。
也就是說,當通信網(wǎng)絡13處于擁擠狀態(tài)時,操作處于FEC發(fā)送模式,從而,產生并發(fā)送FEC數(shù)據(jù)包。另一方面,當通信網(wǎng)絡13不處于擁擠狀態(tài)時,操作不處于FEC發(fā)送模式,從而不產生和發(fā)送FEC數(shù)據(jù)包。
FEC數(shù)據(jù)包計數(shù)保存單元89保存從FEC發(fā)送控制器86提供的FEC數(shù)據(jù)包計數(shù)。FEC數(shù)據(jù)包計數(shù)保存單元89還把從FEC發(fā)送控制器86提供的FEC數(shù)據(jù)包計數(shù)提供給FEC數(shù)據(jù)包產生器84。
也可布置為FEC數(shù)據(jù)包產生器84包括FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)保存單元87、FEC發(fā)送模式存儲單元88以及FEC數(shù)據(jù)包計數(shù)保存單元89。
圖7為示出根據(jù)本發(fā)明實施例的客戶機14的配置的框圖。
客戶機14配置為包括通信單元131、RTP處理器132、緩沖器133、解碼器134、FEC處理器135、FEC塊信息保存單元136、通知FEC狀態(tài)保存單元137以及RTT測量單元138。
通信單元131與服務器12的通信單元39相對應,并且具有用于控制數(shù)據(jù)包接收的接收器151和用于控制數(shù)據(jù)包發(fā)送的發(fā)送器152。通信單元131的接收器151接收通過通信網(wǎng)絡13發(fā)送的各種數(shù)據(jù)包,并且把接收的數(shù)據(jù)包提供給RTP處理器132或RTT測量單元138。通信單元131的發(fā)送器152通過通信網(wǎng)絡13發(fā)送各種數(shù)據(jù)包。
RTP處理器132檢查由通信單元131接收并提供的RTP數(shù)據(jù)包和FEC數(shù)據(jù)包。在接收正常的FEC數(shù)據(jù)包時,RTP處理器132把接收的FEC數(shù)據(jù)包提供給FEC處理器135,并且還向FEC塊信息保存單元136提供FEC頭部信息。另一方面,當接收異常的FEC數(shù)據(jù)包時,RTP處理器132放棄所接收的FEC數(shù)據(jù)包。
另外,在接收正常的RTP數(shù)據(jù)包時,RTP處理器132臨時保存RTP數(shù)據(jù)包,并向FEC塊信息保存單元136提供RTP頭部信息。當RTP處理器132接收異常的RTP數(shù)據(jù)包并接收其所包含F(xiàn)EC塊ID與包含在所接收數(shù)據(jù)包中的FEC數(shù)據(jù)包相同的FEC數(shù)據(jù)包時,RTP處理器132向FEC處理器135提供請求異常RTP數(shù)據(jù)包恢復的信號。
當RTP處理器132接收異常的RTP數(shù)據(jù)包并且不接收其所包含F(xiàn)EC塊ID與包含在所接收RTP數(shù)據(jù)包中的FEC塊ID相同的FEC數(shù)據(jù)包時,RTP處理器132放棄RTP數(shù)據(jù)包。
在RTP處理器132不向FEC處理器135提供請求RTP數(shù)據(jù)包恢復的信號的情況下,RTP處理器132在結束數(shù)據(jù)包接收時向緩沖器133提供臨時保存的RTP數(shù)據(jù)包。
在RTP處理器132向FEC處理器135提供請求RTP數(shù)據(jù)包恢復的信號的情況下,在結束數(shù)據(jù)包接收之后,從FEC處理器135向RTP處理器132提供恢復的RTP數(shù)據(jù)包。接著,RTP處理器132向緩沖器133提供保存的RTP數(shù)據(jù)包和恢復的RTP數(shù)據(jù)包。
進一步地,當正確地接收RTP數(shù)據(jù)包或FEC數(shù)據(jù)包時,RTP處理器132增加所接收數(shù)據(jù)包的數(shù)量,該數(shù)量儲存在FEC塊信息表中,所述FEC塊信息表保存在FEC塊信息保存單元136中。當包含在所接收RTP數(shù)據(jù)包或FEC數(shù)據(jù)包中的FEC塊ID改變時,F(xiàn)EC塊信息保存單元136更新保存在FEC塊信息保存單元136中的FEC塊信息。在后面描述FEC塊信息表的細節(jié)和用于更新FEC塊信息的處理的細節(jié)。
緩沖器133臨時儲存從RTP處理器132提供的RTP數(shù)據(jù)包。
解碼器134順序地獲得儲存在緩沖器133中的RTP數(shù)據(jù)包,并且從獲得的RTP數(shù)據(jù)包中提取視頻數(shù)據(jù)。解碼器134通過使用與編碼器81相應的解碼方案對所提取的視頻數(shù)據(jù)進行解碼,并輸出解碼視頻。
FEC處理器135具有用于產生FEC反饋數(shù)據(jù)包的FEC反饋產生器153。
FEC處理器135臨時保存從RTP處理器132提供的FEC數(shù)據(jù)包。當從RTP處理器132提供請求異常RTP數(shù)據(jù)包恢復的信號時,F(xiàn)EC處理器135基于FEC數(shù)據(jù)包而恢復RTP數(shù)據(jù)包,并且向RTP處理器132提供恢復的RTP數(shù)據(jù)包。
更具體地,例如,F(xiàn)EC處理器135獲得由RTP處理器132正確接收并臨時保存的RTP數(shù)據(jù)包,并且所述RTP數(shù)據(jù)包是恢復處理所要求的,F(xiàn)EC處理器135根據(jù)獲得的RTP數(shù)據(jù)包和FEC數(shù)據(jù)包而恢復未正確接收的一個或多個RTP數(shù)據(jù)包。
當未從RTP處理器132提供用于請求異常RTP數(shù)據(jù)包恢復的信號時,F(xiàn)EC處理器135在結束數(shù)據(jù)包接收時放棄保存的FEC數(shù)據(jù)包。
也可布置為RTP處理器132恢復RTP數(shù)據(jù)包。
當記錄在FEC塊信息表中的FEC塊ID改變時,F(xiàn)EC處理器135根據(jù)FEC塊信息而更新FEC塊狀態(tài),其中,F(xiàn)EC塊信息表由FEC塊信息保存單元136保存,F(xiàn)EC塊狀態(tài)表示由FEC塊信息保存單元136保存(記錄)的FEC數(shù)據(jù)包的數(shù)量是否足夠。FEC處理器135讀取保存在FEC塊信息保存單元136中的FEC塊信息,以更新保存在通知FEC狀態(tài)保存單元137中的通知FEC狀態(tài)。在后面描述用于更新FEC塊狀態(tài)的處理和用于更新通知FEC狀態(tài)的處理。
FEC處理器135的FEC反饋數(shù)據(jù)包產生器153根據(jù)保存在通知FEC狀態(tài)保存單元137中的通知FEC狀態(tài)而產生FEC反饋數(shù)據(jù)包,并且向通信單元131提供產生的FEC反饋數(shù)據(jù)包。在后面描述FEC反饋數(shù)據(jù)包的細節(jié)。
FEC塊信息保存單元136保存(記錄)由RTP處理器132和FEC處理器135更新的FEC塊信息。
通知FEC狀態(tài)保存單元137保存由FEC處理器135更新的通知FEC狀態(tài)。
RTT測量單元138獲得由通信單元131接收并提供的RTT測量數(shù)據(jù)包。RTT測量單元138產生其所包含數(shù)據(jù)部分與所獲得RTT測量數(shù)據(jù)包的數(shù)據(jù)部分相同的RTT測量數(shù)據(jù)包,并把產生的RTT測量數(shù)據(jù)包提供給通信單元131。
圖6所示服務器12的功能和/或圖7所示客戶機14的功能可由硬件或軟件(程序)實施。
下面結合圖8所示時間圖描述服務器12發(fā)送FEC塊的處理。
圖8中水平方向表示時間。在圖8中,從時間t1到時間t2的周期D1和從時間t3到時間t4的周期D3表示通信網(wǎng)絡13處于擁擠狀態(tài)的周期。從時間t2到時間t3的周期D2表示通信網(wǎng)絡13處于不擁擠狀態(tài)的周期。
當通信網(wǎng)絡13處于擁擠狀態(tài)時,服務器12發(fā)送包含F(xiàn)EC數(shù)據(jù)包組的FEC塊。當通信網(wǎng)絡13處于不擁擠狀態(tài)時,服務器12發(fā)送不包含F(xiàn)EC數(shù)據(jù)包組的FEC塊。進一步地,服務器12根據(jù)從客戶機14接收的FEC反饋數(shù)據(jù)包而改變包含在FEC數(shù)據(jù)包組中的FEC數(shù)據(jù)包的數(shù)量。也就是說,在時間t11,由于通信網(wǎng)絡13處于擁擠狀態(tài),因此,服務器12向客戶機14發(fā)送包含相同F(xiàn)EC塊ID的RTP數(shù)據(jù)包和FEC數(shù)據(jù)包,作為一個FEC塊。
更具體地,在圖8中,例如,服務器12把流數(shù)據(jù)裝入到FEC塊171-1內的四個RTP數(shù)據(jù)包(即RTP數(shù)據(jù)包組181-1)中,其中,流數(shù)據(jù)是用于重放一幀的視頻數(shù)據(jù)。服務器12還把用于重放該幀的流數(shù)據(jù)的冗余數(shù)據(jù)裝入到FEC塊171-1內的兩個FEC數(shù)據(jù)包(即FEC數(shù)據(jù)包組182-1)中。服務器12接著通過通信網(wǎng)絡13向客戶機14發(fā)送FEC塊171-1,其中,F(xiàn)EC塊171-1由包含用于重放該幀的流數(shù)據(jù)的RTP數(shù)據(jù)包組181-1和FEC數(shù)據(jù)包組182-1定義。
在時間t21,客戶機14通過通信網(wǎng)絡13接收從服務器12發(fā)送的FEC塊171-1。
相似地,服務器12把流數(shù)據(jù)裝入到FEC塊171-2內的四個RTP數(shù)據(jù)包(即RTP數(shù)據(jù)包組181-2)中,其中,流數(shù)據(jù)是用于重放下一幀的視頻數(shù)據(jù)。服務器12還把用于重放該幀的流數(shù)據(jù)的冗余數(shù)據(jù)裝入到FEC塊171-2內的兩個FEC數(shù)據(jù)包(即FEC數(shù)據(jù)包組182-2)中。服務器12接著通過通信網(wǎng)絡13向客戶機14發(fā)送FEC塊171-2,其中,F(xiàn)EC塊171-2由包含用于重放該幀的流數(shù)據(jù)的RTP數(shù)據(jù)包組1811-2和FEC數(shù)據(jù)包組182-2定義。
進一步地,服務器12把流數(shù)據(jù)裝入到FEC塊171-3內的四個RTP數(shù)據(jù)包(即RTP數(shù)據(jù)包組181-3)中,其中,流數(shù)據(jù)是用于重放下一幀的視頻數(shù)據(jù)。服務器12還把用于重放該幀的流數(shù)據(jù)的冗余數(shù)據(jù)裝入到FEC塊171-3內的兩個FEC數(shù)據(jù)包(即FEC數(shù)據(jù)包組182-3)中。服務器12接著通過通信網(wǎng)絡13向客戶機14發(fā)送FEC塊171-3,其中,F(xiàn)EC塊171-3由包含用于重放該幀的流數(shù)據(jù)的RTP數(shù)據(jù)包組181-3和FEC數(shù)據(jù)包組182-3定義。
由于通信網(wǎng)絡13的狀態(tài)在時間t2從擁擠狀態(tài)改變?yōu)椴粨頂D狀態(tài),因此,服務器12在時間t2之后通過通信網(wǎng)絡13向客戶機14發(fā)送不包含F(xiàn)EC數(shù)據(jù)包的FEC塊。
服務器12把流數(shù)據(jù)裝入到FEC塊171-4內的四個RTP數(shù)據(jù)包(即RTP塊181-4)中,其中,流數(shù)據(jù)是用于重放在FEC塊171-3的幀之后一幀的視頻數(shù)據(jù)。服務器12接著通過通信網(wǎng)絡13向客戶機14發(fā)送由RTP數(shù)據(jù)包組181-4定義的FEC塊171-4。服務器12進一步把流數(shù)據(jù)裝入到FEC塊171-5內的四個RTP數(shù)據(jù)包(即RTP塊181-5)中,其中,流數(shù)據(jù)是用于重放下一幀的視頻數(shù)據(jù)。服務器12接著通過通信網(wǎng)絡13向客戶機14發(fā)送由RTP數(shù)據(jù)包組181-5定義的FEC塊171-5。服務器12進一步把流數(shù)據(jù)裝入到FEC塊171-6內的四個RTP數(shù)據(jù)包(即RTP塊181-6)中,其中,流數(shù)據(jù)是用于重放后續(xù)幀的視頻數(shù)據(jù)。服務器12接著通過通信網(wǎng)絡13向客戶機14發(fā)送由RTP數(shù)據(jù)包組181-6定義的FEC塊171-6。
由于通信網(wǎng)絡13的狀態(tài)在時間t3從不擁擠狀態(tài)改變?yōu)閾頂D狀態(tài),因此,服務器12在時間t3之后通過通信網(wǎng)絡13向客戶機14一起發(fā)送冗余數(shù)據(jù)和流數(shù)據(jù)。
具體地,服務器12把用于重放在FEC塊171-6的幀之后一幀的視頻數(shù)據(jù)裝入到FEC塊171-7內的四個RTP數(shù)據(jù)包(即RTP數(shù)據(jù)包組181-7)中。服務器12還把用于重放該幀的流數(shù)據(jù)的冗余數(shù)據(jù)裝入到FEC塊171-7內的兩個FEC數(shù)據(jù)包(即FEC數(shù)據(jù)包組182-4)中。服務器12接著通過通信網(wǎng)絡13向客戶機14發(fā)送FEC塊171-7,其中,F(xiàn)EC塊171-7由包含用于重放該幀的流數(shù)據(jù)的RTP數(shù)據(jù)包組181-7和FEC數(shù)據(jù)包組182-4定義。
從時間t21到時間t23的周期T1、從時間t23到時間t24的周期T2、從時間t24到時間t25的周期T3以及從時間t25到時間t26的周期T4由計時器定義,并且每一個都是客戶機14執(zhí)行用于發(fā)送FEC反饋數(shù)據(jù)包的處理的時間周期。因而,客戶機14在計時器停止的每個時間t23、時間t24、時間t25和時間t26產生FEC反饋數(shù)據(jù)包,并且通過通信網(wǎng)絡13向服務器12發(fā)送所產生的FEC反饋數(shù)據(jù)包。
以后,F(xiàn)EC塊171-1至171-7簡稱為“FEC塊171”,除非它們需要互相區(qū)分開。相似地,RTP數(shù)據(jù)包組181-1至181-7以后簡稱為“RTP數(shù)據(jù)包組181”,除非它們需要互相區(qū)分開,并且FEC數(shù)據(jù)包組182-1至182-4簡稱為“FEC數(shù)據(jù)包組182”,除非它們需要互相區(qū)分開。
在通過通信網(wǎng)絡13接收從服務器12發(fā)送的FEC塊171時,客戶機14記錄FEC塊信息。FEC塊信息例如記錄到圖9所示的FEC塊信息表中。
在接收FEC塊171時,客戶機14把包含在FEC塊171中的信息記錄到FEC塊信息表中。記錄的信息包括FEC塊ID、原始數(shù)據(jù)包的數(shù)量、數(shù)據(jù)包總數(shù)、所接收數(shù)據(jù)包的數(shù)量以及FEC塊狀態(tài),其中,F(xiàn)EC塊ID是對FEC塊171唯一的標識號,原始數(shù)據(jù)包的數(shù)量表示包含在FEC塊171中的RTP數(shù)據(jù)包的數(shù)量,數(shù)據(jù)包總數(shù)為包含在FEC塊171中的RTP數(shù)據(jù)包的數(shù)量與FEC數(shù)據(jù)包的數(shù)量的總計,所接收數(shù)據(jù)包的數(shù)量表示正確接收的數(shù)據(jù)包的數(shù)量,F(xiàn)EC塊狀態(tài)表示所接收FEC數(shù)據(jù)包的數(shù)量對于丟失數(shù)據(jù)包恢復是不足、足夠或過多。
圖9示出FEC塊信息表的實例。
在圖9中所示的此實例中,對于具有FEC塊ID 1的FEC塊171,數(shù)據(jù)包總數(shù)為6,然而,所接收數(shù)據(jù)包的數(shù)量為4。因此丟失2個數(shù)據(jù)包。另外,雖然在具有FEC塊ID 1的FEC塊171中數(shù)據(jù)包總數(shù)為6,但其原始數(shù)據(jù)包的數(shù)量為4。這表示在具有FEC塊ID 1的FEC塊171中包含2個FEC數(shù)據(jù)包。
由于每一個FEC數(shù)據(jù)包可恢復一個RTP數(shù)據(jù)包,因此,使用在具有FEC塊ID 1的FEC塊171中包含的2個FEC數(shù)據(jù)包可恢復2個丟失的數(shù)據(jù)包。因而,在具有FEC塊ID 1的FEC塊171中包含的FEC數(shù)據(jù)包的數(shù)量既不多也不少,從而,F(xiàn)EC塊狀態(tài)設置為足夠狀態(tài)。
相似地,對于具有FEC塊ID 2的FEC塊171,在此FEC塊171中包含2個FEC數(shù)據(jù)包,并且丟失3個數(shù)據(jù)包。因而,在3個丟失的數(shù)據(jù)包中,有一個丟失的數(shù)據(jù)包不能被恢復。從而,由于缺少一個FEC數(shù)據(jù)包,因此,F(xiàn)EC塊狀態(tài)設置為不足狀態(tài)。
相似地,對于具有FEC塊ID 3的FEC塊171,在此FEC塊171中包含2個FEC數(shù)據(jù)包,并且沒有數(shù)據(jù)包丟失。因而,2個FEC數(shù)據(jù)包沒有使用并被放棄。從而,由于2個FEC數(shù)據(jù)包是過多的,因此,F(xiàn)EC塊狀態(tài)設置為過多狀態(tài)。
回到圖8所示時間圖,例如,在時間t22,客戶機14從FEC塊171-2檢測丟失3個數(shù)據(jù)包。接著,客戶機14把FEC塊171-2的FEC塊狀態(tài)設置為不足狀態(tài)。由于周期T1在時間t23結束(即計時器停止),因此例如,客戶機14根據(jù)從時間t21到時間t23接收的每個FEC塊171的FEC塊狀態(tài)而產生表示FEC數(shù)據(jù)包不足的FEC反饋數(shù)據(jù)包,并且,通過通信網(wǎng)絡13向服務器12發(fā)送產生的FEC反饋數(shù)據(jù)包。在后面描述FEC反饋數(shù)據(jù)包的細節(jié)。
在周期T2結束的時間t24和周期T3結束的時間t25中每個時間,客戶機14還都通過通信網(wǎng)絡13向服務器12發(fā)送FEC反饋數(shù)據(jù)包。
由于通信網(wǎng)絡13的狀態(tài)在時間t3從不擁擠狀態(tài)改變?yōu)閾頂D狀態(tài),因此,服務器12根據(jù)從時間t1到時間t3通過通信網(wǎng)絡13從客戶機14接收的反饋數(shù)據(jù)包,而改變包含在FEC塊171中的FEC數(shù)據(jù)包的數(shù)量。例如,在時間t12,服務器12通過通信網(wǎng)絡13向客戶機14發(fā)送包含3個FEC數(shù)據(jù)包的FEC塊171-7。
如上所述,根據(jù)通信網(wǎng)絡13的擁擠狀態(tài)和從客戶機14發(fā)送的FEC反饋數(shù)據(jù)包,服務器12改變包含在FEC塊171中的FEC數(shù)據(jù)包的數(shù)量,并且發(fā)送FEC塊171。
下面結合圖10所示流程圖描述執(zhí)行服務器程序的服務器12發(fā)送數(shù)據(jù)的處理。
首先,在步驟S51中,服務器12對發(fā)送處理所需的數(shù)據(jù)進行初始化。在步驟S51中,例如,編碼器81把內部計時器的值設置為零毫秒,并且,RTP數(shù)據(jù)包產生器83初始化時戳和序列號,并且把FEC塊ID的值設置為“1”。
在步驟S52中,基于內部計時器的值,編碼器81確定計時器是否停止。當計時器未停止時,過程返回到步驟S52,在此步驟中,重復確定處理,直到確定計時器停止。
當在步驟S52中確定計時器已經停止時,過程前進到步驟S52。
例如,當視頻數(shù)據(jù)中的幀數(shù)為每秒30時,在步驟S52中,編碼器81通過比較計時器值和預定值如33毫秒而確定計時器是否已經停止,因為計時器值隨著時間的流逝而增加。
在步驟S51中,例如,編碼器81設置計時器值為33毫秒,并且通過比較計時器值和零毫秒而確定計時器是否已經停止,因為計時器值隨著時間的流逝而減小。
在此情況下,與計時器值比較的值“零毫秒”或“33毫秒”是用于每秒30幀的實例,并且不用于限制本發(fā)明。
下面描述的與計時器有關的處理也同樣如此。
在步驟S53中,編碼器81捕捉從照相機11提供的視頻數(shù)據(jù),從而,視頻數(shù)據(jù)的量與一幀相對應。在步驟S53中,例如,編碼器81順序地獲得從照相機11提供的視頻數(shù)據(jù),并且在所獲得視頻數(shù)據(jù)中捕捉一幀視頻數(shù)據(jù)。
在步驟S54中,編碼器81對捕捉的視頻數(shù)據(jù)進行編碼。在步驟S54中,編碼器81可基于MPEG(運動圖象專家組)1、2、4、7或21方案、JPEG(聯(lián)合圖象專家組)方案、JPEG2000方案或運動JPEG方案而對所捕捉的視頻數(shù)據(jù)進行編碼。
在步驟S55中,編碼器81向緩沖器82提供編碼的視頻數(shù)據(jù),緩沖器82儲存編碼的視頻數(shù)據(jù)。
在步驟S56中,RTP數(shù)據(jù)包產生器83從緩沖器82獲得解碼的視頻數(shù)據(jù),并且產生包含所獲得視頻數(shù)據(jù)的RTP數(shù)據(jù)包。
圖11示出RTP數(shù)據(jù)包。RTP數(shù)據(jù)包的開始有2位版本信息,在圖11中版本信息用“V”代表。版本信息表示RTP數(shù)據(jù)包的版本。
在圖11中,在版本信息之后是用“P”代表的1位填充符。在填充符之后,在RTP數(shù)據(jù)包中設置1位擴展信息。在圖11中,擴展信息用“X”代表。當在RTP數(shù)據(jù)包中包括擴展頭部時,擴展信息設置為預定值。
在擴展信息之后,在RTP數(shù)據(jù)包中設置CSRC(貢獻源)計數(shù)。在圖11中,CSRC計數(shù)用“CC”代表。CSRC計數(shù)表示CSRC標識符的數(shù)量。
在CSRC計數(shù)之后是由簡檔定義的1位標記符信息。在圖11中,標記符信息用“m”代表。
在標記符信息之后是7位有效負載類型,其中,有效負載類型是用于定義RTP數(shù)據(jù)包格式的信息。在圖11中,有效負載類型用“PT”代表。RTP數(shù)據(jù)包具有有效負載類型33。
序列號為在有效負載類型之后的16位信息。序列號表示RTP數(shù)據(jù)包的重放順序,并且對每次發(fā)送都加1。
在序列號之后是32位時戳,時戳代表包含在RTP數(shù)據(jù)包中的流數(shù)據(jù)的第一個八位位組的采樣時間。接收方使用時戳來控制RTP數(shù)據(jù)包解壓縮過程中的處理時間,由此實現(xiàn)對實時視頻或音頻數(shù)據(jù)的重放控制。在屬于相同視頻幀的多個RTP數(shù)據(jù)包上增加公共時戳。
SSRC(同步源)標識符是設置在時戳之后的32位信息,并且代表包含在RTP數(shù)據(jù)包中的流數(shù)據(jù)的源。
在RTP數(shù)據(jù)包中,在SSRC標識符之后是FEC塊ID。FEC塊ID是用于標識FEC塊171的編號,F(xiàn)EC塊171是通過通信網(wǎng)絡13從服務器12向客戶機14發(fā)送的一組RTP數(shù)據(jù)包和FEC數(shù)據(jù)包。例如,在圖8中,屬于RTP數(shù)據(jù)包組181的RTP數(shù)據(jù)包被賦予相同的FEC塊ID。屬于一個FEC塊171中FEC數(shù)據(jù)包組182的FEC數(shù)據(jù)包包含與屬于FEC塊171中RTP數(shù)據(jù)包組181的RTP數(shù)據(jù)包的FEC塊ID相同的FEC塊ID。
在FEC塊ID之后,在RTP數(shù)據(jù)包中設置數(shù)據(jù)包總數(shù)。在圖11中,數(shù)據(jù)包總數(shù)用“N”代表并且表示包含在一個FEC塊171中的RTP數(shù)據(jù)包數(shù)量和FEC數(shù)據(jù)包數(shù)量的總計。
在RTP數(shù)據(jù)包中,在數(shù)據(jù)包總數(shù)之后是原始數(shù)據(jù)包數(shù)量。在圖11中,原始數(shù)據(jù)包的總數(shù)用“K”代表,并且表示包含在一個FEC塊171中的RTP數(shù)據(jù)包的數(shù)量。
在原始數(shù)據(jù)包數(shù)量之后是冗余數(shù)據(jù)包數(shù)量,在圖11中,冗余數(shù)據(jù)包數(shù)量用“R”代表。冗余數(shù)據(jù)包數(shù)量表示包含在一個FEC塊中的FEC數(shù)據(jù)包的數(shù)量。
為了調節(jié)數(shù)據(jù)量,在冗余數(shù)據(jù)包數(shù)量之后是填充符,在圖11中,填充符用“P”代表。在填充符之后,包含流數(shù)據(jù)。在圖11中,流數(shù)據(jù)表示為“原始數(shù)據(jù)”。
FEC數(shù)據(jù)包以與RTP數(shù)據(jù)包相同的方式配置。在此情況下,F(xiàn)EC數(shù)據(jù)包的有效負載類型例如為34。
回到圖10,在步驟S57中,RTP數(shù)據(jù)包產生器83向通信單元39提供所產生的RTP數(shù)據(jù)包,通信單元39又通過通信網(wǎng)絡13向客戶機14發(fā)送RTP數(shù)據(jù)包。
在步驟S58中,F(xiàn)EC數(shù)據(jù)包產生器84確定操作是否處于FEC發(fā)送模式。在步驟S58中,F(xiàn)EC數(shù)據(jù)包產生器84例如根據(jù)FEC發(fā)送模式存儲單元88中FEC發(fā)送模式標記的設置狀態(tài)而確定操作是否處于FEC發(fā)送模式。
當在步驟S58中確定操作處于FEC發(fā)送模式時,通信網(wǎng)絡13處于擁擠狀態(tài),因而,更有可能發(fā)生數(shù)據(jù)包丟失。因此,過程前進到步驟S59,以便向客戶機14發(fā)送FEC數(shù)據(jù)包。
在步驟S59中,F(xiàn)EC數(shù)據(jù)包產生器84基于從RTP數(shù)據(jù)包產生器83提供的RTP數(shù)據(jù)包中的數(shù)據(jù)而產生一定量的FEC數(shù)據(jù)包,其中,F(xiàn)EC數(shù)據(jù)包的數(shù)量由從FEC數(shù)據(jù)包計數(shù)保存單元89提供的FEC數(shù)據(jù)包計數(shù)指示。
在步驟S59中,例如,F(xiàn)EC數(shù)據(jù)包產生器84對包含在RTP數(shù)據(jù)包產生器83所提供的RTP數(shù)據(jù)包中的數(shù)據(jù)執(zhí)行“異或”操作,由此產生用于FEC數(shù)據(jù)包的數(shù)據(jù)。FEC數(shù)據(jù)包產生器84接著在產生的數(shù)據(jù)上增加預定的頭部,由此產生FEC數(shù)據(jù)包。
增加到FEC數(shù)據(jù)包上的頭部例如具有與圖11所示RTP數(shù)據(jù)包頭部相同的格式。RTP數(shù)據(jù)包和FEC數(shù)據(jù)包可通過規(guī)定FEC數(shù)據(jù)包頭部中的擴展信息為“1”而確定,其中,所述擴展信息在圖11中用“X”代表。進一步地,例如,F(xiàn)EC數(shù)據(jù)包的有效負載類型為34,并且在圖11中用“原始數(shù)據(jù)”表示的域包含用于糾錯的冗余數(shù)據(jù)。
對于FEC數(shù)據(jù)包產生器84所產生的FEC數(shù)據(jù)包的糾錯方案(用于冗余數(shù)據(jù)的方案)不局限于“異或”操作,并且可以使用另一方案。實例包括諸如Hamming編碼的線性編碼、循環(huán)編碼、諸如BCH(Bose-Chaudhuri-Hocquenghem)編碼或里德-索羅蒙編碼的算術編碼、或多數(shù)邏輯編碼。
在步驟S60中,F(xiàn)EC數(shù)據(jù)包產生器84向通信單元39提供產生的FEC數(shù)據(jù)包,通信單元39又通過通信網(wǎng)絡13向客戶機14發(fā)送FEC數(shù)據(jù)包。接著,過程前進到步驟S61。
更具體地,在步驟S57中,通信單元39臨時保存從RTP數(shù)據(jù)包產生器83提供的RTP數(shù)據(jù)包。接著,在步驟S60中,當從FEC數(shù)據(jù)包產生器84提供其所包含F(xiàn)EC塊ID與保存的RTP數(shù)據(jù)包中所包含F(xiàn)EC塊ID相同的一個或多個FEC數(shù)據(jù)包時,通信單元39通過通信網(wǎng)絡13向客戶機14發(fā)送通信單元39保存的RTP數(shù)據(jù)包和從FEC數(shù)據(jù)包產生器84提供的FEC數(shù)據(jù)包,作為一個FEC塊171。
例如,從圖8所示的時間t1到時間t2,服務器12通過通信網(wǎng)絡13向客戶機14一起發(fā)送RTP數(shù)據(jù)包和FEC數(shù)據(jù)包,因為通信網(wǎng)絡13處于擁擠狀態(tài)(即,操作處于FEC數(shù)據(jù)包發(fā)送模式)。
另一方面,當在步驟S58中確定操作不處于FEC發(fā)送模式時,通信網(wǎng)絡13處于不擁擠狀態(tài),因而,不太可能發(fā)生數(shù)據(jù)包丟失。因此,過程跳過步驟S59和S60的處理,以便取消向客戶機14發(fā)送FEC數(shù)據(jù)包,并且過程前進到步驟S61。
當在步驟S58中確定操作不處于FEC發(fā)送模式時,取消FEC數(shù)據(jù)包的發(fā)送,因而,通信單元39在步驟S57中通過通信網(wǎng)絡13向客戶機14發(fā)送從RTP數(shù)據(jù)包產生器83提供的RTP數(shù)據(jù)包,作為一個FEC塊171。
例如,從圖8所示的時間t2到時間t3,服務器12通過通信網(wǎng)絡13向客戶機14發(fā)送RTP數(shù)據(jù)包組181,作為一個FEC塊171,因為通信網(wǎng)絡13處于不擁擠狀態(tài)。換句話說,服務器12取消向客戶機14發(fā)送FEC數(shù)據(jù)包,因為操作不處于FEC數(shù)據(jù)包發(fā)送模式。
在步驟S61中,RTP數(shù)據(jù)包產生器83更新FEC塊ID。在步驟S61中,例如,RTP數(shù)據(jù)包產生器83增加包含在所述數(shù)據(jù)包中的FEC塊ID。
在步驟S62中,RTP數(shù)據(jù)包產生器83更新時戳。
FEC數(shù)據(jù)包產生器84可根據(jù)包含在RTP數(shù)據(jù)包產生器83所提供RTP頭部信息中的FEC塊ID和時戳而產生一個或多個FEC數(shù)據(jù)包??商鎿Q地,F(xiàn)EC數(shù)據(jù)包產生器84本身可保存和更新RTP時戳和FEC塊ID。
在步驟S63中,解碼器81設置內部計時器。接著,過程返回到步驟S52,并且重復上述的數(shù)據(jù)發(fā)送。
在步驟S63中,解碼器81例如把計時器值設置為零毫秒。
如上所述,服務器12在每個FEC塊171上增加FEC塊ID,并且,當通信網(wǎng)絡13處于擁擠狀態(tài)時,服務器12通過通信網(wǎng)絡13向客戶機14發(fā)送RTP數(shù)據(jù)包和FEC數(shù)據(jù)包。另一方面,當通信網(wǎng)絡13處于不擁擠狀態(tài)時,服務器12通過通信網(wǎng)絡13向客戶機14發(fā)送RTP數(shù)據(jù)包,并且取消FEC數(shù)據(jù)包的發(fā)送。
下面結合圖12所示流程圖描述執(zhí)行服務器程序的服務器12發(fā)送FEC數(shù)據(jù)包的處理。
首先,在步驟S81中,服務器12對用于控制FEC數(shù)據(jù)包發(fā)送的處理所需的數(shù)據(jù)進行初始化。在步驟S81中,RTT測量單元85把內部計時器的值例如設置為零毫秒。
在步驟S82中,F(xiàn)EC發(fā)送控制器86確定是否接收FEC反饋數(shù)據(jù)包。當確定接收FEC反饋數(shù)據(jù)包時,過程前進到步驟S83。在步驟S83中,F(xiàn)EC發(fā)送控制器86執(zhí)行處理,以更新保存在FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)保存單元87中的FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)。在結束更新處理之后,過程返回到步驟S82,并且重復用于控制FEC數(shù)據(jù)包發(fā)送的處理。
在后面描述用于更新FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)的處理的細節(jié)。
另一方面,當在步驟S82中確定未接收FEC反饋數(shù)據(jù)包時,過程前進到步驟S84。在步驟S84中,F(xiàn)EC數(shù)據(jù)包產生器84確定RTT測量單元85是否已經接收RTT測量數(shù)據(jù)包。
當在步驟S84中確定接收RTT測量數(shù)據(jù)包時,過程前進到步驟S85。在步驟S85中,RTT測量單元85根據(jù)接收的RTT測量數(shù)據(jù)包而計算延遲時間(RTT)。進一步地,根據(jù)計算的延遲時間,RTT測量單元85的遠程相關RTT計算單元103計算遠程相關RTT,并且,RTT測量單元85的短程相關RTT計算單元104計算短程相關RTT。接著,RTT測量單元85向FEC發(fā)送控制器86的擁擠/不擁擠確定單元105提供計算的遠程相關RTT和短程相關RTT。
在步驟S85中,RTT測量單元85例如根據(jù)公式(1)計算延遲時間延遲時間=(RTT測量數(shù)據(jù)包的接收時間)-(RTT測量數(shù)據(jù)包的發(fā)送時間) (1)當RTT測量單元85接收RTT測量數(shù)據(jù)包時,RTT測量數(shù)據(jù)包的接收時間由內部RTC(實時時鐘)提供。RTT測量數(shù)據(jù)包的發(fā)送時間包含在所接收的RTT測量數(shù)據(jù)包中。
在步驟S85中,RTT測量單元85的遠程相關RTT計算單元103例如根據(jù)公式(2)計算遠程相關RTT遠程相關RTT=0.9×(前一計算的遠程相關RTT)+0.1×(延遲時間) (2)
前一計算的遠程相關RTT是在上一次步驟S85的處理中計算的遠程相關RTT。延遲時間是由RTT測量單元85計算的延遲時間。
在步驟S85中,RTT測量單元85的短程相關RTT計算單元104例如根據(jù)公式(3)計算短程相關RTT短程相關RTT=0.5×(前一計算的短程相關RTT)+0.5×(延遲時間) (3)前一計算的短程相關RTT是在上一次步驟S85的處理中計算的短程相關RTT。延遲時間是由RTT測量單元85計算的延遲時間。
例如,在步驟S85的處理中,RTT測量單元85的遠程相關RTT計算單元103和短程相關RTT計算單元104分別儲存所計算的遠程相關RTT和短程相關RTT。隨后,在下一次步驟S85的處理中,遠程相關RTT計算單元103和短程相關RTT計算單元104使用儲存的遠程相關RTT和短程相關RTT分別計算下一遠程相關RTT和短程相關RTT。
遠程相關RTT可以是在5秒鐘內的平均延遲時間。短程相關RTT可以是在1秒鐘內的平均延遲時間。
在步驟S86中,F(xiàn)EC發(fā)送控制器86的擁擠/不擁擠確定單元105比較從RTT測量單元85提供的遠程相關RTT和短程相關RTT。
在步驟S86中,例如,擁擠/不擁擠確定單元105使用從RTT測量單元85提供的遠程相關RTT和短程相關RTT,通過執(zhí)行公式(4)表達的計算而比較遠程相關RTT和短程相關RTT(短程相關RTT)/(遠程相關RTT)>1 (4)在步驟S87中,擁擠/不擁擠確定單元105根據(jù)公式(4)的計算結果(在步驟S86中)而確定通信網(wǎng)絡13是否處于擁擠狀態(tài)。
在步驟S87中,例如,當從RTT測量單元85提供的遠程相關RTT和短程相關RTT滿足公式(4)時,擁擠/不擁擠確定單元105通信網(wǎng)絡13處于擁擠狀態(tài)。另一方面,當從RTT測量單元85提供的遠程相關RTT和短程相關RTT不滿足公式(4)時,擁擠/不擁擠確定單元105通信網(wǎng)絡13不處于擁擠狀態(tài)。
在本文中,擁擠狀態(tài)指通信網(wǎng)絡13中增加的通信量影響數(shù)據(jù)包發(fā)送的狀態(tài)。例如,在一些情況下,在擁擠狀態(tài)下不能正確地發(fā)送數(shù)據(jù)包。通信網(wǎng)絡13的狀態(tài),即是否處于擁擠狀態(tài),可例如由通信網(wǎng)絡13中節(jié)點的緩沖隊列長度指示。例如,當在節(jié)點的緩沖隊列長度較長時,可確定通信網(wǎng)絡13擁擠,因為有大量的數(shù)據(jù)包等待發(fā)送。相反,當在節(jié)點的隊列長度較短時,可確定通信網(wǎng)絡13不擁擠,因為只有少量的數(shù)據(jù)包等待發(fā)送。
可為緩沖隊列長度設置預定的閾值。在此情況下,當緩沖隊列長度比閾值更大時,可確定通信網(wǎng)絡13處于擁擠狀態(tài),并且,當緩沖隊列長度比閾值更小時,可確定通信網(wǎng)絡13處于不擁擠狀態(tài)。
在通信網(wǎng)絡13中的節(jié)點上的隊列長度可通過例如使用SNMP(簡單網(wǎng)絡管理協(xié)議)來觀察。
本專利申請人已經觀察節(jié)點上的隊列長度、遠程相關RTT和短程相關RTT。結果證實節(jié)點隊列長度、遠程相關RTT和短程相關RTT有一定的關系。
圖13為示出節(jié)點隊列長度、遠程相關RTT和短程相關RTT的圖形。
圖13中的水平軸表示時間。在圖13中,實線表示遠程相關RTT,虛線表示短程相關RTT,并且,點劃線表示節(jié)點隊列長度。
從圖13可以理解當短程相關RTT比遠程相關RTT更大的狀態(tài)改變?yōu)檫h程相關RTT比短程相關RTT更大的狀態(tài)時,節(jié)點隊列長度急劇減小。例如示出在圖13的時間t52,當短程相關RTT比遠程相關RTT更大的狀態(tài)改變?yōu)檫h程相關RTT比短程相關RTT更大的狀態(tài)時,節(jié)點隊列長度急劇減小。
相反,可以理解,當短程相關RTT比遠程相關RTT更小的狀態(tài)改變?yōu)槎坛滔嚓PRTT比遠程相關RTT更大的狀態(tài)時,節(jié)點隊列長度增加。例如示出在圖13的時間t53,當短程相關RTT比遠程相關RTT更小的狀態(tài)改變?yōu)槎坛滔嚓PRTT比遠程相關RTT更大的狀態(tài)時,節(jié)點隊列長度增加。
相應地,根據(jù)短程相關RTT是否比遠程相關RTT更大,可確定通信網(wǎng)絡13是否處于擁擠狀態(tài)。換句話說,當遠程相關RTT和短程相關RTT滿足公式(4)時,可以確定通信網(wǎng)絡13處于擁擠狀態(tài),并且,當它們不滿足公式(4)時,可以確定通信網(wǎng)絡13處于不擁擠狀態(tài)。
例如,在圖13中,在從時間t51到時間t52的周期中,可確定通信網(wǎng)絡13處于擁擠狀態(tài),并且,在從t52到t53的周期中,可確定通信網(wǎng)絡13處于不擁擠狀態(tài)。
回到圖12所示的流程圖,在步驟S87中,當確定通信網(wǎng)絡13處于擁擠狀態(tài)時,過程前進到步驟S88。在步驟S88中,擁擠/不擁擠確定單元105把通信網(wǎng)絡13擁擠的狀態(tài)儲存為擁擠/不擁擠狀態(tài),并且把表示通信網(wǎng)絡13擁擠狀態(tài)的信號提供給FEC發(fā)送控制器86。
在步驟S87中的確定處理不必只局限于使用遠程相關RTT和短程相關RTT。例如,用于觀察通信網(wǎng)絡13通信量狀態(tài)、抖動、或丟數(shù)據(jù)包率的SNMP可用于確定通信網(wǎng)絡13是否處于擁擠狀態(tài)。
在步驟S89中,當從擁擠/不擁擠確定單元105接收表示通信網(wǎng)絡13擁擠狀態(tài)的信號時,F(xiàn)EC發(fā)送控制器86設置儲存在FEC發(fā)送模式存儲單元88中的FEC發(fā)送模式標記。
FEC發(fā)送模式在此指發(fā)送FEC數(shù)據(jù)包的模式。也就是說,當在步驟S87中確定通信網(wǎng)絡13處于擁擠狀態(tài)時,F(xiàn)EC發(fā)送控制器86設置儲存在FEC發(fā)送模式存儲單元88中的FEC發(fā)送模式標記。作為響應,操作進入FEC發(fā)送模式,在此模式中,在發(fā)送FEC塊171的過程中發(fā)送FEC數(shù)據(jù)包。
在步驟S90中,F(xiàn)EC發(fā)送控制器86確定通信網(wǎng)絡13的狀態(tài)是否已從不擁擠狀態(tài)改變?yōu)閾頂D狀態(tài)。
在步驟S90中,例如,F(xiàn)EC發(fā)送控制器86根據(jù)儲存在擁擠/不擁擠確定單元105中的擁擠/不擁擠狀態(tài),而確定通信網(wǎng)絡13的狀態(tài)是否已從不擁擠狀態(tài)改變?yōu)閾頂D狀態(tài)。
在步驟S90中,例如,F(xiàn)EC發(fā)送控制器86可根據(jù)儲存在FEC發(fā)送模式存儲單元88中的FEC發(fā)送模式標記,而確定通信網(wǎng)絡13的狀態(tài)是否已從不擁擠狀態(tài)改變?yōu)閾頂D狀態(tài)。
當在步驟S90中確定所述狀態(tài)從不擁擠狀態(tài)改變?yōu)閾頂D狀態(tài)時,過程前進到步驟S91。在步驟S91中,F(xiàn)EC發(fā)送控制器86讀取在步驟S83處理中更新且由FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)保存單元87保存的FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)。
FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)保存單元87例如保存以下三種狀態(tài),即“增加”狀態(tài)、“保持”狀態(tài)和“減少”狀態(tài),中的任一種,作為FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)。也就是說,增加狀態(tài)表示服務器12增加在將要通過通信網(wǎng)絡13發(fā)送給客戶機14的FEC塊171中包含的FEC數(shù)據(jù)包的數(shù)量。保持狀態(tài)表示服務器12保持(即不改變)在將要通過通信網(wǎng)絡13發(fā)送給客戶機14的FEC塊171中包含的FEC數(shù)據(jù)包的數(shù)量。減少狀態(tài)表示服務器12減少在將要通過通信網(wǎng)絡13發(fā)送給客戶機14的FEC塊171中包含的FEC數(shù)據(jù)包的數(shù)量。
每次通過通信網(wǎng)絡13從客戶機14接收FEC反饋數(shù)據(jù)包時,都更新保存在FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)保存單元87中的FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)。
在步驟S92中,F(xiàn)EC發(fā)送控制器86根據(jù)所讀取的FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)而執(zhí)行用于改變FEC數(shù)據(jù)包數(shù)量的處理。在后面詳細描述用于改變FEC數(shù)據(jù)包數(shù)量的處理。
FEC數(shù)據(jù)包的數(shù)量在此指包含在將要通過通信網(wǎng)絡13從服務器12發(fā)送給客戶機14的一個FEC塊171中的FEC數(shù)據(jù)包的數(shù)量。例如,在圖8中,在從時間t1到時間t2的周期中,從服務器12發(fā)送的FEC數(shù)據(jù)包的數(shù)量為2。
在步驟S93中,F(xiàn)EC發(fā)送控制器86對保存在FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)保存單元87中的FEC數(shù)據(jù)包數(shù)量狀態(tài)進行初始化。接著,過程返回到步驟S82,并且重復用于控制FEC數(shù)據(jù)包發(fā)送的處理。
在步驟S93中,F(xiàn)EC發(fā)送控制器86例如通過設置保存在FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)保存單元87中的FEC數(shù)據(jù)包增加/減少狀態(tài)為保持狀態(tài),而對FEC數(shù)據(jù)包數(shù)量狀態(tài)進行初始化。
另一方面,當在步驟S90中確定所述狀態(tài)未從不擁擠狀態(tài)改變?yōu)閾頂D狀態(tài)時,過程跳過步驟S91-S93中的處理,并且返回到步驟S82,從步驟S82重復用于控制FEC數(shù)據(jù)包發(fā)送的處理。
另外,當在步驟S87中確定通信網(wǎng)絡13不處于擁擠狀態(tài)時,過程前進到步驟S94。在步驟S94中,擁擠/不擁擠確定單元105儲存通信網(wǎng)絡13不擁擠的狀態(tài),作為擁擠/不擁擠狀態(tài),并且向FEC發(fā)送控制器86提供表示通信網(wǎng)絡13不擁擠狀態(tài)的信號。
在步驟S95中,在從擁擠/不擁擠確定單元105接收通信網(wǎng)絡13不擁擠狀態(tài)的信號時,F(xiàn)EC發(fā)送控制器86重置儲存在FEC發(fā)送模式存儲單元88中的FEC發(fā)送模式標記。由于重置FEC發(fā)送模式存儲單元88中的FEC發(fā)送模式標記,操作停止FEC發(fā)送模式,因而,在發(fā)送FEC塊171的過程中不發(fā)送FEC數(shù)據(jù)包。
在FEC發(fā)送控制器86重置FEC發(fā)送模式標記之后,過程返回到步驟S82,并且重復用于控制FEC數(shù)據(jù)包發(fā)送的處理。
當在步驟S84中確定RTT測量單元85未接收RTT測量數(shù)據(jù)包時,過程前進到步驟S96。在步驟S96中,RTT測量單元85確定內部計時器是否已經停止。
在步驟S96中,RTT測量單元85例如通過比較計時器值和預定值如10毫秒而確定計時器是否已經停止。
當在步驟S96中確定計時器未停止時,過程返回到步驟S82,并且重復用于控制FEC數(shù)據(jù)包發(fā)送的處理。
另一方面,當在步驟S96中確定計時器已經停止時,過程前進到步驟S97。在步驟S97中,RTT測量單元85產生RTT測量數(shù)據(jù)包,并且通過通信網(wǎng)絡13向客戶機14發(fā)送所產生的RTT測量數(shù)據(jù)包。
在步驟S97中,例如,RTT測量單元85從內部RTC(實時時鐘)獲得當前時間,以產生如圖14所示的RTT測量數(shù)據(jù)包。
圖14示出RTT測量數(shù)據(jù)包。由于版本信息、填充符和SSRC與圖11所示RTP數(shù)據(jù)包中的類似,因此,未給出其描述。
在RTT測量數(shù)據(jù)包中,在填充符之后是5位子類型。
RTT測量數(shù)據(jù)包具有有效負載類型205。在有效負載類型之后是16位消息長度,消息長度表示RTT測量數(shù)據(jù)包的長度(大小)。
在32位SSRC之后是32位名稱。所述名稱例如包括用于處理RTT測量數(shù)據(jù)包的應用程序的名稱。
在RTT測量數(shù)據(jù)包中,在名稱之后是發(fā)送時間,發(fā)送時間表示服務器12向客戶機14發(fā)送RTT測量數(shù)據(jù)包的時間。發(fā)送時間例如包括RTT測量單元85在步驟S97中從內部RTC獲得的時間。
回到圖12所示流程圖,在步驟S98中,RTT測量單元85設置內部計時器。接著,過程返回到步驟S82,并且重復上述處理。
在步驟S98中,RTT測量單元85把內部計時器的值例如設置為零毫秒。
如上所述,服務器12執(zhí)行用于控制FEC數(shù)據(jù)包發(fā)送的處理。
下面,結合圖15所示流程圖詳細描述在圖12所示步驟S83中的處理,即用于更新FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)的處理。
在步驟S111中,F(xiàn)EC發(fā)送控制器86確定保存在FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)保存單元87中的FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)是否表示增加狀態(tài)。
當在步驟S111中確定FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)表示增加狀態(tài)時,F(xiàn)EC發(fā)送控制器86不更新保存在FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)保存單元87中的FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)的設置,并且結束用于更新FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)的處理。
另一方面,當在步驟S111中確定FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)不表示增加狀態(tài)時,過程前進到步驟S112。在步驟S112中,F(xiàn)EC發(fā)送控制器86確定是否接收表示FEC數(shù)據(jù)包不足的FEC反饋數(shù)據(jù)包。
如上所述,通過通信網(wǎng)絡13從客戶機14發(fā)送FEC反饋數(shù)據(jù)包。例如,在圖8中,客戶機14分別在時間t23、時間t24、時間t25和時間t26通過通信網(wǎng)絡13向服務器12發(fā)送FEC反饋數(shù)據(jù)包。
FEC反饋數(shù)據(jù)包包含通知FEC狀態(tài),通知FEC狀態(tài)表示客戶機14接收的FEC數(shù)據(jù)包數(shù)量對于客戶機14恢復丟失的數(shù)據(jù)包而言是不足、足夠或過多。
當在步驟S112中確定接收表示FEC數(shù)據(jù)包不足的FEC反饋數(shù)據(jù)包時,過程前進到步驟S113。在此情況下,由于在客戶機14中FEC數(shù)據(jù)包的數(shù)量不足,因此,在步驟S113中,F(xiàn)EC發(fā)送控制器86把保存在FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)保存單元87中的FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)設置為增加狀態(tài)。
另一方面,當在步驟S112中確定未接收表示FEC數(shù)據(jù)包不足的FEC反饋數(shù)據(jù)包時,過程前進到步驟S114。在步驟S114中,F(xiàn)EC發(fā)送控制器86確定是否已經接收表示FEC數(shù)據(jù)包過多的FEC反饋數(shù)據(jù)包。
當在步驟S114中確定接收表示FEC數(shù)據(jù)包過多的FEC反饋數(shù)據(jù)包時,過程前進到步驟S115。在此情況下,由于客戶機14接收的FEC數(shù)據(jù)包數(shù)量過多,因此,F(xiàn)EC發(fā)送控制器86把FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)設置為減少狀態(tài),并且結束處理。
另外,當在步驟S114中確定未接收表示FEC數(shù)據(jù)包過多的FEC反饋數(shù)據(jù)包時,F(xiàn)EC發(fā)送控制器86不更新FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài),并且結束處理。
也就是說,在FEC發(fā)送控制器86在圖12所示步驟S93的處理中初始化FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)之后直到接收RTT測量數(shù)據(jù)包為止的周期中,當即使接收一次表示FEC數(shù)據(jù)包不足的FEC反饋數(shù)據(jù)包時,F(xiàn)EC發(fā)送控制器86也把FEC數(shù)據(jù)包數(shù)量狀態(tài)設置為增加狀態(tài)。另一方面,在所述周期中,當只接收表示FEC數(shù)據(jù)包足夠狀態(tài)的FEC反饋數(shù)據(jù)包時,F(xiàn)EC發(fā)送控制器86把FEC數(shù)據(jù)包數(shù)量狀態(tài)設置為保持狀態(tài)。另外,當接收表示FEC數(shù)據(jù)包數(shù)量足夠的FEC反饋數(shù)據(jù)包和表示FEC數(shù)據(jù)包過多的FEC反饋數(shù)據(jù)包時,F(xiàn)EC發(fā)送控制器86把FEC數(shù)據(jù)包數(shù)量狀態(tài)設置為減少狀態(tài)。
以此方式,每次從客戶機14接收FEC反饋數(shù)據(jù)包時,F(xiàn)EC發(fā)送控制器86都更新FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)。
下面,結合圖16所示流程圖詳細描述在圖12所示步驟S92中的處理,即用于改變FEC數(shù)據(jù)包數(shù)量的處理。
在步驟S131中,F(xiàn)EC發(fā)送控制器86確定儲存在FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)保存單元87中的FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)是否表示保持狀態(tài)。當確定FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)表示保持狀態(tài)時,F(xiàn)EC發(fā)送控制器86不改變FEC數(shù)據(jù)包的數(shù)量,并且結束處理。
另一方面,當在步驟S131中確定儲存在FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)保存單元87中的FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)不表示保持狀態(tài)時,過程前進到步驟S132。在步驟S132中,F(xiàn)EC發(fā)送控制器86確定儲存在FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)保存單元87中的FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)是否表示增加狀態(tài)。
當在步驟S132中確定FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)表示增加狀態(tài)時,過程前進到步驟S133。在步驟S133中,F(xiàn)EC發(fā)送控制器86確定保存在FEC數(shù)據(jù)包計數(shù)保存單元89中的FEC數(shù)據(jù)包計數(shù)是否為其上限。
當在步驟S133中確定FEC數(shù)據(jù)包計數(shù)不是其上限時,過程前進到步驟S134。在步驟S134中,F(xiàn)EC發(fā)送控制器86增加FEC數(shù)據(jù)包的數(shù)量。
當在步驟S133中確定保存在FEC數(shù)據(jù)包計數(shù)保存單元89中的FEC數(shù)據(jù)包計數(shù)為其上限時,就不再增加數(shù)據(jù)包的數(shù)量,從而,F(xiàn)EC發(fā)送控制器86不改變FEC數(shù)據(jù)包的數(shù)量,并且結束處理。
當在步驟S132中確定儲存在FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)保存單元87中的FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)不表示增加狀態(tài)時,過程前進到步驟S135。在步驟S135中,F(xiàn)EC發(fā)送控制器86確定儲存在FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)保存單元87中的FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)是否表示減少狀態(tài)。
當在步驟S135中確定FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)表示減少狀態(tài)時,過程前進到步驟S136。在步驟S136中,F(xiàn)EC發(fā)送控制器86確定保存在FEC數(shù)據(jù)包計數(shù)保存單元89中的FEC數(shù)據(jù)包計數(shù)是否為零。
當在步驟S136中確定FEC數(shù)據(jù)包計數(shù)不為零時,過程前進到步驟S137。在步驟S137中,F(xiàn)EC發(fā)送控制器86減少FEC數(shù)據(jù)包的數(shù)量,并且結束處理。
另一方面,當在步驟S136中確定FEC數(shù)據(jù)包計數(shù)為零時,F(xiàn)EC發(fā)送控制器86不改變FEC數(shù)據(jù)包的數(shù)量,并且結束處理,因為不能再減少FEC數(shù)據(jù)包的數(shù)量。
當在步驟S135中確定儲存在FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)保存單元87中的FEC數(shù)據(jù)包數(shù)量增加/減少狀態(tài)不表示減少狀態(tài)時,F(xiàn)EC發(fā)送控制器86不改變FEC數(shù)據(jù)包的數(shù)量,并且結束處理。
如上所述,F(xiàn)EC發(fā)送控制器86改變保存在FEC數(shù)據(jù)包計數(shù)保存單元89中的FEC數(shù)據(jù)包數(shù)量。
下面結合圖17所示流程圖描述執(zhí)行客戶程序的客戶機14所執(zhí)行的解碼處理。
首先,在步驟S151中,解碼器134對解碼處理所需的數(shù)據(jù)進行初始化。在步驟S151中,例如,解碼器134進入待機模式,待機500毫秒的時間段,并且一直等到緩沖器133儲存預定數(shù)量的視頻數(shù)據(jù)為止。
例如,當視頻數(shù)據(jù)中的幀數(shù)為每秒30時,在步驟S151中,解碼器134通過設置內部計時器的值為零毫秒并且對計時器值和預定值如33毫秒進行比較,而確定計時器是否已經停止。
也就是說,在步驟S152中,解碼器134根據(jù)計時器值而確定計時器是否已經停止,并且,當確定計時器已經停止時,過程前進到步驟S153。在步驟S153中,解碼器134從緩沖器133獲得用于一幀的數(shù)據(jù)。在步驟S154中,解碼器134對在步驟S153的處理中獲得的數(shù)據(jù)進行解碼,并且輸出得到的視頻數(shù)據(jù)。
在步驟S155中,解碼器134設置內部計時器。接著,過程返回到步驟S151,并且重復上述的解碼處理。在步驟S155中,解碼器134把計時器值例如設置為零毫秒。
在另一方面,當在步驟S152中確定計時器未停止時,過程前進到步驟S156。在步驟S156中,RTP處理器132確定是否已經接收RTP數(shù)據(jù)包。
當在步驟S156中確定未接收RTP數(shù)據(jù)包時,過程返回到步驟S152,并且重復解碼處理。
當在步驟S156中確定已經接收RTP數(shù)據(jù)包時,過程前進到步驟S157。在步驟S157中,通過檢查接收的RTP數(shù)據(jù)包,RTP處理器132確定是否已經發(fā)生數(shù)據(jù)包丟失。
當在步驟S157中確定已經發(fā)生數(shù)據(jù)包丟失時,過程前進到步驟S158,在此步驟中,F(xiàn)EC處理器135恢復丟失的一個或多個數(shù)據(jù)包。
在步驟S158中,例如,當從RTP處理器132提供其所包含F(xiàn)EC塊ID與丟失數(shù)據(jù)包的FEC數(shù)據(jù)包ID相同的FEC數(shù)據(jù)包時,F(xiàn)EC處理器135根據(jù)提供的FEC數(shù)據(jù)包而恢復丟失的數(shù)據(jù)包,并且向RTP處理器132提供恢復的RTP數(shù)據(jù)包。
在步驟S158中,當不提供FEC數(shù)據(jù)包或者所提供FEC數(shù)據(jù)包的數(shù)量相對所丟失數(shù)據(jù)包的數(shù)量不足時,F(xiàn)EC處理器135不能恢復與FEC數(shù)據(jù)包的缺少數(shù)量相應的一個或多個丟失數(shù)據(jù)包,因而不恢復丟失的數(shù)據(jù)包。
當在步驟S157中確定未發(fā)生數(shù)據(jù)包丟失時,過程跳過步驟S158中的處理,并且前進到步驟S159,因為不需要RTP數(shù)據(jù)包恢復。
在步驟S159中,RTP處理器132向緩沖器133提供接收的RTP數(shù)據(jù)包和恢復的RTP數(shù)據(jù)包。接著,過程返回到步驟S152,并且重復上述處理。
如上所述,解碼器134執(zhí)行解碼處理。
下面,結合圖18所示的流程圖描述執(zhí)行客戶程序的客戶機14所執(zhí)行的用于發(fā)送FEC反饋數(shù)據(jù)包的處理。
在步驟S171中,客戶機14對用于發(fā)送FEC反饋數(shù)據(jù)包的處理所需的數(shù)據(jù)進行初始化。在步驟S171中,例如,F(xiàn)EC處理器135初始化FEC塊信息,并且把內部計時器的值設置為零毫秒,其中,F(xiàn)EC塊信息初始化在下面描述。
在步驟S172中,RTP處理器132確定是否已經接收數(shù)據(jù)包。
當在步驟S172中確定已經接收數(shù)據(jù)包時,過程前進到步驟S1 73。在步驟S173中,RTP處理器132確定是否已經改變所接收數(shù)據(jù)包的FEC塊ID。當在步驟S173中確定已經改變所接收數(shù)據(jù)包的FEC塊ID時,過程前進到步驟S174。在步驟S174中,F(xiàn)EC處理器135執(zhí)行用于更新接收-結束FEC塊171的FEC塊狀態(tài)的處理。
接收-結束FEC塊171在此指包含以下FEC塊ID的一個FEC塊171,其中,所述FEC塊ID在已經在步驟S173中確定改變的FEC塊ID的緊前面?;谠趶姆掌?2通過通信網(wǎng)絡13發(fā)送的一個FEC塊171中包含的數(shù)據(jù)包的數(shù)量和正確接收的數(shù)據(jù)包的數(shù)量而執(zhí)行FEC塊狀態(tài)更新處理。因而,當包含在FEC塊171中的所有數(shù)據(jù)包的接收結束時,可執(zhí)行所述處理。
因而,在步驟S173中,例如,基于所接收數(shù)據(jù)包的FEC塊ID是否改變,而確定包含在FEC塊171中的所有數(shù)據(jù)包的接收是否結束。
在后面描述步驟S174中FEC塊狀態(tài)更新處理的細節(jié)。
在步驟S175中,RTP處理器132在FEC塊信息保存單元136中記錄包含在所接收數(shù)據(jù)包中的原始數(shù)據(jù)包數(shù)量、數(shù)據(jù)包總數(shù)和FEC塊ID,作為FEC塊信息。
例如,原始數(shù)據(jù)包的數(shù)量與圖11所示RTP數(shù)據(jù)包中的“K”相對應,并且,數(shù)據(jù)包總數(shù)與圖11所示RTP數(shù)據(jù)包中的“N”相對應。FEC塊信息還例如記錄到圖9所示FEC塊信息表中。
參照圖11,RTP數(shù)據(jù)包的原始數(shù)據(jù)包數(shù)量(用“K”代表)與FEC塊ID相關聯(lián),并且儲存為用于圖9所示FEC塊信息的原始數(shù)據(jù)包數(shù)量。圖11所示RTP數(shù)據(jù)包的FEC塊ID儲存為用于圖9所示FEC塊信息的FEC塊ID。數(shù)據(jù)包總數(shù)(用圖11中的“N”表示)與FEC塊ID相關聯(lián),并且儲存為圖9所示FEC塊信息的數(shù)據(jù)包總數(shù)。
在步驟S173中確定其FEC塊ID已經改變的數(shù)據(jù)包經過步驟S175中的處理。也就是說,在步驟S174中處理的FEC塊ID和在步驟S175中處理的FEC塊的FEC塊ID互不相同。
在步驟S176中,RTP處理器132把所接收數(shù)據(jù)包的數(shù)量設置為零,其中,所述數(shù)量由在FEC塊信息保存單元136中記錄的FEC塊信息表指示。
另外,當在步驟S173中確定未改變FEC塊ID時,過程跳過步驟S174-步驟S176的處理,并且前進到步驟S177。
在步驟S177中,RTP處理器132增加接收數(shù)據(jù)包的數(shù)量,其中,所述數(shù)量由在FEC塊信息保存單元136中記錄的FEC塊信息表指示。接著,過程返回到步驟S172,并且重復FEC反饋數(shù)據(jù)包發(fā)送處理。
當在步驟S172中確定未接收數(shù)據(jù)包時,過程前進到步驟S178。在步驟S178中,F(xiàn)EC處理器135確定內部計時器是否已經停止。
在步驟S178中,F(xiàn)EC處理器135可通過對內部計時器的值與預定值如100毫秒進行比較而確定計時器是否已經停止。
當在步驟S178中確定計時器未停止時,過程返回到步驟S172,并且重復FEC反饋數(shù)據(jù)包發(fā)送處理。
另一方面,當在步驟S178中確定計時器已經停止時,過程前進到步驟S179。在步驟S179中,F(xiàn)EC處理器135執(zhí)行用于對將要發(fā)送給服務器12的通知FEC狀態(tài)進行設置的處理。
在步驟S179中,F(xiàn)EC處理器135基于記錄在FEC塊信息表中的所有FEC塊狀態(tài)的狀態(tài),而執(zhí)行用于設置通知FEC狀態(tài)的處理,其中,F(xiàn)EC塊信息表由FEC塊信息保存單元136保存。在后面描述用于設置通知FEC狀態(tài)的處理的細節(jié)。
在步驟S180中,F(xiàn)EC處理器135的FEC反饋數(shù)據(jù)包產生器153基于在步驟S179中設置的通知FEC狀態(tài)而產生FEC反饋數(shù)據(jù)包。
圖19示出FEC反饋數(shù)據(jù)包。由于版本信息、填充符、以及子類型、消息長度、SSRC和名稱與圖14所示RTT測量數(shù)據(jù)包中的類似,因此不給出其描述。
FEC反饋數(shù)據(jù)包具有有效負載類型204。
在FEC反饋數(shù)據(jù)包中,向接收方發(fā)送在名稱之后的通知FEC狀態(tài)。在圖18所示步驟S179的處理中,F(xiàn)EC反饋數(shù)據(jù)包產生器153執(zhí)行設置,從而,通知FEC狀態(tài)例如表示足夠狀態(tài)、過多狀態(tài)和不足狀態(tài)中的一種。
回到圖18,在步驟S181中,F(xiàn)EC反饋數(shù)據(jù)包產生器153向通信單元131提供產生的FEC反饋數(shù)據(jù)包。在接收從FEC反饋數(shù)據(jù)包產生器153提供的FEC反饋數(shù)據(jù)包時,通信單元131通過通信網(wǎng)絡13向服務器12發(fā)送FEC反饋數(shù)據(jù)包。
在步驟S182中,F(xiàn)EC處理器135更新內部計時器。接著,過程返回到步驟S172,并且重復上述處理。
在步驟S182中,F(xiàn)EC處理器135把內部計時器的值例如設置為零毫秒。
如上所述,F(xiàn)EC處理器135以預定的時間間隔通過通信網(wǎng)絡13向服務器12發(fā)送FEC反饋數(shù)據(jù)包。與步驟S178中計時器值比較的值“100毫秒”僅僅是與圖8所示時間T1、T2、T3和T4相應的周期的一個實例,并且不用于限制本發(fā)明。
下面,結合圖20所示流程圖詳細描述圖18所示步驟S174中的處理,即,用于更新接收-結束FEC塊171的FEC塊狀態(tài)的處理。
在步驟S201中,RTP處理器132把接收-結束FEC塊171中接收數(shù)據(jù)包的數(shù)量儲存(記錄)到FEC塊信息表中,其中,F(xiàn)EC塊信息表由FEC塊信息保存單元136保存。
在步驟S202中,F(xiàn)EC處理器135根據(jù)FEC塊信息保存單元136所保存的FEC塊信息表,而確定接收-結束FEC塊171中接收數(shù)據(jù)包的數(shù)量是否等于原始數(shù)據(jù)包的數(shù)量。
當在步驟S202中確定接收數(shù)據(jù)包的數(shù)量等于原始數(shù)據(jù)包的數(shù)量時,過程前進到步驟S203,因為用于恢復一個或多個RTP數(shù)據(jù)包的FEC數(shù)據(jù)包的數(shù)量既不少也不多。在步驟S203中,F(xiàn)EC處理器135把FEC塊信息保存單元136保存的FEC塊信息表中的FEC塊狀態(tài)設置為足夠狀態(tài),并接著結束處理。
當在步驟S202中確定接收數(shù)據(jù)包的數(shù)量不等于原始數(shù)據(jù)包的數(shù)量時,過程前進到步驟S204。在步驟S204中,F(xiàn)EC處理器135確定接收數(shù)據(jù)包的數(shù)量是否比原始數(shù)據(jù)包的數(shù)量更大。
當在步驟S204中確定接收數(shù)據(jù)包的數(shù)量比原始數(shù)據(jù)包的數(shù)量更大時,過程前進到步驟S205,因為用于恢復一個或多個RTP數(shù)據(jù)包的FEC數(shù)據(jù)包的數(shù)量過多。在步驟S205中,F(xiàn)EC處理器135把FEC塊信息保存單元136保存的FEC塊信息表中的FEC塊狀態(tài)設置為過多狀態(tài),并接著結束處理。
當在步驟S204中確定接收數(shù)據(jù)包的數(shù)量不比原始數(shù)據(jù)包的數(shù)量更大時,過程前進到步驟S206。在步驟S206中,F(xiàn)EC處理器135確定接收數(shù)據(jù)包的數(shù)量是否比原始數(shù)據(jù)包的數(shù)量更小。
當在步驟S206中確定接收數(shù)據(jù)包的數(shù)量比原始數(shù)據(jù)包的數(shù)量更小時,過程前進到步驟S207,因為用于恢復一個或多個RTP數(shù)據(jù)包的FEC數(shù)據(jù)包的數(shù)量不足。在步驟S207中,F(xiàn)EC處理器135把FEC塊信息保存單元136保存的FEC塊信息表中的FEC塊狀態(tài)設置為不足狀態(tài),并接著結束處理。
另一方面,當在步驟S206中確定接收數(shù)據(jù)包的數(shù)量不比原始數(shù)據(jù)包的數(shù)量更小時,過程前進到步驟S208。在步驟S208中,F(xiàn)EC處理器135把FEC塊信息保存單元136保存的FEC塊信息表中的FEC塊狀態(tài)設置為足夠狀態(tài)。
如上所述,每次FEC塊171的接收完成時,F(xiàn)EC處理器135都更新FEC塊信息保存單元136所保存的FEC塊狀態(tài)。
另外,可不需步驟S206中的處理,就可把FEC塊狀態(tài)設置為不足狀態(tài)。
下面,結合圖21所示的流程圖詳細描述圖18所示步驟S179中的處理,即,用于設置通知FEC塊狀態(tài)的處理。
在步驟S221中,F(xiàn)EC處理器135確定在用于FEC塊信息表所記錄各個FEC塊ID的FEC狀態(tài)中,是否存在處于不足狀態(tài)的FEC塊171,其中,F(xiàn)EC塊信息表由FEC塊信息保存單元136保存。
當在步驟S221中確定存在處于不足狀態(tài)的FEC塊171時,過程前進到步驟S222。在步驟S222中,F(xiàn)EC處理器135把通知FEC狀態(tài)保存單元137保存的通知FEC狀態(tài)設置為不足狀態(tài)。在步驟S223中,F(xiàn)EC處理器135初始化FEC塊信息,并結束處理。
在步驟S223中,F(xiàn)EC處理器135例如通過清除記錄在FEC塊信息表中的所有FEC塊信息而初始化FEC塊信息。
當在步驟S221中確定在用于FEC塊信息表所記錄各個FEC塊ID的FEC狀態(tài)中,不存在處于不足狀態(tài)的FEC塊171時,過程前進到步驟S224,其中,F(xiàn)EC塊信息表由FEC塊信息保存單元136保存。在步驟S224中,F(xiàn)EC處理器135確定在用于各個FEC塊ID的FEC狀態(tài)中是否存在處于過多狀態(tài)的FEC塊171。
當在步驟S224中確定存在處于過多狀態(tài)的FEC塊171時,過程前進到步驟S225。在步驟S225中,F(xiàn)EC處理器135把通知FEC狀態(tài)保存單元137保存的通知FEC狀態(tài)設置為過多狀態(tài),并且過程前進到步驟S223。
當在步驟S224中確定不存在處于過多狀態(tài)的FEC塊171時,過程前進到步驟S226。在步驟S226中,F(xiàn)EC處理器135把通知FEC狀態(tài)保存單元137保存的通知FEC狀態(tài)設置為足夠狀態(tài),并且過程前進到步驟S223。
也就是說,當在FEC塊信息表所記錄的FEC塊狀態(tài)中,即使存在一個處于不足狀態(tài)的FEC塊171時,F(xiàn)EC處理器135也把通知FEC狀態(tài)設置為不足狀態(tài),其中,F(xiàn)EC塊信息表由FEC塊信息保存單元136保存。進一步地,當所有FEC塊171處于足夠狀態(tài)時,F(xiàn)EC處理器135把通知FEC狀態(tài)設置為足夠狀態(tài)。當不存在處于不足狀態(tài)的FEC塊171并且存在處于過多狀態(tài)的FEC塊171時,F(xiàn)EC處理器135把通知FEC狀態(tài)設置為過多狀態(tài)。
如上所述,F(xiàn)EC處理器135以預定時間間隔,基于FEC塊信息保存單元136保存的每個FEC塊ID的FEC塊狀態(tài),而設置將要發(fā)送給服務器12的通知FEC狀態(tài)。
下面,結合圖22描述用于返回RTT測量數(shù)據(jù)包的處理。在步驟S241中,當通信單元131接收數(shù)據(jù)包時,RTT測量單元138基于從通信單元131提供的數(shù)據(jù)包而確定是否已經接收RTT測量數(shù)據(jù)包。當確定未接收RTT測量數(shù)據(jù)包時,就重復步驟S241中的確定處理,直到接收RTT測量數(shù)據(jù)包為止。
當在步驟S241中確定接收RTT測量數(shù)據(jù)包時,過程前進到步驟S242。在步驟S242中,RTT測量單元138立即產生其數(shù)據(jù)部分與所接收RTT測量數(shù)據(jù)包的數(shù)據(jù)部分類似的RTT測量數(shù)據(jù)包,并且把產生的RTT測量數(shù)據(jù)包提供給通信單元131。接著,RTT測量單元138使通信單元131立即通過通信網(wǎng)絡13向服務器12發(fā)送RTT測量數(shù)據(jù)包。接著,過程返回到步驟S241,并且重復上述處理。
如上所述,在接收RTT測量數(shù)據(jù)包時,客戶機14立即向服務器12返回RTT測量數(shù)據(jù)包。
如上所述,基于從客戶機14發(fā)送的FEC反饋數(shù)據(jù)包,服務器12改變將要發(fā)送給客戶機14的FEC數(shù)據(jù)包的數(shù)量。進一步地,當通信網(wǎng)絡13處于擁擠狀態(tài)時,服務器12向客戶機14發(fā)送FEC數(shù)據(jù)包,并且,當通信網(wǎng)絡13不處于擁擠狀態(tài)時,服務器12取消向客戶機14發(fā)送FEC數(shù)據(jù)包。此布置可實現(xiàn)有效的數(shù)據(jù)發(fā)送。
上述處理序列可由硬件和/或軟件執(zhí)行。當由軟件執(zhí)行處理序列時,用于實施所述軟件的程序通過存儲介質例如安裝到并入專用硬件中的計算機上,或者安裝到通用個人計算機上,其中,通用個人計算機通過安裝各種程序而可執(zhí)行各種功能。
用于記錄將要提供給用戶的程序的存儲介質可以是從計算機單獨分配的封裝介質。如圖5所示,封裝介質的實例包括磁盤51(包括軟盤)、光盤52(包括CD-ROM(緊湊盤-只讀存儲器)和DVD(數(shù)字多用途盤)、磁光盤53(包括MDTM(小型盤))、以及半導體存儲器54。用于記錄所述程序的存儲介質還可以是ROM(只讀存儲器)32或硬盤(包括在記錄單元38內),所述介質預先安裝在計算機中并提供給用戶。
如果需要,用于執(zhí)行所述處理序列的程序也可通過接口,如路由器和/或調制解調器,或者通過有線或無線通信介質,如局域網(wǎng)、因特網(wǎng)和/或數(shù)字衛(wèi)星廣播網(wǎng)絡,安裝在計算機上。
這里,用于描述儲存在此記錄介質中的程序的步驟可以或不必按與上述順序一致的時間序列進行處理。因而,可以同時或單獨處理這些步驟。
在本文中,系統(tǒng)指由多個設備構成的整體。
權利要求
1.一種用于通過通信網(wǎng)絡發(fā)送包含流數(shù)據(jù)的發(fā)送數(shù)據(jù)包的發(fā)送設備,所述發(fā)送設備包括用于確定通信網(wǎng)絡是否處于擁擠狀態(tài)的確定部件;用于產生糾錯數(shù)據(jù)包的產生部件,所述糾錯數(shù)據(jù)包包含用于對流數(shù)據(jù)進行糾錯的糾錯數(shù)據(jù);以及控制部件,當確定結果從不擁擠狀態(tài)改變?yōu)閾頂D狀態(tài)時,所述控制部件控制由產生部件執(zhí)行的糾錯數(shù)據(jù)包產生,以便改變糾錯數(shù)據(jù)包的數(shù)量。
2.如權利要求1所述的發(fā)送設備,其中,當確定通信網(wǎng)絡處于擁擠狀態(tài)時,控制部件執(zhí)行控制,以使產生部件產生預定數(shù)量的糾錯數(shù)據(jù)包,并且,當確定通信網(wǎng)絡不處于擁擠狀態(tài)時,控制部件執(zhí)行控制,以便取消產生部件執(zhí)行的糾錯數(shù)據(jù)包產生。
3.如權利要求1所述的發(fā)送設備,其中,當確定結果從不擁擠狀態(tài)改變?yōu)閾頂D狀態(tài)時,控制部件根據(jù)緊前面的一擁擠狀態(tài)中的發(fā)送數(shù)據(jù)包的接收狀態(tài)而執(zhí)行控制,以便改變糾錯數(shù)據(jù)包的數(shù)量。
4.如權利要求1所述的發(fā)送設備,其中,至少一個發(fā)送數(shù)據(jù)包定義在預定時間周期內的一個糾錯單元,并且,當根據(jù)預定時間周期內一個或多個糾錯單元的接收狀態(tài)而確定在預定時間周期內一個或多個糾錯單元中的糾錯數(shù)據(jù)包的數(shù)量不足時,控制部件執(zhí)行控制,以便增加糾錯數(shù)據(jù)包的數(shù)量。
5.如權利要求1所述的發(fā)送設備,其中,確定部件根據(jù)短程相關延遲時間和遠程相關延遲時間而確定通信網(wǎng)絡是否處于擁擠狀態(tài),短程相關延遲時間取決于在從第一時間到當前時間的周期內向接收方發(fā)送所述發(fā)送數(shù)據(jù)包所需的延遲時間,而遠程相關延遲時間取決于在從第一時間到比第一時間更早的第二時間的周期內向接收方發(fā)送所述發(fā)送數(shù)據(jù)包所需的延遲時間。
6.一種用于通過通信網(wǎng)絡發(fā)送包含流數(shù)據(jù)的發(fā)送數(shù)據(jù)包的發(fā)送方法,所述方法包括用于確定通信網(wǎng)絡是否處于擁擠狀態(tài)的確定步驟;用于產生糾錯數(shù)據(jù)包的產生步驟,所述糾錯數(shù)據(jù)包包含用于對流數(shù)據(jù)進行糾錯的糾錯數(shù)據(jù);以及控制步驟,當確定結果從不擁擠狀態(tài)改變?yōu)閾頂D狀態(tài)時,所述控制步驟控制由產生部件執(zhí)行的糾錯數(shù)據(jù)包產生,以便改變糾錯數(shù)據(jù)包的數(shù)量。
7.一種記錄計算機可讀程序的存儲介質,所述程序用于通過通信網(wǎng)絡發(fā)送包含流數(shù)據(jù)的發(fā)送數(shù)據(jù)包的發(fā)送處理,所述程序包括用于確定通信網(wǎng)絡是否處于擁擠狀態(tài)的確定步驟;用于產生糾錯數(shù)據(jù)包的產生步驟,所述糾錯數(shù)據(jù)包包含用于對流數(shù)據(jù)進行糾錯的糾錯數(shù)據(jù);以及控制步驟,當確定結果從不擁擠狀態(tài)改變?yōu)閾頂D狀態(tài)時,所述控制步驟控制由產生部件執(zhí)行的糾錯數(shù)據(jù)包產生,以便改變糾錯數(shù)據(jù)包的數(shù)量。
8.一種用于使計算機執(zhí)行發(fā)送處理的程序,所述發(fā)送處理用于通過通信網(wǎng)絡發(fā)送包含流數(shù)據(jù)的發(fā)送數(shù)據(jù)包,所述程序包括用于確定通信網(wǎng)絡是否處于擁擠狀態(tài)的確定步驟;用于產生糾錯數(shù)據(jù)包的產生步驟,所述糾錯數(shù)據(jù)包包含用于對流數(shù)據(jù)進行糾錯的糾錯數(shù)據(jù);以及控制步驟,當確定結果從不擁擠狀態(tài)改變?yōu)閾頂D狀態(tài)時,所述控制步驟控制由產生部件執(zhí)行的糾錯數(shù)據(jù)包產生,以便改變糾錯數(shù)據(jù)包的數(shù)量。
9.一種用于通過通信網(wǎng)絡接收包含流數(shù)據(jù)的發(fā)送數(shù)據(jù)包的接收設備,所述接收設備包括用于接收糾錯數(shù)據(jù)包的接收控制部件,所述糾錯數(shù)據(jù)包包含用于對流數(shù)據(jù)進行糾錯的糾錯數(shù)據(jù);以及確定部件,所述確定部件用于確定所接收糾錯數(shù)據(jù)包的數(shù)量對流數(shù)據(jù)糾錯是否足夠。
10.如權利要求9所述的接收設備,其中,確定部件確定所接收糾錯數(shù)據(jù)包的數(shù)量對流數(shù)據(jù)糾錯而言是不足、足夠或過多。
11.如權利要求9所述的接收設備,其中,對于由至少一個發(fā)送數(shù)據(jù)包定義的每個糾錯單元,確定部件確定所接收糾錯數(shù)據(jù)包的數(shù)量對流數(shù)據(jù)糾錯是不足、足夠或過多,并且,接收設備進一步包括設置部件,所述設置部件用于執(zhí)行設置,從而,當根據(jù)在預定時間周期內對一個或多個糾錯單元的確定結果而確定在預定時間周期內一個或多個糾錯單元中的糾錯數(shù)據(jù)包的數(shù)量不足時,要發(fā)送給接收方的通知表示糾錯數(shù)據(jù)包不足。
12.如權利要求9所述的接收設備,進一步包括產生部件,所述產生部件基于確定結果而產生包含通知的反饋數(shù)據(jù)包;以及發(fā)送控制部件,所述發(fā)送控制部件用于控制向接收方發(fā)送產生部件所產生的反饋數(shù)據(jù)包。
13.一種用于通過通信網(wǎng)絡接收包含流數(shù)據(jù)的發(fā)送數(shù)據(jù)包的接收方法,所述方法包括用于接收糾錯數(shù)據(jù)包的接收控制步驟,所述糾錯數(shù)據(jù)包包含用于對流數(shù)據(jù)進行糾錯的糾錯數(shù)據(jù);以及確定步驟,所述確定步驟用于確定在接收控制步驟中接收的糾錯數(shù)據(jù)包的數(shù)量對流數(shù)據(jù)糾錯是否足夠。
14.一種記錄計算機可讀程序的存儲介質,所述程序用于通過通信網(wǎng)絡接收包含流數(shù)據(jù)的發(fā)送數(shù)據(jù)包的接收處理,所述程序包括用于接收糾錯數(shù)據(jù)包的接收控制步驟,所述糾錯數(shù)據(jù)包包含用于對流數(shù)據(jù)進行糾錯的糾錯數(shù)據(jù);以及確定步驟,所述確定步驟用于確定在接收控制步驟中接收的糾錯數(shù)據(jù)包的數(shù)量對流數(shù)據(jù)糾錯是否足夠。
15.一種用于使計算機執(zhí)行接收處理的程序,所述接收處理用于通過通信網(wǎng)絡接收包含流數(shù)據(jù)的發(fā)送數(shù)據(jù)包,所述程序包括用于接收糾錯數(shù)據(jù)包的接收控制步驟,所述糾錯數(shù)據(jù)包包含用于對流數(shù)據(jù)進行糾錯的糾錯數(shù)據(jù);以及確定步驟,所述確定步驟用于確定在接收控制步驟中接收的糾錯數(shù)據(jù)包的數(shù)量對流數(shù)據(jù)糾錯是否足夠。
全文摘要
本發(fā)明涉及發(fā)送設備和方法、接收設備和方法、存儲介質以及程序,其中擁擠/不擁擠確定單元確定通信網(wǎng)絡是否處于擁擠狀態(tài)。FEC(向前糾錯)數(shù)據(jù)包產生器產生糾錯數(shù)據(jù)包,所述糾錯數(shù)據(jù)包包含用于對包含在發(fā)送數(shù)據(jù)包內的流數(shù)據(jù)進行糾錯的糾錯數(shù)據(jù)。當確定結果從不擁擠狀態(tài)改變?yōu)閾頂D狀態(tài)時,F(xiàn)EC發(fā)送控制器控制糾錯數(shù)據(jù)包產生,以便改變糾錯數(shù)據(jù)包的數(shù)量。本發(fā)明可應用于遠程電話會議系統(tǒng)。
文檔編號H04L1/16GK1638321SQ20041010027
公開日2005年7月13日 申請日期2004年12月10日 優(yōu)先權日2003年12月10日
發(fā)明者山根健治 申請人:索尼株式會社
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
榆社县| 增城市| 靖安县| 津南区| 崇文区| 灌南县| 通辽市| 翁牛特旗| 伊春市| 莱芜市| 朝阳县| 莒南县| 南华县| 积石山| 保定市| 青阳县| 海兴县| 成都市| 犍为县| 靖西县| 肇庆市| 鄯善县| 新竹市| 汪清县| 田阳县| 北海市| 红原县| 开江县| 铜川市| 新邵县| 嵊泗县| 新平| 河津市| 道孚县| 巍山| 绥中县| 湘潭市| 眉山市| 博野县| 个旧市| 丹阳市|