專利名稱:用于ip電話的動態等待時間管理的制作方法
技術領域:
本發明涉及互聯網上的話音(VoIP)電話的等待時間,更具體地,涉及用于減小VoIP電話的等待時間的管理技術方法。
背景技術:
把聲音變換成電信號、發送它們、然后把它們變換回聲音的科學被稱為電話術(即電話的科學)。該術語經常被使用來指執行傳統上由電話設備執行的功能的計算機硬件和軟件。
互聯網電話通常是指通過互聯網、而不是通過公共交換電話網(PSTN)的通信業務-話音、傳真和/或話音消息傳送應用。在發起互聯網電話呼叫時涉及到的基本步驟是模擬話音信號轉換成數字格式,以及信號壓縮/變換到互聯網協議(IP)分組,以便在互聯網上發送;該過程在接收端被顛倒過來,正如圖1的現有技術所顯示的。
實時傳輸協議(RTP)作為用于互聯網上的話音和視頻的輸送協議已得到廣泛的接受。它提供諸如時間印記、序列編號和有用負載識別那樣的業務。它也包含控制部分-實時控制協議(RTCP),實時控制協議除其他功能以外,尤其被使用于松散的會話控制、QoS報告和媒體同步。
RTP本身不保證實時的數據傳遞,但它確實為發送和接收應用提供機制以便支持流式數據。典型地,RTP運行在用戶數據報協議(UDP)之上,盡管該技術規范的通用性足以支持其他的輸送協議。RTP用時間印記給由發送器傳送的所有的信息加標簽。通過檢查時間印記,接收器能夠按原來的次序排列分組,以及同步實時流和/或補償在音頻或視頻數據中的抖動。
RTCP被設計成將一個關于網絡質量的狀態給予應用。通過這個信息,可最佳化影響數據傳輸的參量,例如抖動緩沖器尺寸。RTP頭標把16字節加到總的額外開銷上,以及加上UDP的附加的8字節頭標信息作為前綴。IP頭標(它是20字節大小)被加上作為前綴以形成數據報,因此,需要將20字節的音頻或視頻作為64字節數據報發送。數據報被規定為數據塊、分段、大塊(chunk)、數據分組或音頻、視頻或音頻/視頻的分組。
在RTP頭標的那些不需要的比特內是32比特的時間印記。這個時間印記特別不需要,因為聲音分組是順序的,以及由于它也變換成特定數目的聲音樣本,所以有可能精確地計算兩次輸入的時間間隔應當是多少(以及沒有抖動時的時間間隔將是多少)。在某些實施方案中,時間印記被允許直接與樣本計數進行相關,以及如果它被這樣使用,則這個數值可能完全是冗余的,因為如果分組載送固定的有用負載,則該時間印記可以直接從分組的序號進行計算。
等待時間是在從發送器到接收器運送數據報時的延時,它影響對話的步調。人們可以在等待時間有引人注意的影響之前容忍約250毫秒(ms)的等待時間。
為了在數字網上以其本身的模擬形式支持話音,模擬信號在被生成后的某個時間必須被編碼(或變換)成數字格式,以便進入WAN、LAN、互聯網或通信網。在接收端,數字信號必須被譯碼(即,重新變換)回模擬格式,以便人耳能聽懂,因此時序是關鍵的。網絡必須能夠精確地每125ms接受、交換、輸送和傳遞每個話音字節。這意味著,等待時間(即,延時)必須是最小的以及抖動(即,延時的變率)必須實際上是零。
實時話音對話對于延時是敏感的。一旦單向延時超過1秒的四分之一(250毫秒),對話中的各方就變得相當難于判斷一個人何時結束講話。這增加各方同時講話的概率。
話音呼叫從它的發起地的PBX經過在該位置的網關、LAN和路由器、通過IP網絡,被路由到連接到其目的地的PBX的電話。有幾個區域,其中輸送話音的數據報會被延時。當模擬話音對話通過PBX被路由到話音網關時,由網關使用的話音編碼算法加上一定的等待時間。實際的延時量是基于所使用的話音編碼器的類型。一旦小的話音樣本被編碼,它就必須被封裝在數據報內以便傳輸到遠方的網關。封裝過程包括加上適用的UDP和IP頭標,以形成數據報和從網關經過LAN到路由器的數據報流。
來自這些活動的總的延時代表了在發起地的程序間的時間和在目的地的程序間的延時。
一旦數據報到達IP網絡,它就通過一個或多個路由器被路由到網絡出口點。這個路由也加上可變的延時。可變延時的原因包括在從進入點到外出點的路徑上的路由器的數目、每個路由器的處理能力以及提供給每個路由器的業務量負荷。當輸送話音的數據報流過本地網絡時發生這些延時,以及這些延時也對在數據報流過廣域IP網時該數據報遇到的延時做出貢獻。
然而,RTCP(實時控制協議)在一個流中只發送比較少的分組(大多數是RTP分組),它規定在RTP的時間印記與實時時鐘印記之間的周期相關性。這允許計算實際的等待時間等等,只要在發送器和接收器處的實時時鐘是同步的。實時時鐘的這種同步在RTP技術規范中是通過被稱為網絡時間協議(NTP)的單獨協議來考慮的。替換地,單向等待時間被確定為某些信息的往返行程時間的一半。盡管如此,這些方式都未能有效地確定單向等待時間,因為在兩個網絡節點之間,等待時間可以是非常不對稱的。
由于不需要RTP信息來有效地減小在系統中的等待時間,所以不必在實際上知道等待時間是多少來最有效地使得等待時間被最佳化。以毫秒計或者以跳或英里計的、到端點的路徑的長度與等待時間的最小化的目的是無關的。所必需的是根據完全通過觀察抖動緩沖器的長度而得到的統計特性,來使得在接收端處的抖動緩沖器的長度最小。抖動緩沖器的長度在聲音的每個數據塊已準備好和準備插入到抖動緩沖器時被觀察,這考慮了對該等待時間的所有的貢獻者,包括在接收端處聲音的解壓縮和格式化。
所需要的是一種不依賴于實時協議的、用于減小等待時間的方法。
還需要的是用于減小發送數據分組的額外開銷花費的方法。
再需要的是對于數據塊在消費設備中的偏置進行校正的方法。
另外需要的是消除在最小化該系統的實際等待時間中的時鐘偏差和差別的影響的方法。
發明內容
本發明是在考慮到以上的環境下作出的,以及作為本發明的一個方面,本發明具有用于動態地減小通信網上的等待時間的方法。
本發明的另一個方面是用于動態地減小通信網上的等待時間的系統。
本發明的再一個方面的特征在于用于動態地減小通信網上的等待時間的系統。
本發明的再一個方面的特征在于用于動態地減小通信網上的等待時間的軟件產品。
本發明的再一個方面是能夠動態地減小從通信網接收的數據塊的等待時間的音頻和視頻消費設備。
本發明的另一個方面的特征在于用于確定在音頻/視頻消費設備中的偏置的方法。
在后面的說明中將部分地闡述本發明的另外的方面和優點,以及從本說明中將部分地明白它們,或可以通過本發明的實踐學習它們。本發明的方面和優點將藉助于在所附的權利要求中具體地指出的單元和組合而被實現和得到。
為了得到這些和其他優點以及按照本發明的目的,正如具體化的和廣泛地描述的,本發明按照一個方面的特征在于,用于動態地減小通信網上的等待時間的方法,該方法包括確定下一個數據塊的處理的完成以及確定該下一個數據塊在消費設備的隊列中剩余的樣本數目。該方法還包括確定在消費設備的隊列中剩余的樣本數目的變率以及根據變率確定在消費設備的隊列中剩余的樣本數目是否可以被減小,以及如果可以的話則減小該隊列。
本發明的另一個方面的特征在于,用于動態地減小通信網上的等待時間的系統,該系統包括用于確定下一個數據塊的處理的完成的裝置以及用于確定該下一個數據塊在消費設備的隊列中剩余的樣本數目的裝置。該系統還包括用于確定在消費設備的隊列中剩余的樣本數目的變率的裝置以及用于根據該變率而確定在消費設備的隊列中剩余的樣本數目是否可以被減小以及如果可以的話則減小該隊列的裝置。
本發明的再一個方面的特征在于,用于動態地減小通信網上的等待時間的系統,該系統包括識別數據塊何時準備好要加到消費設備的隊列中以及輪詢該消費設備且計算自從先前輪詢消費設備以來由該消費設備消費的樣本數目。該系統還包括計算由消費設備消費的樣本數目的變率以及根據該變率確定在消費設備的隊列中剩余的樣本數目是否可以被減小以及如果可以的話則減小該隊列。
本發明的又一個方面的特征在于,用于動態地減小通信網上的等待時間的軟件產品,駐留在計算機可讀媒體上的該軟件產品能夠指令處理器來執行指令,以確定下一個數據塊的處理的完成以及確定該下一個數據塊在消費設備的隊列中剩余的樣本數目。該軟件產品還指令處理器來確定在消費設備的隊列中剩余的樣本數目的變率;以及根據該變率來確定在消費設備的隊列中剩余的樣本數目是否可以被減小以及如果可以的話則減小該隊列。
能夠動態地減小從通信網接收的數據塊的等待時間的音頻和視頻消費設備,該設備包括處理器,其中該處理器包括存儲器;以及與處理器通信和由處理器控制的外設。該設備能夠進行發送、接收和消費數據塊中的至少一項。該設備還包括軟件產品,其中該軟件產品能夠指令該處理器執行指令以(a)確定下一個數據塊的處理的完成;(b)確定下一個數據塊在所述消費設備的隊列中剩余的樣本數目;(c)確定在所述消費設備的隊列中剩余的樣本數目的變率;以及(d)根據該變率確定在所述消費設備的隊列中剩余的樣本數目是否可被減小。
本發明的另一個方面的特征在于,用于確定在音頻/視頻消費設備中的偏置的方法,該方法包括對消費設備輪詢在多個時間間隔之間消費的樣本的數目;以及把消費的樣本數目與根據消費設備設置的消費速率計算的、應當已經在多個時間間隔之間消費的樣本數目進行比較。
等待時間在傳統上一直是電信領域中要克服的困難的問題。等待時間對于網絡系統和其他寬帶技術(諸如通過IP的話音(VoIP),其中達到接近實時的結果是非常重要的)具有有害的影響。本發明提供對于動態地管理IP電話的等待時間的解決方案,它克服以上列舉的、現有技術解決方案的缺點。
應當看到,上述的總的說明和以下的詳細說明僅僅是示例性的和是說明性的,以及對于本發明不是限制性的,正如所要求的。
在本說明書中引用的、并構成本說明書的一部分的附圖顯示本發明的幾個實施例,以及連同本說明書一起,用來解釋本發明的原理。
圖1顯示IP電話傳輸系統的現有技術系統;圖2是顯示用于支持有線和無線IP電話的一般的物理環境的數據方框圖;圖3是顯示按照本發明的一個方面的偏置因子決定的流程圖;圖4是按照本發明的、用于初始化聲音外出隊列的處理流程的數據方框圖的表示;圖5是按照本發明的、用于重置聲音外出隊列的處理流程的數據方框圖的表示;圖6是顯示按照本發明的一個方面的數據塊部置決定的流程圖;圖7是顯示按照本發明的、處理數據的進入數據塊的流程圖;以及圖8是按照本發明的、用于調節統計歷史的處理流程的數據方框圖的表示。
具體實施例方式
現在詳細參照本發明的實施例,它們的例子被顯示在附圖上。只要可能,相同的附圖標記就用來在所有的圖上指相同的或類似的部分(單元)。
按照本發明,本發明的特征在于,用于動態地減小通信網上的等待時間的方法,該方法包括確定下一個數據塊的處理的完成以及確定該下一個數據塊在消費設備的隊列中剩余的樣本數目。該方法還包括確定在消費設備的隊列中剩余的樣本數目的變率以及根據該變率確定在消費設備的隊列中剩余的樣本數目是否可以被減小,以及如果可以的話則減小隊列。
本發明的另一個方面的特征在于,用于動態地減小通信網上的等待時間的系統,該系統包括用于確定下一個數據塊的處理的完成的裝置以及用于確定該下一個數據塊在消費設備的隊列中剩余的樣本數目的裝置。該系統還包括用于確定在消費設備的隊列中剩余的樣本數目的變率的裝置以及用于根據該變率確定在消費設備的隊列中剩余的樣本數目是否可以被減小以及如果可以的話則減小隊列的裝置。
本發明的再一個方面的特征在于,用于動態地減小通信網上的等待時間的系統,該系統包括識別數據塊何時準備好以加到消費設備的隊列中以及輪詢該消費設備和計算自從先前輪詢消費設備以來由該消費設備消費的樣本數目。該系統還包括計算由該消費設備消費的樣本數目的變率以及根據該變率確定在該消費設備的隊列中剩余的樣本數目是否可以被減小以及如果可以的話則減小該隊列。
本發明的又一個方面的特征在于,用于動態地減小通信網上的等待時間的軟件產品,該軟件產品駐留在計算機可讀的媒體上,能夠指令處理器來執行指令,以確定下一個數據塊的處理的完成以及確定該下一個數據塊在消費設備的隊列中剩余的樣本數目。該軟件產品還指令該處理器來確定在消費設備的隊列中剩余的樣本數目的變率;以及根據該變率確定在該消費設備的隊列中剩余的樣本數目是否可以被減小以及如果可以的話則減小該隊列。
本發明的另一個方面的特征在于,能夠動態地減小從通信網接收的數據塊的等待時間的音頻和視頻消費設備,該設備包括處理器,其中該處理器包括與處理器通信和由處理器控制的存儲器和外設。該設備能夠進行發送、接收和消費數據塊中的至少一項。該設備還包括軟件產品,其中該軟件產品能夠指令該處理器執行指令來(a)確定下一個數據塊的處理的完成;(b)確定該下一個數據塊在消費設備的隊列中剩余的樣本數目;(c)確定在所述消費設備的隊列中剩余的樣本數目的變率;以及(d)根據該變率確定在所述消費設備的隊列中剩余的樣本數目是否可以被減小。
本發明的另一個方面的特征在于,用于確定在音頻/視頻消費設備中的偏置的方法,該方法包括對消費設備輪詢在多個時間間隔之間消費的樣本的數目;以及把該消費的樣本數目與根據消費設備設置的消費速率應當已經在該多個時間間隔之間消費的計算的樣本數目進行比較。
圖2顯示用于有線和無線IP電話的總的系統結構200。該環境包含多個個人通信設備(PCD)210,它包括各種不同的處理聲音或視頻的部件。PCD 210包括具有存儲器220的CPU 215,以及與其通信的IP通信裝置225(名稱為LAN媒體接入卡(MAC))、無線通信裝置230(名稱為IEEE 802.11、藍牙、IR或類似的依從的標準。該通信裝置可以包括LAN、互聯網和其他無線設備。
PCD 210還包括IO端口235,用于音頻或視頻輸入和輸出;音頻插口240,和可任選地內部揚聲器和/或話筒245,它們都與CPU 215通信和被CPU 215控制。PCD 210也可包括外部揚聲器和話筒255。
交互的聲音通信出現在從一個PCD 210的話筒到另一個PCD 210的揚聲器的通路上,以及反之亦然。每個部件可對等待時間做出貢獻。除了圖1和2上顯示的物理部件以外,可能有軟件部分,諸如聲音編譯碼器(編碼器和譯碼器),也可對等待時間做出貢獻。
在典型的運行時,PCD 210通過LAN交換網260進行連接,LAN交換網是諸如以太網交換機或集線器或類似類型的網絡設備。LAN 260通常被連接到IP路由裝置265,諸如標準IP獨立路由器或PC機或類似的被配置用于路由的裝置。IP路由裝置270是與通信交換網裝置(諸如互聯網)通信,或與進一步與IP路由裝置275通信的其他通信網通信。如圖2所示,PCD 210可以通過硬連線的或RF連接被連接到LAN 280或無線接入點285和290。
在IP電話中有幾個等待時間的來源。某些來源完全在端點設備內,而其他的來源是在端點設備的外面。本發明的一個方面是使得來自直接處在端點設備的控制下的源對等待時間的貢獻最小化,以及有效地管理所有剩余的等待時間原因。識別等待時間的來源是相當容易的(從它的產生到它的消費,處理聲音或聲音數據的每個設備和代碼片段),然而,這些設備中的某些設備與其他設備相比是極小的貢獻者。為了有效地控制或最小化等待時間,重要的是了解產生等待時間的機制以及人感知等待時間的本能。
雖然以下的詳細說明是針對IP電話的,但讀者應當注意以及本領域普通技術人員應當已經認識到,所描述的技術和方法同樣可應用于數字視頻流、音頻/視頻數據流、數據流或者其中終端設備接收用于視覺或聽覺消費的數據的任何系統。
在以下的說明中,術語“樣本”被規定為當涉及到音頻數據塊時是指音頻樣本,以及當涉及到視頻數據塊時是指幀。
IP上的聲音和視頻通信的某些共同特性適用于所有的對等待時間的主要貢獻者。通過理解這樣的等待時間貢獻,可以建立一個用于進一步分析等待時間的模型。考慮的基本特性是(1)音頻和視頻,或者在數據報、大塊、數據塊、IP分組或分段中被發送;(2)音頻和視頻數據塊需要時間來在任何的有線或無線連接上進行發送;(3)音頻和視頻數據塊典型地僅僅在完全被接收和驗證后從一個設備被發送到另一個設備或者相反地轉移;(4)音頻和視頻數據塊在大多數設備中被排隊,以便發送或轉移;(5)音頻和視頻數據塊在傳輸中可被丟失;(6)音頻和視頻數據塊具有相當大的額外開銷,它在音頻數據塊很短時(即,比額外開銷小)可以是總的傳輸花費的很大的百分數;以及(7)當音頻和視頻的壓縮在大的數據塊中被執行時,它是最有效的。
如前所述,本發明在其中等待時間成問題的任何設置中對視頻數據塊或音頻與視頻的組合同樣好地考慮和工作。如果單單引用視頻或音頻數據塊,則其是打算覆蓋缺少的引用,除非特別地做了相反的說明。
IP音頻或視頻通信的第一個基本特性是音頻在數據塊、分段、數據分組或數據大塊中被發送。數據塊典型地通過許多各種各樣的壓縮算法和例程被壓縮。數據塊可以而且確實是尺寸變化的。數據塊的尺寸通常以字節進行度量,以及取決于所使用的壓縮算法(如果有的話);在數據塊內包含的信息量(某些數據塊包含比其他數據塊更多的信息,所以是不太可壓縮的);聲音數據塊的持續時間(典型地以毫秒度量,或以特定的樣本速率的樣本度量);以及在音頻、視頻或音頻/視頻環境下達到的重現的保真度。在數據塊從其產生到其消費的發送路徑中一個設備的等待時間貢獻是該數據塊的特性(即,所使用的壓縮算法、數據塊的尺寸、額外開銷等等)的函數。
IP音頻或視頻通信的第二個基本特性是數據塊在它們從源行進到目的地時需要從一個設備發送到另一個設備的一定的時間量。在從源到目的地的路徑中并不是所有的物理鏈路都同樣快速,所以對等待時間做出不等同的貢獻。例如,最慢的鏈路典型地是到家庭計算機系統的調制解調器鏈路,且當然其對該總的等待時間貢獻最大的部分。
IP音頻或視頻通信的第三個基本特性是可尋址的設備(具有IP地址和作為路由設備出現在路徑上的設備)和許多其他設備(包括可能不作為路由設備出現的交換機)在整個數據塊被第一次接收和典型地驗證之前,將不開始把數據塊發送到它的下一個目的地。例如,在互聯網內,20個這樣的可尋址的設備,和在路由清單上未見到、但也呈現這些相同特性的、幾個附加的不可尋址的交換機或集線器一起出現在該路徑上并不少見。
IP音頻或視頻通信的第四個基本特性是即使設備正常地運行以及沒有分組或數據塊丟失,互聯網上的延時也可以是任意大的。設備隊列旨在平滑容量的瞬變的或瞬時的過載,以使得即使數據塊按照某個統計分布隨機地到達,該設備也可達到它們的全部吞吐量。因此,有平滑該負荷以避免不必要地丟棄數據塊的需要。
隊列或數據緩沖器也是端點計算機設備的部件,諸如在音頻或視頻卡或者音頻或視頻卡驅動器中,以及用于IP傳輸到端點設備或從端點設備傳輸出的傳輸隊列。這些隊列的長度會受到CPU和存儲器總線調度以及在傳輸線上的負荷的影響。隊列對等待時間而言是主要的貢獻者,以及在長度上可以是高度可變的。
IP音頻或視頻通信的第五個基本特性是數據塊可被丟失。當隊列在特定的設備中太大時,將典型地從該隊列中丟棄數據塊,以及沒有被恢復的塊只是消失。這典型地在等待時間已經超過最大預定的極限,通常>250ms時發生。對于250ms或更大的等待時間水平,處在實時的或接近于實時的對話中的用戶會注意到該延時。在音頻設置中,通信開始采用步話機方式。一旦存在等待時間,它就將持續,以及只能通過采取某些行動被克服,諸如從消費設備(即,音頻、視頻或音頻/視頻播放器)隊列中刪除或者從被發送到終端設備、但尚未處在該消費設備隊列中的數據塊中刪除(即,丟棄數據塊)足夠的數據塊,以便再次在設計參數(通常是<200ms的等待時間水平)的范圍內。值得注意的是消費設備可以具有多個緩沖器。分配給該消費設備的所有緩沖器被看作為消費設備隊列的一部分。分配的存儲器量在設備運行期間可以被改變。
數據塊在傳輸時也可能被破壞和被丟失。如果需要無丟失的傳輸,則丟失會對等待時間做出貢獻;因為請求和接收被丟失數據塊的重新發送所需要的時間當然加到該等待時間。這樣引起的等待時間通常被認為是不可接受的。所以,對于IP電話和標準電話,會接受這樣的丟失,以及接收設備必須應付丟失的數據塊。通過冗余地發送信息,有可能減少這樣的丟失數據塊的發生,但這增加了傳輸的帶寬花費以及附加的等待時間。
在本發明中,以及對于大多數電話的目的而言,冗余傳輸技術并不被認為是最期望的。盡管如此,本發明的實施例確實打算使用這樣的冗余技術和機制,且這樣的系統將從本發明的教導獲益。
在以上列出的第二和第三特性之間的相互作用對該等待時間做出很大的貢獻。因為第三基本特性要求在接收到整個數據塊之前不進行發送,所以在每個節點上,在進入鏈路上的傳輸時間被加到該等待時間。例如,假設慢的調制解調器鏈路是所關心的鏈路,以及它很少能夠載送在聲音數據塊中提出的帶寬。如果聲音數據塊包含一秒的聲音,則將需要差不多一秒來完全地發送它。所以,只從該鏈路就將加上一秒到該等待時間。下一個鏈路將可能快得多,以及將貢獻它的相應的傳輸時間給等待時間。這個過程在互聯網或通信網的每個交換機和路由設備中重復進行,直至數據塊在目的地處被接收為止。因此,總的延時或等待時間可以是相當大的。
本發明使得這種影響最小化。一般的機制是發送合理地小的分組。眾所周知,每個數據塊、數據分段或分組包括頭標,它是發送分組的額外開銷的一部分。小分組的頭標與大分組的頭標具有相同的尺寸,因此,當通過利用較小的分組來減小等待時間時傳輸的花費上升。分組尺寸的減小受到基本特性6的影響的限制。
幸運的是,互聯網基礎結構隨著時間過去已經用更快速的傳輸媒體構建,現在常常由非常快速的光纖鏈路組成,這樣使得這種特定的等待時間貢獻隨時間過去正變得越來越小,以及常常是不重要的,并且通常地,只需要考慮排隊等待時間。在遇到最慢鏈路的網絡外圍,該貢獻仍舊是顯著的。每個數據塊典型地在它到其目的地的路途上經歷兩個相對較慢的“最后一英里”鏈路。
在進一步的詳細說明中,中途點(waypoint)被規定為被利用來從一點傳送數據塊到另一點的任何連接或設備。中途點可以是,但不限于,集線器、路由器、中繼器、交換機、PBX、編譯碼器、調制解調器件或終端設備之一。中途點存儲、排隊、和通過WAN、LAN、互聯網、無線連接或通信網轉發數據塊到另一個連接,直至達到最后的中途點(即,終端設備)為止。應當指出,中途點并不限于網絡通信節點或設備,因為某些中途點是在終端節點或設備內的部件。這些特定的中途點執行除向前傳送數據塊以外的功能。例如,音頻或視頻I/O卡,或它的驅動器,被有利地如編碼器/譯碼器(編譯碼器)一樣來建模作為中途點。
每個中途點具有數據塊隊列,它具有最小的長度和最大的長度。如果預定的最大值被超過,則數據塊通常被丟棄或以某種方法被處理,以便保持長度低于該最大的門限值。最小的長度是在FIFO隊列的頭部、在中途點發送數據塊之前必須被超過的長度。正在被發送的數據塊不被認為是在該隊列中;這樣,中途點可以具有0的最大隊列長度,但最小的實際最大隊列長度是1。顯然,最大值必須大于或等于最小值。
對于具有n個連接Cn的特定的通信路徑,有n個目的地中途點Wn。所述連接可以是有線、光纖、或無線;以及連接Ci將中途點Wi-1連接到中途點Wi。初始的連接不具有源中途點,它可被認為是音頻或視頻的源。對于每個連接Ci,有一個特征傳輸速率ti,它在本發明的本實施例中被給出為以每秒比特計。中途點具有以下的固定的定量特性li被定義為在中途點Wi處第一接收的存儲的數據塊被發送或被輸送到下一個中途點之前在該中途點處的隊列的最小長度。
hi被定義為在中途點Wi處數據塊的隊列的最大長度。
中途點具有一個動態特性(即,依賴于時間)是數據塊的隊列長度qi。在連接Ci上輸送的、用于一個特定傳輸的數據塊具有以它們代表的音頻或視頻的時間計的固定長度,這是以毫秒度量的,以及用di來表示。該數據塊的、需要的總比特用bi表示。數值di是當數據塊在接收端通過播放設備或消費設備,諸如揚聲器、監視器、PDA等等被放出時,音頻或視頻數據塊的持續時間。當中途點是壓縮編碼器/譯碼器(編譯碼器)時,進入的比特尺寸有可能與外出的比特尺寸不同,而代表的聲音的毫秒可以是相同的。也有可能,特定的中途點在它的輸入端以不同于它發送時的毫秒長度收集聲音。例如,某些與其驅動器相組合的音頻卡在向接收對象發送之前將收集約50毫秒的音頻,盡管請求的尺寸比50毫秒小得多。因此,如果請求10毫秒數據塊,則5個音頻緩沖器(數據塊)可以每50毫秒被快速地接連傳遞。
為了簡單化,假設聲音壓縮率是固定的,即,一組毫秒數目的音頻或視頻的數據塊將常常需要相同數目的比特以便用壓縮的形式表示,而不管被壓縮的音頻或視頻的特性如何。通過這個假設,中途點i的固定的或非動態的貢獻(其中i大于1)結合其進入的連接由下式(1)給出lidi+(bi/ti)公式(1)對于與初始中途點的初始連接而言,對等待時間的貢獻只是d0,因為消費率恰恰是聲音的產生率。因此,在聲音設備把聲音輸送到下一個中途點(它或許是編譯碼器)之前,聲音設備收集的尺寸是對等待時間的直接貢獻者。固定的等待時間然后由下式(2)規定ωfixed=d0+l1d1+Σj=2n(biti+lidi)]]>公式(2)
對等待時間的動態貢獻是根據隊列的長度超過和大于最小長度。因此,動態等待時間由下式(3)規定ωdynamic=Σi=1n((qi-li)di)]]>公式(3)對于大多數中途點,隊列的最小長度是零。路徑上的瞬變條件對動態等待時間有很大的貢獻,該動態等待時間典型地是相當可變的。動態隊列長度(qi-li)可被看作為隨機變量,它們不是獨立地分布的,而是受到獨立的隨機事件影響。它們不是獨立地分布的,因為隊列長度取決于路徑上所有設備的運行狀態。例如,發送數據塊到另一個設備的設備對于目的地設備的隊列長度有影響。
本發明的一個方面是確定在最后目的地處、足以處理在傳輸路徑上的隊列長度的全部變率的隊列長度,但傳輸路徑上的隊列長度不比最后目的地的隊列長度更長。被選得太小的隊列長度將被迫不必要地丟棄數據塊,而大于必要的隊列長度增加等待時間。此外,希望根據隊列長度的歷史來動態地調節最后隊列的最大長度,以使得用戶由于用完要重放或要被終端設備消費的音頻或視頻而感知高的等待時間、或替換地感知差的音頻或視頻質量的機會最小化。
如前所述,在互聯網或通信網上,即使在一個計算機與通過LAN連接的另一個計算機之間的路徑上的等待時間也是極度可變的。該變率的重要部分是由瞬變條件造成的。因此,隊列長度在路徑上動態地增長和收縮,使最后的隊列通常收緊間隙。如果最后的隊列長度因為設備已消費隊列中的數據而變為零,則等待時間以沒有數據給最終用戶消費或播放的時間量增長。
變率可以以許多方法進行計算,正如本領域技術人員容易看到的。本發明教導和打算通過任何的變率計算方法來動態地減小等待時間。這包括,但不限于,統計方差或計算變率的隨機模型。變率還包括加權平均,其中計算的變率度量能夠是變率度量的分數或倍數。另外,變率可以通過傳輸的整個歷史或通過預定的窗口被計算、被加權,以便更多地考慮最近的事件。在現有技術中,變率有時也稱為抖動,它是在最后的網絡目的地處、分組之間的到達間時間的差值的度量。變率僅僅被定義為當數據塊被完全處理或準備好被消費設備(它是最后的網絡目的地的一個部件)消費時,消費設備的隊列長度中的差值或差值的度量。
如果假設沒有分組丟失,以及音頻產品時鐘與聲音重放時鐘完全匹配,正如RTP執行的那樣(即,輸入端處的樣本速率完全與輸出端處的樣本速率一致),則等待時間正好是在音頻或視頻首先開始在源端被捕獲時的時刻開始、當音頻或視頻沒有在目的地處被播放時的周期的和值。這個過程導致在最后的輸出設備處甚至更長的隊列,因為引起它們的條件實質上是瞬變的。
本發明提供通過縮短在最后的中途點(輸出設備)處的隊列長度而動態地提供低的等待時間的方法。本發明的實施例規定隊列長度增長和在不穩定的瞬變條件期間在較長的周期內增加在那個隊列尺寸處的維持。應當指出,當瞬變情況減弱時,隊列不應當縮短得太快,否則會導致該設備再次用完聲音(run out of sound)。隊列的縮短通常應該只在觀察到在很長的時間周期內可以支持較低的等待時間以后才發生。
在本發明中,在系統中動態地計算和調節較低的等待時間的相同或類似的裝置也對抖動進行調節,該抖動有時被狹義地定義為在穩定狀態條件期間數據塊的到達時間的統計變率。抖動有時被定義為也包括比它的最后設備消費更慢或更快的音頻或視頻產生所關聯的問題。這是不可避免的,因為消費是以與產生設備的時鐘無關的時鐘運行的。
如果抖動是唯一的現象,則僅僅找出要在統計上保持的、隊列的良好長度就足夠了。如果隊列要超過該選擇的長度,則它將被縮短。任選地,如果它變為較短的,則可通過某些數字信號處理裝置把它拉長。否則,可以允許它運行。但情況并不是這樣。本發明提供一種方法,它計及抖動,但它也計及路徑上的、導致高度可變的等待時間,特別是等待時間的瞬態增加的改變的條件,該方法可以在瞬變條件期間被調節,然后當瞬變條件一減弱,就重新調節。在本發明中,這是在如上所述的、等待時間的所有貢獻者被聚集后,通過動態隊列管理達到的。
因為隊列長度在如前所述的路徑上的設備中或多或少是獨立的,所以隊列長度的管理應當優選地主要在最后的可能點、或者在已經經過任何可能的等待時間貢獻者以后發生。這遠優于在中間點的隊列長度管理,除了在例外條件下,其中數據塊必須被丟棄,以防止溢出隊列。基于以上分析的簡單統計或隨機模型表明,在多個位置試圖管理隊列長度將可能導致較大的等待時間以及肯定不能有效地降低等待時間。具體地,在譯碼和加密步驟對等待時間做出貢獻之前,甚至在通信協議的端點處進行管理也是不穩妥的。
在輸出設備中的輸出隊列長度可以在大多數音頻與視頻重放機中從軟件被確定。這典型地包含從功能調用返回的參量,它表示在輸出設備中自從開始該輸出以來播放的聲音樣本的數目。輸出設備有時隨時間過去而產生偏置,以及報告的位置在功能調用時的實際位置之后。這導致感知的隊列長度可大大地超過實際的長度。這個現象可被看作為控制它的設備或軟件中的缺陷,但它在各式各樣的流行的音頻與視頻I/O設備中發生。本發明包括通過精確地消除偏置而使得這種缺陷的影響最小化的裝置。
偏置依賴于設備,但并非在所有的設備中都是固定的,所以如果要知道隊列長度,則報告的隊列長度必須對該報告設備的偏置進行調節,以得到真實的隊列長度。當以相應于從發送設備接收音頻或視頻數據塊的預期時間間隔的時間間隔來傳送數據塊到輸出設備時,調節應當根據設備的穩態運行被執行。
圖3是顯示按照本發明的一個方面的偏置因子決定的流程圖。為了得到聲音樣本隊列長度偏置,該聲音設備被重復地探測,以便得到穩態偏置的幾個樣本。該偏置應當在與該聲音設備和驅動器運行的基本上相同的環境中(包括在輸出設備上的負荷)被觀察。換句話說,如果當對給該設備的聲音進行處理時要傳遞10毫秒的數據塊,則探測將發送10毫秒的數據塊到該設備。通過精確地定時數據塊的發送,可以確定該隊列長度應當近似于零(差值表示偏置)。探測優選地在接近的序列中出現,以及從第一探測得到的數值通常不被使用,使得設備和驅動器可以安定下來。幾個結果被平均,以及取得標準偏差,然后平均值被加上該兩倍標準偏差,以便得到調節的偏置值。
如圖3所示,在步驟305,輸出設備被打開,以及音頻或視頻或者音頻和視頻部分被初始化,以及樣本位置計數器典型地被設置為零。在步驟310,作出有關相應于預期要被放出的或消費的聲音的數據塊樣本數目n的決定。在這個步驟,還作出以設備重放速率播放該音頻或視頻所需要的微秒數目的決定,放在變量m中。數字變量被設置為預定的數目,在本實施例中,變量D和V被設置為0。變量D積累未播放的聲音觀察的和值。注意,每個這樣的觀察應當已經是0。變量V積累每個這樣的觀察的平方。變量D和V被使用來計算在觀察的偏移中的平均值和標準偏差。在本實施例中,階段計數器P被設置為2,以及總的寫入的樣本數目W被設置為0。應當指出,變量名稱和數目可被設置為讀者想要的任何值,只要計算偏置的基礎方法和原理被保持即可。
在步驟315,循環計數器L被設置為10,以及在步驟320,數據塊計數器C,在本例中,被設置為5。控制進到步驟325,其中執行寫入長度n的空白的(無聲的或黑屏的)音頻/視頻樣本。在這個步驟,計數器C被遞減1,以及n被加到寫入的樣本數目W。在步驟330,當前的線程睡眠(即,被延遲)約m/2微秒。這防止與這個運行有關的線程霸占CPU時間,以及更接近地模擬該設備的實際使用。
在步驟335,進入緊張的繁忙-等待循環,它在當前的線程中引入另外的附加的m/2微秒延時,以便使得自從上次寫入的總的等待正好等于(程序上盡可能接近)m微秒。繁忙等待可以通過重復詢問定時器直至時間用完為止而被執行。在步驟340,作出決定計數器C是否等于0。如果不是的話,過程就返回到步驟325,以及如上所述地,從該點繼續進行。如果確定該計數器C等于0,則過程使控制進到步驟345,在其中確定階段計數器P是否等于1。
如果在步驟345,確定P等于1,則過程進行到步驟350,在其中對系統作出關于播放的樣本數目p的請求。計算W-p=d((寫入的樣本數)-(播放的樣本數))。然后控制進到步驟355,在其中把差值d加到D上以及把d*d加到變量V上。然后,控制進到步驟360,以及如下所述地,從那里繼續進行。
如果在步驟345,階段計數器P不等于1,則控制進到步驟360,在其中循環L被減1。在步驟365,確定循環L是否等于0。如果結果是否定的話,則控制傳回到步驟320,以及如上所述地,從那里繼續進行。如果步驟365的判定是肯定的話,則控制進到步驟370,在其中階段計數器P被減1。然后,控制進到步驟375,確定P是否等于0。如果P不等于0,則控制進到到步驟315,在其中,如上所述地,從該點進行過程。如果P等于0,則控制進到步驟380,在其中計算平均偏置。
在步驟380,通過把循環數目或所取的數據點(在本例中是10)除以D而計算平均偏置B,以及通過取{(V/10-B*B}的平方根而計算偏置B的標準偏差S。偏置因子變量<bias Factor>在本實施例中也被計算為B+2S。偏置因子是估計的偏置加上被使用來估計偏置的樣本中的兩個標準偏差。應當指出,本領域技術人員可以修正以上的偏置因子計算和得到基本上類似的結果,以及仍舊在本發明的范圍和教導內。
雖然偏置可被看作為輸出設備的音頻和視頻處理軟件或硬件中的缺陷,但它是普遍存在的,以及需要被解決。現有技術忽略這種情形,因此,助長了設備隊列的不精確的尺寸確定。讀者應當注意,可被使用于音頻和/或視頻I/O的某些設備可能沒有這種偏置。本發明的一個方面在于,它估計偏置,以及在沒有這種偏置的場合下,它估計偏置值為接近于零;在這種情形下,偏置分量可被排除在隊列尺寸和長度的計算與估值之外,而基本上不影響計算的結果。
圖4顯示聲音輸出隊列的初始化,以及將在這時被描述。它規定幾個常數,以及描述某些變量在本發明的執行過程中的使用。
重置聲音輸出隊列的步驟400為如下。在步驟410,還未寫入到消費設備R(即,輸出設備或視頻/音頻播放機)的隊列樣本數目被設置為0。在本實施例中,明顯常數(manifest constant)<MULT>被設置為128,其中明顯常數<ROUND>和<SCALER>被計算為如下<ROUND>=<MULT>/2,這是64;以及<SCALER>=<MULT>-1,這是127。
令變量<buf_samples>為在傳輸中、在單個數據塊中代表的聲音樣本的數目。應當指出,這個數值可以是可變的,但在本實施例中,它是固定的。這個變量取決于樣本速率和數據塊中聲音的標稱毫秒數,在本實施例中,它是2的冪。例如,如果樣本速率是每秒11,025,則數值是256,或約23毫秒的樣本。令變量<microSecDatablock>是數據塊、數據報、大塊或分組中的聲音微秒數。令變量<CurrMicroseconds>是系統一直運行和被生成或確定的微秒數,每個時間變量<CurrMicroseconds>都在算法中被使用。
在步驟420,聲音(或視頻)外出隊列的重置被如圖5所示地執行,以及將在后面詳細地討論。過程然后進行到步驟430,在其中確定如圖3所示的和以上描述的偏置因子-變量<biasFactor>。然后,控制進到步驟440,在其中聲音外出隊列再次被重置。
圖5顯示聲音外出隊列的重置420(它在初始化期間應當發生兩次)。這個程序被使用來從某個錯誤狀態恢復,以及協助隊列的一般初始化。
在步驟510,把排隊的樣本數目變量<queued>設置為R,其中R是還未寫入到輸出設備的排隊樣本的數目。在初始化時,變量<queued>被設置為0,因為R是零。在步驟520,用于聲音輸出的設備隊列被清空,名義上,這是由識別聲音輸出設備的系統庫調用完成的。在步驟530,由系統庫調用設置系統保持的數值變量<position>(它是播放的樣本的累積數目)為0。注意,變量<position>可以由應用以或許較低的精度保持。例如,緩沖器尺寸乘以當前在輸出設備隊列中的緩沖器數目(還未由系統返回到應用)。
在某些系統中,后者的方案可被有利地使用來保持變量<position>的數值,因為本發明的特定實施例可能不被支持。如果使用后者的方法或它的等價者,則數值P可被設置為0。在某些系統中,可以有可檢索的數值,通過它可以計算變量<position>。隊列的長度在某些系統中是可以直接訪問的,以及在這樣的系統中,該數值以明顯的方式被有利地使用。
在步驟540,把變量<total_queued>設置為0,以及在步驟550,把變量<microsecLastDropped>設置為0。microsecLastDropped被定義為當最后的數據塊從用于重放的隊列中被丟棄時系統已經運行的微秒數。在數據塊的實際丟棄發生之前,它被設置為0。
圖6顯示用于確定數據塊要被放出、被排隊用于輸出還是要被忽略的過程。
在步驟610,確定物理上還沒有播放出的、排隊用于重放的樣本的數目,以及把它存儲在變量<queued>中。這個操作名義上包括把已經在任何時間排隊的總的樣本數目稱為變量<total_queued>,以及從得到當前已被播放的總數的系統調用來確定變量<position>。變量<queued>被計算為變量<queued>=變量<total_queued>-變量<position>。在步驟620,確定變量<queued>是否>=0,如果它小于0,這是錯誤情況,則控制進到步驟420,在其中聲音外出隊列被重置,然后控制進到步驟610,正如以上描述的;如果它大于或等于0,則控制進到步驟630,在其中變量<sum>和變量<sumsquared>被計算為如下變量<sum>=((變量<sum>*<SCALER>)+(變量<queued>*<MULT>)+<ROUND>)/<MULT>。變量<sumsquared>=((變量<sumsquared>*<SCALER>)+(變量<queued>*變量<queued>*<MULT>)+<ROUND>)/<MULT>。讀者應當注意,除以<MULT>的除法和乘以<MULT>的乘法可以通過移位運算被有利地實施,其中<MULT>是2的冪。
在步驟640,加權平均隊列長度變量<wavgqueue>和在隊列長度變量的加權方差<wvarqueue>通過以下公式被計算變量<wavgqueue>=(變量<sum>+<ROUND>)/<MULT>
變量<wvarqueue>=(變量<sumsquared>-((變量<sum>*變量<sum>+<ROUND>)/<MULT>)+<ROUND>)/<MULT>
在步驟650,中間值變量<overage>如下地被計算為當前的加權平均隊列長度減去樣本中數據塊的偏置因子和數據塊的長度變量<overage>=變量<wavgqueue>-變量<biasFactor>-變量<buf_samples>。
在步驟660,作出決定變量<overage>是否大于或等于0。如果不是的話,則控制進到步驟670,在其中變量<overage_squared>被設置為0,以及如果是的話,則控制進到步驟680,在其中變量<overage_squared>被設置為<overage*overage>。然后,控制進到步驟690,在其中布爾值變量<dodrop>按下式被計算變量<dodrop>=((9*變量<wvarqueue>)變量<變量<overage_squared>)AND((變量<microSecData block>/4)=(變量<CurrMicroseconds>-變量<microSecData block>))。
通過某些代數運算,可以看到,以上的、對于<dodrop>的公式確定加權平均隊列長度減去加權標準偏差(在這時設置為3)是否大于樣本中單個數據塊的長度。如果是的話,則我們可安全地使隊列長度減小一個數據塊,而不用擔心隊列將用完聲音。公式的第二部分保證數據塊沒有以比1/4更快的速率被去除,盡管這個數目可以取決于應用而從1/2或1/3或更多分之一中變化。
圖7顯示進入的數據塊或數據塊的組的處理,包括從源到目的地的傳輸。無論何時包含聲音的傳輸被接收到,都優選地進行這個活動。
在步驟710,傳輸在路徑上最后的物理設備處被接收。(名義上,在這個設備與模擬重放硬件之間沒有更多的LAN或無線傳輸鏈路)。這是一個外部驅動的事件,它使控制進到步驟720,在其中如果數據塊在這個傳輸中被多次(或許冗余地)代表,則它們被分開,以及這個過程對于每個數據塊繼續進行,以便從以前的冗余傳輸還沒有處理的第一數據塊開始。冗余傳輸對于大多數環境不是優選的,但是如果遇到,則冗余的傳輸在這個步驟被去除。
在步驟730,數據塊被譯碼或者以其它方式被處理用于重放或消費。通常,在過程中的這一點處,執行任何需要的解壓縮和/或解密。在步驟740,如圖6所示地計算布爾值變量<dodrop>。在步驟750,確定對于<dodrop>的變量條件是否已經滿足,以及如果滿足,則控制進到步驟760,在其中統計歷史通過使用變量<buf_samples>作為傳送的數值而為一個丟棄的數據塊進行調節。在步驟750,變量<microsecLastDropped>被設置為如下變量<microsecLastDropped>=變量<CurrMicroseconds>。
如果對于變量<dodrop>的條件不滿足,則控制進到步驟770,在其中已準備的數據塊被加到消費設備的輸出隊列,用于重放。
圖8描述調節統計歷史,以確定數據塊的布置。廣義地說,算法在正確地接收的數據塊仍然沒有被播放出后調節統計量,以便正確地呈現歷史。如果數據塊沒有被播放出,則它在下一個數據塊到達時導致較短的隊列,這樣,就生成一個在過去隊列始終較短時將已經得到的統計歷史。
在步驟810,變量<adjust_samples>被傳送到這個算法。該統計歷史被保持在兩個變量中,變量<sumsquared>和變量<sum>。這個算法調節它們,以使得如果下一個數據塊正好及時到達,且重放(聲音輸出)設備在該時間間隔中精確地播放出預期的聲音量,則歷史將反映新的變量<sum>和變量<sumsquared>,如果在歷史上隊列每次被采樣時該隊列的變量<adjust_samples>在長度上較短,則將已經獲得它們。這允許當幾個數據塊需要接連地被去除時適當地更快速地進行該隊列的縮短。動態隊列管理算法因此更快速地調節造成非常長隊列的瞬變條件。
在步驟820,變量<sum>按以下公式被調節變量<sum>=變量<sum>-(變量<adjust_samples>*<MULT>)。
如果變量<sum>小于0,則把變量<sum>設置為0。
在步驟830,變量<sumsquared>按以下公式被調節變量<sumsquared>=變量<sumsquared>-(((2*變量<adjust_samples>*變量<sum>)-(變量<adjust_samples>*變量<adjust_samples>)+<ROUND>)/<MULT>)。
如果變量<sumsquared>小于0,則把變量<sumsquared>設置為0。
現在將描述本發明的以上的系統和方法的概述。當IP電話連接被建立時,如圖4所示,通常首先主動地執行隊列的初始化。它通常設置由后面的算法實施方案使用的常數,以及初始化某些變量。它優選地被調用一次,以建立隊列控制機制。
圖5所示的聲音輸出隊列的重置包含把輸出設備中所有排隊的樣本清空。例如,如果輸出的位置被報告為在被寫出到設備的樣本數的前面,則已給予輸出設備驅動器的聲音數據塊被丟棄,以及設備位置被重置。這個相同的例程在初始化時也優選地發生兩次;一次是在進行探測偏置因子之前,然后再一次是在接收的數據塊首先被寫出到設備之前。
特別關心的是在初始化時設置的一個變量。它是用于聲音輸出設備的偏置因子,這是通過作出如圖3和附加的文本所示的幾個探測而生成的。偏置因子被使用來調節估計的隊列長度,它應當是在輸出設備處于與它將播放該連接的聲音正好相同的運行模式中時得到的。它是根據輸出設備的幾個探測、通過計算隊列長度的標準偏差和平均值而被計算的。通過復制如在對話期間將得到的精確定時,而仔細地產生偏置,其中保證隊列長度接近于零。
然而,被報告的位置通常滯后在后面,所以該長度可被計算為幾百個樣本。一系列探測被執行,以使得受影響的單元(諸如輸出設備驅動器)安定在穩定狀態。然后,執行第二系列,進行測量和對于每次探測的隊列長度和隊列長度的平方進行求和。然后計算平均值和標準偏差,以及把該偏置因子設置為平均值加上兩個標準偏差。
如圖8和附加的文本所表示的,當每個數據塊到達時維持統計量。統計歷史被維持作為指數加權的統計動差。加權的和值與該數值的平方的加權和值被保持。然后,從這些數值計算加權平均值和加權方差。在本發明中,這些計算是通過使用移位算子而不是除法,被有效地執行的。而且,不需要取平方根。而是由于判決是二進制,所以可以執行代數學,以允許進行與方差的比較。所以,三個標準偏差作為九個方差進行比較。
推導被優選地如下執行。令Avg代表平均的加權隊列長度,以及Sig是標準偏差,Bufflen是樣本中緩沖器的長度,可以希望確定平均值減去三個標準偏差在長度上是否大于單個數據塊,在這種情形下,整個數據塊可以如下面的公式(4)中所規定的,安全地被丟棄。
Avg-3*Sig>Bufflen3*Sig<Avg-Bufflen 公式(4)9*Sig*Sig<(Avg-Bufflen)*(Avg-Bufflen)在公式(4)中,Sig*Sig是方差(即,變率),所以通過以上公式的比較,可以避免平方根,但該比較等同于確定加權平均值減去三個標準偏差是否大于緩沖器的長度。如果結果為真,則確定把隊列縮短樣本的一個數據塊是安全的。
應當指出,被稱為卡爾曼(Kalman)濾波器的、熟知的通常遞歸數字濾波技術也可以有利地被使用來估計在隊列長度序列中的平均值和變率。雖然這個通用的實施方案在計算上沒有優選實施例那樣有效,但通過適當的參量選擇,它可以允許得到類似的結果。然而,它比獨立地計算每個數據塊的平均值和方差有效得多,因為卡爾曼濾波器也遞歸地維持歷史。
再次回到圖7,顯示了如果一個以上的數據塊在傳輸,進入的數據塊或數據塊組的一般處理。廣義地,對數據塊做出的第一決定是譯碼和/或解密它,因為這會把等待時間和方差加到該隊列上。這個操作優選地在確定是否丟棄數據塊之前進行,因為當數據塊實際上可供播放出時它花費來執行計算的時間將導致較低的隊列長度。關于數據塊是否將被播放的決定,如圖7所示,可被執行來確定數據塊實際上是否將被播放。
在替換的實施例中,它需要更多的CPU時間來使用現有技術已知的技術重新采樣聲音,以使得減小對于接著的四個數據塊或數據塊的某個其他子集的樣本的數目。這種重新采樣過程被使用來保持聲音在播放時的頻率,以及減小樣本的數目。也有可能使用數據塊丟棄解決方案,用于重復的數據塊的快速接連的丟棄,以及使用重新采樣來在需要丟棄較少的樣本時,減小排隊的樣本的數目。雖然這樣的過程在CPU時間上是更昂貴的,但在某些環境下,它產生優越的輸出。
如果在下一個數據塊到達時期望縮短隊列,例如數據塊沒有被排隊用于輸出,則統計量通過對圖8所示算法的調用而被適當地修正。正如圖8和附加的文本所表示的,歷史被調節,以便作出歷史,即,和值與平方的和值的數值反映隊列在整個歷史上被縮短特定數目的樣本時得到的數值。這允許該歷史被看作為是穩定在新的平均值,正如沒有作出調節時它將做的一樣,這樣,如果另一個隊列縮短是按次序的,則它可被快速地作出。換句話說,隊列的直接縮短不應當增加傳輸媒體的不穩定性的感覺。這種調節避免這種情況的發生。
本領域技術人員將會看到,在本發明的用于IP電話的動態等待時間管理和本發明的構建方面可以作出各種修正和變化,而不背離本發明的范圍或打算。
從這里揭示的本發明的技術說明和實踐看來,本發明的其他實施例對于本領域技術人員將是顯而易見的。其旨在使說明書和例子打算只被看作為示例性的,本發明的真實的范圍和精神由以下的權利要求表示。
權利要求
1.一種用于動態地減小通信網上的等待時間的方法,該方法包括(a)確定下一個數據塊的處理的完成;(b)確定該下一個數據塊在消費設備的隊列中剩余的樣本數目;(c)確定在該消費設備的隊列中剩余的樣本數目的變率;以及(d)根據確定在所述消費設備的隊列中剩余的樣本數目是否可被減小。
2.按照權利要求1的、用于動態地減小等待時間的方法,其中隊列通過提高消費設備的消費速率而被減小。
3.按照權利要求1的、用于動態地減小等待時間的方法,其中隊列通過將該樣本重新采樣為較少的樣本而被減小。
4.按照權利要求1的、用于動態地減小等待時間的方法,其中隊列通過刪除該隊列中的樣本而被減小。
5.按照權利要求1的、用于動態地減小等待時間的方法,其中隊列通過丟棄數據塊的樣本而被減小。
6.按照權利要求5的、用于動態地減小等待時間的方法,其中如果該隊列中剩余的樣本數目大于數據塊中樣本的數目與變率的和值,則丟棄數據塊的樣本。
7.按照權利要求5的、用于動態地減小等待時間的方法,其中如果隊列中剩余的樣本數目大于數據塊中樣本的數目與變率的和值,以及緊接在前面的數據塊被加到該隊列上,則丟棄數據塊的樣本。
8.按照權利要求5的、用于動態地減小等待時間的方法,其中如果隊列中剩余的樣本數目大于數據塊中樣本數目與變率的和值,以及如果在前面的數據塊的范圍內至少一個數據塊沒有被加到該隊列上,則丟棄數據塊的樣本。
9.按照權利要求1的、用于動態地減小等待時間的方法,其中如果隊列中樣本的總數超過預定的門限,則刪除該隊列中的樣本。
10.按照權利要求6的、用于動態地減小等待時間的方法,其中變率被加權。
11.按照權利要求1的、用于動態地減小等待時間的方法,其中變率被加權。
12.按照權利要求5的、用于動態地減小等待時間的方法,其中如果隊列中剩余的樣本數目大于數據塊中樣本的數目、變率與偏置的和值,則丟棄數據塊的樣本。
13.按照權利要求5的、用于動態地減小等待時間的方法,其中如果隊列中剩余的樣本數目大于數據塊中樣本的數目與變率的和值,以及緊接在前面的數據塊被加到該隊列上,則丟棄數據塊的樣本。
14.按照權利要求5的、用于動態地減小等待時間的方法,其中如果隊列中剩余的樣本數目大于數據塊中樣本的數目與變率的和值,以及如果在前面的數據塊的范圍內至少一個數據塊沒有被加到該隊列上,則丟棄數據塊的樣本。
15.按照權利要求13的、用于動態地減小等待時間的方法,其中如果隊列中樣本的總數超過預定的門限,則刪除該隊列中的樣本。
16.按照權利要求12的、用于動態地減小等待時間的方法,其中變率被加權。
17.按照權利要求15的、用于動態地減小等待時間的方法,其中變率被加權。
18.按照權利要求1的、用于動態地減小等待時間的方法,還包括對于總的數據塊的至少一部分重復進行步驟(a)-(d)的步驟。
19.按照權利要求18的、用于動態地減小等待時間的方法,其中隊列通過提高消費設備的消費速率而被減小。
20.按照權利要求18的、用于動態地減小等待時間的方法,其中隊列通過將該樣本重新采樣為較少的樣本而被減小。
21.按照權利要求18的、用于動態地減小等待時間的方法,其中隊列通過刪除該隊列中的樣本而被減小。
22.按照權利要求18的、用于動態地減小等待時間的方法,其中隊列通過丟棄數據塊的樣本而被減小。
23.按照權利要求22的、用于動態地減小等待時間的方法,其中如果隊列中剩余的樣本數目大于數據塊中樣本的數目與變率的和值,則丟棄數據塊的樣本。
24.按照權利要求22的、用于動態地減小等待時間的方法,其中如果隊列中剩余的樣本數目大于數據塊中樣本的數目與變率的和值,以及緊接在前面的數據塊被加到該隊列上,則丟棄數據塊的樣本。
25.按照權利要求5的、用于動態地減小等待時間的方法,其中如果隊列中剩余的樣本數目大于數據塊中樣本的數目與變率的和值,以及如果在前面的數據塊的范圍內至少一個數據塊沒有被加到該隊列上,則丟棄數據塊的樣本。
26.按照權利要求24的、用于動態地減小等待時間的方法,其中如果隊列中樣本的總數超過預定的門限,則刪除該隊列中的樣本。
27.按照權利要求23的、用于動態地減小等待時間的方法,其中變率被加權。
28.一種用于動態地減小通信網上的等待時間的方法,該方法包括(a)識別數據塊何時準備好加到消費設備的隊列上;(b)輪詢該消費設備和計算自從該消費設備的先前輪詢以來由消費設備消費的樣本的數目;(c)計算在由該消費設備消費的樣本數目中的變率;以及(d)根據該變率確定在該消費設備的隊列中剩余的樣本數目是否可被減小。
29.一種用于動態地減小通信網上的等待時間的系統,該系統包括(a)用于確定下一個數據塊的處理的完成的裝置;(b)用于確定該下一個數據塊在消費設備的隊列中剩余的樣本數目的裝置;(c)用于確定在該消費設備的隊列中剩余的樣本數目的變率的裝置;以及(d)用于根據該變率確定在所述消費設備的隊列中剩余的樣本數目是否可被減小,以及如果是則減小該隊列的裝置。
30.按照權利要求29的、用于動態地減小等待時間的系統,其中隊列通過提高該消費設備的消費速率而被減小。
31.按照權利要求29的、用于動態地減小等待時間的系統,其中隊列通過將該樣本重新采樣為較少的樣本而被減小。
32.按照權利要求29的、用于動態地減小等待時間的系統,其中隊列通過刪除該隊列中的樣本而被減小。
33.按照權利要求29的、用于動態地減小等待時間的系統,其中隊列通過丟棄數據塊的樣本而被減小。
34.按照權利要求33的、用于動態地減小等待時間的系統,其中如果隊列中剩余的樣本數目大于數據塊中樣本的數目與變率的和值,則丟棄數據塊的樣本。
35.按照權利要求33的、用于動態地減小等待時間的系統,其中如果隊列中剩余的樣本數目大于數據塊中樣本的數目與變率的和值,以及緊接在前面的數據塊被加到該隊列上,則丟棄數據塊的樣本。
36.按照權利要求5的、用于動態地減小等待時間的方法,其中如果隊列中剩余的樣本數目大于數據塊中樣本的數目與變率的和值,以及如果在前面的數據塊的范圍內至少一個數據塊沒有被加到該隊列上,則丟棄數據塊的樣本。
37.按照權利要求31的、用于動態地減小等待時間的系統,其中如果隊列中樣本的總數超過預定的門限值,則刪除該隊列中的樣本。
38.按照權利要求34的、用于動態地減小等待時間的系統,其中變率被加權。
39.按照權利要求33的、用于動態地減小等待時間的系統,其中如果隊列中剩余的樣本數目大于數據塊中樣本的數目、變率與偏置的和值,則丟棄數據塊的樣本。
40.按照權利要求29的、用于動態地減小等待時間的系統,還包括對于多個數據塊重復進行步驟(a)-(d)的步驟。
41.一種用于動態地減小通信網上的等待時間的軟件產品,駐留在計算機可讀媒體上的該軟件產品能夠指令處理器執行指令以(a)確定下一個數據塊的處理的完成;(b)確定下一個數據塊在消費設備的隊列中剩余的樣本數目;(c)確定在消費設備的隊列中剩余的樣本數目的變率;以及(d)根據該變率確定在所述消費設備的隊列中剩余的樣本數目是否可被減小,以及如果是,則減小該隊列。
42.按照權利要求41的、用于動態地減小等待時間的軟件產品,其中隊列通過提高該消費設備的消費速率而被減小。
43.按照權利要求41的、用于動態地減小等待時間的軟件產品,其中隊列通過將樣本重新采樣為較少的樣本而被減小。
44.按照權利要求41的、用于動態地減小等待時間的軟件產品,其中隊列通過刪除該隊列中的樣本而被減小。
45.按照權利要求41的、用于動態地減小等待時間的軟件產品,其中隊列通過丟棄數據塊的樣本而被減小。
46.按照權利要求45的、用于動態地減小等待時間的軟件產品,其中如果隊列中剩余的樣本數目大于數據塊中樣本的數目與變率的和值,則丟棄數據塊的樣本。
47.按照權利要求45的、用于動態地減小等待時間的軟件產品,其中如果隊列中剩余的樣本數目大于數據塊中樣本的數目與變率的和值以及緊接在前面的數據塊被加到該隊列上,則丟棄數據塊的樣本。
48.按照權利要求45的、用于動態地減小等待時間的軟件產品,其中如果隊列中剩余的樣本數目大于數據塊中樣本的數目與變率的和值,以及如果在前面的數據塊的范圍內至少一個數據塊沒有被加到該隊列上,則丟棄數據塊的樣本。
49.按照權利要求1的、用于動態地減小等待時間的軟件產品,其中如果隊列中樣本的總數超過預定的門限,則刪除該隊列中的樣本。
50.一種用于確定音頻/視頻消費設備中的偏置的方法,該方法包括輪詢消費設備在時間間隔之間消費的樣本的數目;以及把所消費的樣本數目與根據消費設備設置的消費速率、在多個時間間隔之間應當消費的計算的樣本數目進行比較。
51.一種能夠動態地減小從通信網接收的數據塊的等待時間的音頻和視頻消費設備,該設備包括處理器,其中該處理器包括存儲器;外圍設備,其與該處理器通信和由該處理器控制,能夠進行發送、接收和消費數據塊中的至少一項;以及軟件產品,其中該軟件產品能夠指令該處理器執行指令以確定下一個數據塊的處理的完成;確定該下一個數據塊在所述消費設備的隊列中剩余的樣本數目;確定在所述消費設備的隊列中剩余的樣本數目的變率;以及根據變率確定在所述消費設備的隊列中剩余的樣本數目是否可被減小。
全文摘要
用于獨立于實時協議而動態地減小通信網的等待時間的方法。該方法包括確定下一個數據塊的處理的完成和確定該下一個數據塊在消費設備(210)的隊列中剩余的樣本數目。不用知道系統(200)的等待時間,根據在消費設備(210)的隊列中剩余的樣本數目來確定變率。然后根據該變率作出在所述消費設備(210)的隊列中剩余的樣本數目是否可被減小的決定,以及如果是的話,則減小該消費設備(210)的隊列。
文檔編號H04M7/00GK1541471SQ02815649
公開日2004年10月27日 申請日期2002年6月10日 優先權日2001年6月9日
發明者K·L·丹寧霍夫, K L 丹寧霍夫 申請人:電訊系統公司