專利名稱:壓縮數(shù)據(jù)分組中頭域的技術(shù)的制作方法
技術(shù)領域:
本發(fā)明涉及一種用于壓縮數(shù)據(jù)分組中頭域的方法和設備。更特別地,本發(fā)明涉及一種利用基于定時器和參考的方案來壓縮數(shù)據(jù)分組中頭域的方法和設備。
對于基于互聯(lián)網(wǎng)協(xié)議(IP)的多媒體,實時傳輸協(xié)議(RTP)主要用于用戶數(shù)據(jù)報協(xié)議(UDP/IP)之上。在RFC1889中詳細描述了RTP。組合的IP/UDP/RTP頭的大小對于IPv4至少是40字節(jié),對于IPv6至少是60字節(jié)。在頻譜效率是主要關(guān)注點的系統(tǒng)(如蜂窩網(wǎng))中認為每個分組40-60字節(jié)的系統(tǒng)開銷是很重的。因此,需要合適的IP/UDP/RTP頭壓縮機制。在RFC2508中描述了當前頭壓縮方案,其能夠?qū)?0/60字節(jié)的IP/UDP/RTP頭在點到點鏈路上壓縮到2個或4個字節(jié)。已有的頭壓縮算法基于這樣的觀察事實,即在會話長度期間分組流中IP分組頭的大多數(shù)域保持恒定。因此,可能通過在解壓縮器中建立壓縮狀態(tài)(完整頭信息)并且通過從壓縮器到解壓縮器傳送最少量的頭信息來壓縮頭信息。
RFC2508基于大部分時間,從一個分組到另一個分組改變的RTP域,如RTP時間戳,可通過線性外推法預測的想法?;旧弦l(fā)送的唯一信息是序號,用于錯誤和分組丟失檢測(以及上下文ID)。當發(fā)送器確定線性外推法不能用于當前分組時,就發(fā)送關(guān)于緊接著前面分組的第一個順序差異信息。為初始化會話,發(fā)送完整的頭。除此之外,當接收器確定有分組丟失時(通過序號增加超過1檢測到)接收器明確地請求發(fā)送器發(fā)送完整的頭以便使得能夠重新同步。
但是,在RFC2508中定義的頭壓縮不很適合于某些環(huán)境(如蜂窩或無線環(huán)境),其中帶寬非常珍貴并且錯誤很常見。在RFC2508頭壓縮方案中,假設RTP時間戳大部分時間都是線性增長模式。當頭符合該模式時,基本上在壓縮的頭中僅需要一個短序號。當頭不符合該模式時,在壓縮頭中發(fā)送當前頭和前一個頭的時間戳之間的差異。通過使用編碼表可能實現(xiàn)進一步優(yōu)化。這個方法有三個缺點。第一個是其對錯誤不健壯,因為前一個頭的丟失會使當前頭的解壓縮無效。第二個是RTP時間戳差異或跳躍會非常大,因此會溢出編碼查找表。例如,如果介質(zhì)是語音,則無聲間隔可引起這樣大的差異。第三個是結(jié)果編碼的差異大小是變化的,使得更難預測和管理要分配的帶寬。
因此,需要一種能夠容納域的值中(如RTP時間戳的值中)任意跳躍,產(chǎn)生更一致或固定的大小,并且對錯誤更健壯的頭壓縮方案。
發(fā)明概述根據(jù)本發(fā)明的實施方案,提供了基于定時器的頭解壓縮技術(shù)。RTP源生成頭域,如RTP時間戳。時間戳通過網(wǎng)絡發(fā)送到壓縮器。在壓縮器中,使用減少抖動功能(JRF)來確定接收的時間戳(頭)的抖動是否過多。如果抖動過多,則丟棄分組。否則,壓縮器基于RTP時間戳以及時間戳的初始值來計算壓縮的頭域(壓縮的時間戳)。壓縮的時間戳表示計算為源和解壓縮器之間的網(wǎng)絡在分組傳輸上的影響的抖動。計算的抖動是表示源和壓縮器之間的網(wǎng)絡在分組傳輸上的影響的網(wǎng)絡抖動以及表示壓縮器和解壓縮器之間的網(wǎng)絡在分組傳輸上的影響的無線電抖動的累積。應該指出,這里使用的術(shù)語“網(wǎng)絡”是一個廣義的術(shù)語,因此不應該排除,例如,無線電信網(wǎng)中的無線電鏈路。這樣,包括壓縮時間戳的RTP分組通過鏈路或網(wǎng)絡發(fā)送到解壓縮器。
解壓縮器通過首先基于位于終端的定時器的當前值(也就是,基于流逝的時間)來計算時間戳的估計值或近似值來解壓縮壓縮的時間戳。然后基于分組頭中提供的壓縮時間戳來改進或改正時間戳的近似值。照這樣,基于本地定時器和當前頭中提供的壓縮時間戳來重新生成當前分組(頭)的時間戳。然后將分組和重新生成的時間戳提供給RTP端點處理。
本發(fā)明基于定時器的方案包括幾個優(yōu)點。這里使用的術(shù)語“基于定時器的方案”包括使用壓縮的時間戳的基于定時器方案以及在這里公開的基于定時器和參考的方案。壓縮的時間戳的大小(或其它頭域)是固定的并且很小。而且,其大小不作為無聲間隔的長度的函數(shù)而變化。在RTP源的定時器過程(生成時間戳)和解壓縮器的定時器過程之間不需要同步。而且,這個技術(shù)對錯誤很健壯,因為在壓縮頭中的部分時間戳信息是自包含的并且只需要與解壓縮器定時器值相結(jié)合來生成完整的RTP時間戳值。頭的丟失或錯誤不會使后續(xù)的壓縮頭失效。
本發(fā)明的第二個實施例提供了一種頭剝離方案,其中頭(如包括RTP時間戳)在發(fā)送前從RTP分組中剝離或去掉。頭剝離器以及頭生成器通過類似電路連接(如電路或虛擬電路)或基本恒定比特速率的信道連接。在初始化之后,頭剝離器從每個分組中剝離或去掉頭(包括去掉時間戳和序號),并且然后將無頭的分組發(fā)送到頭重新生成器。為消除在頭剝離器處的分組抖動,分組可按照頭中的RTP時間戳(TS)按時間間隔發(fā)送。因此,在這個實施方案中,在RTP分組中沒有明確地提供時間戳(也沒有壓縮的時間戳)。而是,基于頭剝離器和重新生成器之間的基本固定比特率信道來隱含地為頭重新生成器提供定時信息??梢砸詭追N不同方式提供基本固定比特率信道。
在這第二個實施方案中,初始化發(fā)生之后(例如,為頭重新生成器提供初始序號和時間戳),頭重新生成器可以通過每T毫秒使本地時間戳計數(shù)器增加TS_stride來為后續(xù)分組重新生成時間戳,并且通過每個分組持續(xù)時間使本地SN計數(shù)器增加1來重新生成分組序號。因為在頭剝離器和重新生成器之間提供基本固定的比特率信道,其中沒有引入分組抖動,所以這些域可僅基于本地時鐘或計數(shù)器重新生成。因此,在初始化之后,這些頭域可僅參考本地時鐘在頭重新生成器中重新生成。
但是,會出現(xiàn)一個或多個基本的不連續(xù)事件(如分組大小改變或TS_stride,時間戳中的非線性偏移等),如果不解決,很可能使僅依賴于本地定時器或時鐘來進行域重新生成的頭剝離方法失效。頭串是一系列具有已知或線性可預測域的分組頭。通過幾個不連續(xù)事件的任何一個可導致從一個串到另一個的轉(zhuǎn)變。當這發(fā)生時,頭剝離器識別不連續(xù)事件并且將與事件相關(guān)的更新的頭信息發(fā)送到頭重新生成器,以便使時間戳和序號重新生成繼續(xù)。當有切換時,也可使用一種提供更新的頭信息的類似技術(shù)。
附圖簡述結(jié)合附圖的下列詳細描述將使本發(fā)明更顯而易見。
圖1是說明根據(jù)本發(fā)明的示例實施方案的一個系統(tǒng)的框圖;圖2是說明根據(jù)本發(fā)明的實施方案RTP分組的未壓縮格式的圖;圖3是說明根據(jù)本發(fā)明的示例實施方案未壓縮的RTP頭格式的圖;
圖4是說明根據(jù)本發(fā)明的示例實施方案壓縮的RTP頭格式的圖;圖5是說明根據(jù)本發(fā)明的實施方案頭壓縮和解壓縮的示例操作的圖;圖6是說明根據(jù)本發(fā)明的另一個實施方案頭壓縮和解壓縮的示例操作的圖;圖7是說明根據(jù)本發(fā)明的實施方案切換的示例操作的圖;圖8是說明根據(jù)本發(fā)明的示例實施方案的示例堆棧的框圖;圖9是說明根據(jù)本發(fā)明的示例實施方案在消息中提供的信息的表;圖10是說明根據(jù)本發(fā)明的示例實施方案的切換過程的圖;圖11是說明根據(jù)本發(fā)明的示例實施方案帶內(nèi)初始化過程的圖;圖12是說明根據(jù)本發(fā)明的示例實施方案帶外初始化過程的圖;圖13是說明根據(jù)本發(fā)明的第一種方法計算網(wǎng)絡抖動的步驟的圖;圖14是說明根據(jù)提出作為本發(fā)明的選項1的第二種方法計算網(wǎng)絡抖動的步驟的圖;圖15是說明根據(jù)提出作為本發(fā)明的選項2的第三種方法計算網(wǎng)絡抖動的步驟的圖;實現(xiàn)本發(fā)明的最佳模式I.利用壓縮時間戳的基于定時器的方案A.結(jié)構(gòu)圖1是說明根據(jù)本發(fā)明的示例實施方案的一個系統(tǒng)的框圖。終端102連接到IP網(wǎng)絡108上。終端102可以是運行RTP/UDP/IP,并且提供RTP分組中分組語音采樣用于在網(wǎng)絡110上發(fā)送的個人計算機等。終端102包括識別這個終端(如,包括IP地址、端口號等)是RTP分組的源還是目的地的RTP端點104。提供IP網(wǎng)絡作為例子,但是,也可以替代使用其他類型的分組交換網(wǎng)等。應該指出這里使用的術(shù)語“網(wǎng)絡”意指一個廣義的術(shù)語,因此不排除,如無線電信網(wǎng)中的無線電鏈路。終端102也包括用于生成時間戳的本地定時器103。
接入網(wǎng)基礎結(jié)構(gòu)(ANI)110連接到IP網(wǎng)絡108。無線終端130通過射頻(RF)鏈路140耦合到ANI 110。無線終端130如這里所描述的,例如,依賴于其環(huán)境可以是無線壓縮器或無線解壓縮器。當分組的源或分組的目的地與無線終端130分離時尤其出現(xiàn)這種情況。RF鏈路140包括上行鏈路142(從終端130到ANI 110)和下行鏈路144(從ANI 110到終端130)。ANI 110將區(qū)域中的一個或多個無線(或射頻)終端(包括終端130)接口到IP網(wǎng)絡108,包括有線信號(從IP網(wǎng)絡提供)和無線或RF信號(提供給終端130或從中提供)之間的轉(zhuǎn)換。因此,ANI 110使得從IP網(wǎng)108接收的RTP分組能夠在RF鏈路140上發(fā)送到無線終端130,并且使得來自終端130的RTP分組能夠在IP網(wǎng)絡108上發(fā)送到另一個終端,如終端102。
根據(jù)本發(fā)明的實施方案,ANI 110包括一個或多個ANI適配器(ANI_AD),如ANI_AD 112和ANI_AD 114,其中每個優(yōu)選地包括一個定時器。每個ANI_AD執(zhí)行頭壓縮(在下行鏈路傳輸之前)和解壓縮(在上行鏈路傳輸之后)。從IP網(wǎng)絡108接收的RTP分組的頭(或者一個或多個頭域,如時間戳)在下行鏈路142上發(fā)送到終端130之前由ANI_AD 112壓縮,并且從終端130接收的分組頭在發(fā)送到IP網(wǎng)絡108之前由ANI_AD 112解壓縮。因此,每個ANI_AD被認為是壓縮器/解壓縮器115。每個ANI_AD將位于區(qū)域內(nèi)一個特定或不同范圍的終端接口到IP網(wǎng)絡108。ANI_AD 112包括用于實現(xiàn)基于定時器的解壓縮技術(shù)的定時器113。ANI_AD 112還包括抖動減少功能(JRF)115,其運行來測量在網(wǎng)絡108上接收的分組(或頭)上的抖動并且丟棄具有過多抖動的任何分組/頭。
額外的ANI,如ANI 120,提供用來將位于額外的區(qū)域內(nèi)的其他終端接口到IP網(wǎng)絡108。ANI 120類似地包括一個或多個ANI_AD,如ANI_AD 122(圖1)。每個ANI_AD包括一個定時器和一個JRF。
終端130包括RTP端點132,其是RTP分組的源和/或目的地(接收器)。終端130包括執(zhí)行頭壓縮(對于要在上行鏈路142發(fā)送的分組)和解壓縮(在下行鏈路144上接收的分組上)的終端適配器(term AD)136。因此,終端適配器(term_AD)136被認為是頭壓縮器/解壓縮器137,類似于ANI_AD。
終端適配器(term_AD)136還包括用于計算當前頭的RTP時間戳的近似值(或估計值)的定時器134(接收器定時器)。然后終端適配器(term_AD)136使用RTP頭中的附加信息來改進或改正時間戳的近似值。根據(jù)本發(fā)明的實施方案,基于RTP頭中提供的壓縮時間戳來改進或調(diào)整時間戳的近似值。照這樣,可使用本地定時器和壓縮的時間戳來為每個RTP頭重新生成正確的時間戳??商峁┢渌K端(如終端150),每個包括其自己的RTP端點、終端適配器和定時器。
圖1中所示的配置僅提供作為例子,并且本發(fā)明不限于此。更確切的,圖1僅提供了一個例子,其中RTP數(shù)據(jù)在帶寬非常寶貴并且錯誤并非不常見的數(shù)據(jù)鏈路或系統(tǒng)(如無線鏈路140)上發(fā)送。本發(fā)明不限于無線鏈路,而是適合于廣泛的各種鏈路(包括有線鏈路等)。
其中基于定時器的頭壓縮和解壓縮方案的一個示例應用或系統(tǒng)是在蜂窩系統(tǒng)上傳輸VoIP(或IP電話)分組。當VoIP應用于蜂窩系統(tǒng)時,因為無線或空中(RF)接口的有限帶寬,最小化IP/UDP/RTP頭的開銷很重要。在這樣的系統(tǒng)中,例如,ANI_AD將IP網(wǎng)接口到運行IP/UDP/RTP并且具有用于接收無線或RF鏈路上的RTP分組的蜂窩或RF接口的計算機終端(如終端130)上。這僅僅是本發(fā)明的壓縮/解壓縮技術(shù)的一個示例應用。
圖2是說明根據(jù)本發(fā)明的實施方案的RTP分組的未壓縮格式的圖。如圖2所示,未壓縮的RTP分組包括IP頭、UDP頭212、RTP頭214以及可以是語音采樣的有效載荷216。
圖3是說明根據(jù)本發(fā)明的一個示例實施方案的未壓縮RTP頭格式的圖。如圖3所示,未壓縮的RTP頭包括時間戳(TS)310、序號(S.N.)312以及一些其他域314。因IP網(wǎng)108的分組交換特性,RTP分組會失序到達。在RTP接收器或RTP目的地(例如圖1,終端130)使用序號312來按正確的順序組裝RTP語音采樣。但是,RTP分組中的序號不反映域中任何非線性的改變(例如,語音信號的無聲間隔)。因此,提供時間戳(TS)310來指示每個分組的相對定時。
如上所指,有每個RTP分組中IP/UDP/RTP頭提供的40-60字節(jié)的頭開銷太大了的擔心。特別地,對于在低速率或有限帶寬鏈路(如鏈路140)上運行的RTP分組來說4字節(jié)RTP時間戳特別難以負擔。結(jié)果,需要一種機制來有效地壓縮RTP頭并且特別是壓縮RTP頭中的時間戳域。
在RFC2508中描述的頭壓縮技術(shù)初始地發(fā)送一個完整(未壓縮)的RTP分組,包括到RTP目的地/接收器的所有的域。在連接期間頭的許多域是靜態(tài)的,并且因此,不需要在初始分組發(fā)送和接收之后發(fā)送。對于大多數(shù)分組,從分組到分組只有序號和時間戳改變。根據(jù)RFC2508,在接收器通過在存儲在接收器的那些域的以前值中加入(固定的)一階差分來更新非靜態(tài)域(例如,時間戳和序號)。例如,對于每個分組每個接收的RTP分組的序號自動加1。非靜態(tài)域中的額外跳躍或改變(也就是與一階差分不同的)必須單獨發(fā)送到接收器。不幸的是,在RFC2508中,前面頭的丟失將使接收器中的解壓縮無效。而且,差異的大小是變化的,使得利用RFC2508的壓縮技術(shù)很難管理和預測帶寬。
根據(jù)本發(fā)明的實施方案,提供了一種頭壓縮技術(shù)可用于更有效地壓縮分組頭的RTP時間戳(或其它域)。根據(jù)本發(fā)明的實施方案,壓縮方案可適合RTP時間戳值中的任意跳躍,而生成一個固定大小的壓縮的RTP頭(或固定大小的RTP時間戳)。
圖4是說明根據(jù)本發(fā)明的示例實施方案的壓縮RTP頭格式。如圖4所示,壓縮的RTP頭由指示消息類型的消息類型410、識別改變的域的位屏蔽412、以及壓縮時間戳域414組成。如果在分組頭中提供壓縮的時間戳,則消息類型410指示壓縮的時間戳。根據(jù)本發(fā)明的實施方案,壓縮的時間戳域414包括指示分組之間時間流逝的值的k個最低有效位(lsbs)。根據(jù)本發(fā)明的實施方案,壓縮的時間戳域414提供源計數(shù)器值(或計數(shù)器差值)的一部分(也就是k個最低有效位)。源計數(shù)器用于為每個RTP分組頭生成時間戳??蛇x域416可用于為在位屏蔽412中識別的那些域提供更新的或改變的域。
B.時間戳壓縮和解壓縮的整體操作根據(jù)本發(fā)明的實施方案,將簡要描述RTP時間戳的壓縮和解壓縮。根據(jù)實施方案,在RTP端點(如終端102的RTP端點104)生成RTP分組并且尋址到另一個RTP端點。在這個例子中,RTP端點104是要發(fā)送到終端130的RTP端點132(目的地)的一個或多個RTP分組的源。RTP分組頭包括基于時鐘在RTP源(例如終端102)生成的時間戳。
RTP分組在IP網(wǎng)絡108上路由到ANI 110的ANI_AD 112。ANI_AD 112壓縮RTP分組的頭(多個頭)中的一個或多個域。特別地,ANI_AD將RTP時間戳310(圖3)壓縮到壓縮的時間戳414(圖4)中。頭中的其它域通過去掉它們或使用一些其它技術(shù)壓縮。然后包括壓縮時間戳414的RTP分組在RF鏈路140的下行鏈路144上發(fā)送到終端130。
一接收到帶壓縮頭(也就是壓縮的時間戳414)的RTP分組,終端130的終端適配器(term_AD)136就解壓縮時間戳值。終端適配器136通過首先基于定時器134的當前值計算時間戳的估計值或近似值來解壓縮壓縮的時間戳414。然后基于分組頭中提供的壓縮的時間戳414來改進或改正時間戳的近似值。照這樣,基于本地定時器(定時器134)以及當前頭中提供的壓縮時間戳來重新生成當前分組(頭)的時間戳。分組頭的其它域(如序號)也重新生成。然后分組和重新生成的時間戳提供給RTP端點132來處理。然后RTP端點132按適當?shù)捻樞?如由序號確定的)以及由重新生成的時間戳規(guī)定的適當?shù)亩〞r(例如,說明任何無聲間隔)重放語音采樣。
ANI_AD 112還在RF鏈路140上接收壓縮頭(包括壓縮時間戳),并且利用上述基于定時器的解壓縮技術(shù)解壓縮時間戳。因此,ANI_AD112典型地包括定時器以便使ANI_AD能夠解壓縮上述壓縮的時間戳。類似的,終端130的term_AD 136還在RTP分組在RF鏈路140上發(fā)送到ANI 110之前壓縮RTP分組的時間戳。為簡化本發(fā)明的示例實施方案的解釋,主要描述將針對下行鏈路144。根據(jù)本發(fā)明的實施方案,RTP分組在兩個方向上發(fā)送(上行鏈路142和下行鏈路144)。因此,ANI 110的ANI_AD 112和終端130的term_AD作為時間戳壓縮器(對于在RF鏈路上頭/分組的發(fā)送)和解壓縮器(在RF鏈路140上接收的壓縮頭的接收之后)操作。
C.時間戳壓縮和解壓縮的示例實施方案將簡要描述時間戳壓縮和解壓縮的示例實施方案。假設RTP分組中的數(shù)據(jù)是語音數(shù)據(jù)。定義下列變量和公式僅用于輔助解釋本發(fā)明的一些特性,但是本發(fā)明不限于此。而且,本發(fā)明不限于使用相同或類似類型變量的系統(tǒng),并且不限于執(zhí)行下述特定計算的系統(tǒng)。變量和計算僅提供作為本發(fā)明的示例實施方案。
T-RTP語音采樣之間的時間間隔。(如果每個RTP分組中提供一個語音采樣,則T也是RTP分組頭之間的間隔。)TS-時間戳TS_stride-每T毫秒RTP時間戳增加TS_stride。換句話說,對于每個新的RTP分組,RTP時間戳增加TS_stride。TS_stride是一個依賴于語音編解碼器的常量(例如,100)。TS_stride提供給接收器(終端130)和ANI_AD 112。
TS0-在RTP接收器接收的會話的第一個頭的RTP時間戳。會話的第一個頭被認為是同步頭,因為其用于同步。TS0是在會話開始提供給壓縮器(例如,ANI_AD 112)和解壓縮器(如term_AD 136)的RTP時間戳的初始值(用于同步)。根據(jù)實施方案,通過接收帶有未壓縮頭的RTP分組(包括提供TS0的未壓縮時間戳)初始化或同步ANI_AD和term_AD。根據(jù)本發(fā)明的實施方案,基于定時器的解壓縮技術(shù)要求在壓縮頭可以被正確解壓縮(也就是因此解壓縮器可以正確地重新生成時間戳)之前為時間戳壓縮器(也就是ANI_AD 112)和解壓縮器(也就是term_AD 136)提供初始時間戳TS0(例如通過未壓縮的初始或同步頭)。
分組頭m的RTP時間戳(在時間m*T毫秒時生成)=TS0+TS_stride*m。這假設對于每個語音采樣有一個頭。如下述示例所示,對于每個分組頭多個語音采樣(例如3個語音采樣)的情況可以擴展這個公式。
m-指示已經(jīng)發(fā)送的語音采樣的數(shù)量的整數(shù)。在會話開始時m被重新設置或清除為0。M正比于(或指示)會話開始以來流逝的時間量。每T毫秒m增加1。
TS_current=TS0+m_current*TS_stride;當前分組頭的當前時間戳。
接收器定時器-在RTP接收器(或RTP目的地)處的定時器,如終端130的定時器134。本地接收器定時器典型地自由運行并且在會話開始時不重置。而是,當先前一個分組頭接收時通過從接收器定時器值中減去當前頭的定時器值可以獲得在RTP接收器處接收兩個分組頭之間流逝的時間。通過允許接收器定時器自由運行,一個接收器定時器可由許多流或會話共享。替代地,接收器定時器可在每個會話開始時重置。在會話開始時(也就是,一接收到初始化頭)重置或清除接收器定時器需要每個會話或流有一個專用接收器定時器(定時器過程)。在初始化頭中會話的第一個未壓縮的時間戳(TS0)可提供給ANI_AD和term_AD。提供第一個頭來初始化壓縮器(ANI_AD 112)和解壓縮器(term_AD 136)。然后每T毫秒接收器定時器增加1。ANI_AD 112(壓縮器)使用TS0值來壓縮后續(xù)RTP分組頭的時間戳。term_AD 136(解壓縮器)使用TS0值來解壓縮壓縮的時間戳值(例如,來重新生成后續(xù)接收的RTP頭中的時間戳)。
current_timer-當接收當前頭時在RTP接收器(例如終端130)中的定時器值last_timer-當接收最后一個頭時在接收器處的時間值。(current_timer存儲為last_timer用于時間戳的下一個頭的計算)。
m_last-最后接收的頭的m值;m指示從初始化頭以來流逝的語音幀的數(shù)量。
為壓縮當前分組的時間戳,ANI_AD 112計算m的當前值如下m_current=(TS_current-TS0)/TS_stride。因此,ANI_AD從當前時間戳中減去時間戳的初始值(在會話開始時)。這個差值除以時間戳跨度值(TS_stride)。但是,在有些實施方案中,不必要實際執(zhí)行除法操作。可使用其它技術(shù)來恰當?shù)厣蒻_current,而不需要執(zhí)行需要高處理器系統(tǒng)開銷的除法操作。
然后提供m_current的K個最低有效位作為壓縮的時間戳414。然后包括壓縮的時間戳414的RTP分組在RF鏈路140上發(fā)送到RTP目的地或接收器(例如終端130)。
在RTP接收器(例如,終端130),終端適配器(Term_AD)136解壓縮壓縮的時間戳414。前一個頭的current_timer值首先存儲為last_timer。然后,當當前頭到達時,term_AD 136讀取接收器定時器134的值并且將其作為current_timer存儲在存儲器中。接著,計算timer_diff為timer_diff=current_timer-last_timer。ANI_AD通過找到整數(shù)d計算m_current的確切值,其中(-L/2<d≤L/2,其中L=2k)因此(等式1)(d+m_last+timer_diff)的k個最低有效位=壓縮時間戳414(對于當前頭)。
(等式2)如指出的,接收的壓縮時間戳也是k位。一旦利用等式1和2計算出d,然后TS_current就可計算為TS_current=TS0+(d+m_last+timer_diff)*TS_stride。
(等式3)
在等式3中,m_current的實際或正確值顯示在圓括號中為(d+m_last+timer_diff)。m_last+timer是m_current的近似值,而d是m_current的近似值和m_current的正確值之間的差值。而且,TS0+(m_last+timer_diff)*TS_stride是當前時間戳值的近似值,并且d*TS_stride是近似的當前時間戳值和當前時間戳的實際(或正確)值之間的差值。
因此,可以看出RTP接收器首先基于當前頭和(正確地解壓縮的)前一個頭的接收之間流逝的時間來計算當前時間戳的近似值(或估計值)為近似的當前時間戳=TS0+(m_last+timer_diff)*TS_stride。然后由d*TS_stride的數(shù)量來調(diào)整或改正近似的當前時間戳以便計算正確的當前時間戳值(TS_current)。
TS_current計算之后,當前RTP分組(包括其重新生成的或解壓縮的時間戳,TS_current)提供給RTP端點132。這個壓縮和解壓縮的過程對RTP端點是透明的。
圖5是說明根據(jù)本發(fā)明的實施方案頭壓縮和解壓縮的示例操作的圖。這個例子應用上述的一些特定公式來說明本發(fā)明的一些特性。在這個示例實施方案中,假設在RTP源502和在RTP接收器504處的定時器具有相同的頻率但是典型地不同步。在RTP源的定時器(例如,每T毫秒增加1)用于生成時間戳,而在RTP接收器的定時器(例如定時器134)用于重新生成或解壓縮RTP時間戳。
參見圖5,在會話開始時,在RTP源生成初始化頭508,包括初始時間戳值(TS0)。初始化頭508發(fā)送到ANI并且然后轉(zhuǎn)發(fā)到RTP接收器504(例如終端130)。初始化頭中的時間戳沒有壓縮。一接收到初始化值,初始時間戳值(TS0)就和TS_stride一起存儲在ANI_AD的存儲器中。根據(jù)一個實施方案,兩個初始化頭發(fā)送到ANI_AD。然后ANI_AD可計算TS_stride為第二個時間戳-第一個時間戳。Term_AD可類似地計算TS_stride或接收分組中的值。
類似地,當在RTP接收器(終端130)接收到初始化頭508時,初始時間戳(TS0)和TS_stride一起存儲在存儲器中。而且,一接收510到初始化頭508(圖5),m_current就清除或重置為零(0),并且然后讀取接收器定時器并存儲為initial_receiver_timer 516。代替在會話開始時讀取定時器,接收器定時器可重置或清除。在這個例子中,為簡單起見在會話開始時讀取的接收器定時器值恰好為零(0)。因此,因為在會話開始時自由運行的定時器讀取為零,所以圖5所示的例子可應用于兩個實施方案(只讀取接收器定時器,或?qū)⑵渲刂脼榱?。同樣,清除m_current沒有必要,但是可以替代地記錄m_current的值。此后每T毫秒接收器定時器增加(例如,1)(與在RTP源502處用于生成時間戳的定時器相同的頻率)。初始化頭508在固定延遲(整塊(bulk)延遲512)和變化的延遲(累積抖動514)之后到達RTP接收器502。
接著,RTP源502生成下一個RTP分組(初始化頭之后的會話的第一個RTP分組)。這個RTP分組在初始化頭生成之后3*T毫秒生成,并且因此典型地包括例如三個(3)語音采樣。其它數(shù)字也可能。因此,這個分組的頭的時間戳是TS(1)=TS0+3*TS_stride,如圖5所示。TS(1)指在初始化后3T毫秒之后生成的時間戳。在這個例子中,假設TS_stride是例如100。TS0假設為例如0。因此,TS(1)=300。
這個分組的時間戳值TS(1)在ANI_AD接收并且基于TS(1)(時間戳值)、TS0(初始化時間戳值)和TS_stride(每T毫秒時間戳增加的量)來壓縮。根據(jù)一個示例實施方案,壓縮的時間戳可以計算為m_current的k個最低有效位。ANI_AD 112計算m的當前值為m_current=(TS_current-TS0)/TS_stride。在這個例子中,假設TS_stride為例如100。在這個例子中,m_current計算為m_current=(300-0)/100=3。在這個例子中k為二(2)。因此,m_current(二進制為11)的兩個最低有效位提供作為圖5的這個分組的壓縮時間戳414(CTS1)。
壓縮時間戳(CTS1)到達RTP接收器502并且在RTP接收器的term_AD 136為當前分組重新生成或解壓縮時間戳TS(1)。current_timer的值(0)存儲為last_timer并且m_current存儲為m_last。m_current以前在會話開始時(也就是接收到同步頭時)設置為零。接收器定時器值(在這種情況下為3)讀取并且存儲為current_timer。然后Timer_diff計算為current_timer-last_timer,為3-0=3。Timer_diff+m_last是m_current的近似值。
接著term_AD 136利用等式(1)和(2)計算m_current的確切或正確值。利用等式(2),(d+m_last+timer_diff)的兩個最低有效位=CTS1(當前頭的壓縮時間戳)。在這種情況下,m_last是零(0),timer_diff是三(3)并且CTS1是三(3)。因此,(d+0+3)的兩個最低有效位=3。因此,d等于零。
利用等式(3),然后這個分組的解壓縮時間戳計算為TS(1)=TS0+(d+m_last+timer_diff)*TS_stride。因此,作為結(jié)果,TS(1)=0+(0+0+3)*100=300。然后這個分組的解壓縮時間戳,TS(1)=300,與RTP數(shù)據(jù)以及其它解壓縮的頭域一起提供給RTP源的RTP端點132。m_current的正確或?qū)嶋H值是(d+m_last+timer_diff)。因此,對于這個分組,可以看出m_current的近似值與m_current的正確值相同(但是在一般情況下不是這樣)。然后m_current更新為3。
下一個分組和時間戳在RTP源生成,包括時間戳TS(2)=0+6*100=600。在ANI_AD,TS(2)=600壓縮到壓縮的時間戳中作為(600-0)/100=6的2個最低有效位。在這種情況下,6以二進制表示為110。因此,110的兩個最低有效位為10。因此,以二進制表示CTS2=10。
然后因整塊延遲和累積抖動,在接收器定時器到達值7之后,在term_AD 136接收到這個分組的壓縮時間戳(CTS2)。current_timer(3)的值存儲為last_timer并且m_current(3)存儲為m_last。當前接收器定時器值(在這種情況下為7)讀取并且存儲為current_timer。然后Timer_diff計算為current_timer-last_imer,即7-3=4。Timer_diff+m_last是m_current的近似值,為7。
接著,term_AD 136利用等式(1)和(2)計算m_current的確切值或正確值。利用等式(2),(d+m_last+timer_diff)的兩個最低有效位=CTS2(當前頭的壓縮時間戳)。在這種情況下,m_last為3,timer_diff為4并且CTS2為10(二進制,十進制為3)。等式2為d解答如下2 lsbs(d+3+4)=2。7以二進制表示為111。因此,d=-1。d是m_current的近似值和m_current的實際值之間的差值。將d插入等式(3),這個分組的時間戳計算為TS(2)=0+(-1+3+4)*100=600。因此RTP接收器的term_AD 136基于本地定時器和壓縮的時間戳正確地重新生成了(例如解壓縮)RTP時間戳。
應該指出,不象前面的技術(shù),在一個或多個分組沒有到達RTP接收器的情況下沒有必要重新發(fā)送初始化頭。換句話說,RTP源和接收器之間的同步僅在會話或連接開始時需要一次。這是因為,在RTP接收器基于m_last和timer_diff來計算當前時間戳。Timer_diff計算為current_timer-last_timer。因此,m_last和last_timer的值對應于最后分組,而不管哪個分組最后接收(例如,不管在“最后”分組發(fā)送之后的分組被錯誤地丟棄或丟失)。結(jié)果,根據(jù)本發(fā)明的基于定時器的壓縮方案對錯誤健壯并且因為在檢測到錯誤(例如一個或多個分組丟棄或丟失)的情況下不需要發(fā)送新的同步分組(例如包括所有頭的完整的未壓縮值),減少了帶寬需要。
在正常操作中,m_current的近似值和確切值之間的差異由下列引起a)RTP時間戳和接收器的源之間的累積抖動;實際延遲=整塊延遲+累積抖動,其中整塊延遲是固定的并且累積抖動從一個頭到下一個而變化,并且0≤累積抖動≤最大累積抖動;以及b)依賴于定時器實現(xiàn),定時器過程和解壓縮過程之間的可能的異步。因為異步,定時器值(current_timer)中可能出現(xiàn)加或減1(+或-1)的錯誤。
圖6是說明根據(jù)本發(fā)明的另一個實施方案的頭壓縮和解壓縮的示例操作的圖。與圖5類似,圖6是說明抖動和定時器異步的影響的圖。在圖5中,接收器定時器僅在會話開始時重置或清除。(因為接收器定時器允許繼續(xù)運行,因此這一點是不必要的。)但是,在圖6所示的示例實施方案中,對于每個分組接收器定時器被重置或清除為零(0)。因此,當接收到壓縮的分組頭時,讀取定時器值,其指示上述的timer_diff值(因為定時器指示自從上一個分組頭之后流逝的時間)。有許多不同的方法來實現(xiàn)本發(fā)明。重要的是應該測量指示最后成功解壓縮時間戳和當前時間戳之間流逝的時間的定時器差值(圖5中描述的timer_diff)(如由本地接收器定時器測量)。
參見圖6,頭n用時間戳=TS0+3*TS_stride生成。頭n的這個時間戳被壓縮并且發(fā)送到RTP接收器,并且解壓縮。然后在接收器的定時器重置。接下來的頭,(n+1)、(n+2)以及(n+3)生成并且發(fā)送,但是僅接收到頭(n+3)(也就是頭n+1和n+2丟失)。為簡單起見,頭(n+2)和(n+3)在圖6中未示出。頭(n+1)在圖6中顯示為頭m+n。頭(m+n)與時間戳TS=TS0+6*TS_stride一起生成并且發(fā)送。頭(m+n)的這個時間戳被壓縮然后發(fā)送到RTP接收器。定時器值是4(指示timer_diff)。這個值用于為頭(m+n)的時間戳解壓縮。因此,圖6的例子非常類似于圖5所示的例子,除了在圖6中定時器在接收每個頭后重置。
不管使用的哪種技術(shù)(圖5或圖6),可使用有效的基于定時器的壓縮方案。但是,累積抖動過多,將不可能基于壓縮的時間戳來重新生成正確的時間戳。在許多情況下,k必須滿足下列條件以便使得圖5和/或圖6所示的基于定時器的壓縮方案正確工作[條件1](最大整數(shù)抖動+2)<2k,其中最大整數(shù)抖動(MIJ)是以T毫秒為單位表示的最大累積抖動,四舍五入為下一個更高的整數(shù)。例如,如果T=20毫秒,15毫秒的最大累積抖動導致MIJ=1。2加到MIJ中以便考慮定時器異步引起的可能的錯誤。
因為會話的實時需求,在正常操作中累積抖動僅是幾次T毫秒。因此,在這種情況下,k值等于4足夠了,因為在RTP接收器可以改正多達16個語音采樣(也就是16*T毫秒)差異。異?;蝈e誤的情況會導致抖動超過正常值。壓縮器的上行比特流中可以加入抖動減少實體以便確保抖動,如壓縮器所看到的,保持在可接受的限度之內(nèi)。
圖5和/或6中所示的時間戳壓縮方案的優(yōu)點包括a)時間戳的大小是固定的并且很小。壓縮頭典型的由指示消息類型的消息類型(k1比特)、指示哪個域在改變的位屏蔽,以及包含m_current的k個最低有效位的域(k比特)組成。假設如在RFC2508中使用相同的4位MSTI位屏蔽,并且k1=4,當僅RTP TS改變時(這種情況是最常見的)壓縮頭的大小是1.5字節(jié)。而且,這個大小不作為無聲間隔長度的函數(shù)而改變。b)如圖6中所示,接收器定時器與RTP源定時器在相同的頻率運行(用于生成原始時間戳);不需要源定時器和接收器定時器之間的相位同步(因為是測量的接收器定時器的時間流逝用于重新生成時間戳)。c)在接收器,在定時器過程和解壓縮過程之間不需要同步。例如定時器過程每T毫秒使定時器增加1,而當接收到新的頭時喚醒解壓縮過程執(zhí)行解壓縮。但是,不要求定時器增加的點與頭接收的點相一致或同步(參見圖6)。d)因為壓縮頭中的部分RTP TS信息是自包含的并且僅需要與接收器的定時器相結(jié)合來生成完整的RTP TS值,所以對錯誤有健壯性。頭的丟失或破壞不會使后續(xù)的壓縮頭無效。e)壓縮器不需要為RTP TS壓縮/解壓縮的目的維護或存儲存儲器或值。
D.切換根據(jù)實施方案,每個ANI_AD被分配到一個特定區(qū)域(例如,位于特定區(qū)域中的接口終端)。終端(如終端130)可以從一個區(qū)域移動到另一個區(qū)域。當終端從一個區(qū)域移動到另一個區(qū)域時,終端必須從一個ANI_AD切換或轉(zhuǎn)換到另一個ANI_AD。
需要考慮的切換的一種情況是ANI_AD間切換,其中從舊的ANI_AD轉(zhuǎn)換到新的ANI_AD會導致中斷。問題是在切換期間怎樣維持信息的連續(xù)性以便在切換后,在term_AD 136和新的ANI_AD的壓縮/解壓縮沒有中斷的繼續(xù)。
1、下行鏈路在作為終端(例如,圖1的終端130)的接收器端沒有不連續(xù)性。壓縮器的角色是從一個ANI_AD傳送到另一個。在切換之后,頭在新的路徑上通過新的ANI_AD代替舊的ANI_AD路由。除此之外,依賴于系統(tǒng)設計,在切換期間可能需要或不需要重新路由轉(zhuǎn)變中的分組。轉(zhuǎn)變中的分組是那些由源生成的但是在切換時還沒有到達接收端的分組。重新路由試圖將轉(zhuǎn)變中的分組發(fā)送到終端。
為執(zhí)行切換,舊的ANI_AD必須將會話的時間戳的初始值(TS0)以及TS_stride傳送到新的ANI_AD。這兩個值使得新的ANI_AD能夠繼續(xù)壓縮從RTP源(例如終端102)接收到的新的時間戳(在新的分組頭中)。使Current_header成為term_AD在切換之后解壓縮的第一個頭,并且其TS_current是其RTP時間戳。只要滿足下列條件,term_AD可解壓縮TS_current[條件2](下行鏈路瞬時整數(shù)抖動+2)<2k,其中下行鏈路瞬時整數(shù)抖動(DTIJ)是以T毫秒為單位表示的current_header的下行鏈路瞬時抖動,四舍五入到下一個更高的整數(shù)。下行鏈路瞬時抖動定義為=Current_header的全部延遲-舊路徑上的整塊延遲。如果Current_header不是重路由轉(zhuǎn)換中分組的頭,則Current_header的全部延遲也是新路徑上的整塊延遲+新路徑上Current_header的累積抖動。因此,下行鏈路瞬時抖動=新路徑上的整塊延遲-舊路徑上的整塊延遲+Current_header的累積抖動。
如果Current_header是重路由轉(zhuǎn)換中分組的頭,則Current_header的全部延遲=由路由和重新路由引起的全部延遲。實際上,系統(tǒng)應該優(yōu)選地設計為將下行鏈路瞬時抖動保持為與穩(wěn)定狀態(tài)(也就是沒有切換)的累積抖動相同的值范圍。因此,基于這些假設(并不總是適用),如果條件1(上面指出的)滿足,則對于下行鏈路沒有特定的切換相關(guān)的問題。
2、上行鏈路在這個上行鏈路描述中,終端(例如終端130)的term_AD 136壓縮時間戳并且將其在RF鏈路140上發(fā)送到本地或?qū)腁NI_AD。在這種情況下RTP源是終端130。即使RTP源(終端130)改變物理位置(要求在ANI_AD切換),接收器的(解壓縮器的)角色從一個ANI_AD轉(zhuǎn)換到另一個。RTP源保持固定在終端(如圖1,終端130)上。
圖7是說明根據(jù)本發(fā)明的實施方案切換的示例操作的圖。為最小化空中接口的系統(tǒng)開銷,有些信息需要從舊的ANI_AD 710傳送到新的ANI_AD 712用于切換。該信息是在舊ANI_AD處的定時器值。舊的ANI_AD 710讀取(或獲得快照)舊ANI_AD處定時器的當前值(T_u)并且將其與TS0、TS_stride以及m_current、塊714(圖7)一起發(fā)送到新的ANI_AD。新的ANI_AD恢復從(T_u)開始增加其定時器。使T_transfer 715(圖7)成為傳送定時器的時間。而且,舊的和新的ANI_AD處的定時器過程有最多T毫秒的相位差異。使Current_header成為切換之后由新的ANI_AD解壓縮的第一個頭,并且TS_current成為其RTP時間戳。只要滿足下列條件,新的ANI_AD就可以解壓縮TS_current[條件3](上行鏈路瞬時整數(shù)抖動+2+1)<2k,其中上行鏈路瞬時整數(shù)抖動(UTIJ)是以T毫秒為單位表示的上行鏈路抖動,四舍五入到下一個更高的整數(shù)。上行鏈路瞬時抖動定義為=Current_header的全部延遲-舊路徑上的整塊延遲+T_transfer。因為Current_header的全部延遲=新路徑上的整塊延遲+Current_header的累積抖動,所以上行鏈路瞬時抖動=新路徑上的整塊延遲-舊路徑上的整塊延遲+Current_header的累積抖動+T_transfer。與下行鏈路相比,考慮到舊ANI_AD定時器和新ANI_AD定時器之間的相位差值而要增加1。
明確的,圖7還說明了上行鏈路瞬時抖動,其包括整塊延遲差值以及T_transfer。在這個例子中,舊的ANI_AD決定在定時器增加定時器之前準備切換。因此,其向ANI_AD 712發(fā)送T_u=0。T_transfer大約是T毫秒。在新的ANI_AD 712,因定時器過程的異步,在定時器獲得增加前幾乎有T毫秒流逝。對頭(n+m)在新路徑上還有累積抖動。結(jié)果,當接收到頭(n+m)時讀取的定時器值是2,而實際值應該是4。因此,有-2的偏差。只要滿足條件3,偏差可以消除并且RTP時間戳可以正確地被解壓縮。
根據(jù)一個實施方案,T_u在連接舊的和新的ANI_AD的高速信令網(wǎng)上發(fā)送。因此,時間T_transfer應該至多只是很小的T毫秒。但是,必須考慮T_u的傳送不成功,或不夠及時的情況。在那些情況下,新的ANI_AD將通知term_AD發(fā)送完整(未壓縮)的RTP時間戳直到接收到確認。
E、抖動減少根據(jù)本發(fā)明的實施方案,在滿足下列條件時可以預測使用壓縮的時間戳和本地接收器定時器的基于定時器的壓縮方案。
(最大整數(shù)抖動+2)<2k,[條件2](下行鏈路瞬時整數(shù)抖動+2)<2k,[條件3](上行鏈路瞬時整數(shù)抖動+2+1)<2k。
因會話實時的要求,可以合理的期望上述各種抖動與正常操作中的幾個T毫秒的相似。因此,k的一個很小的值,例如4通常足夠使任何偏差或錯誤得到糾正。但是,從RTP源到接收器的路徑上存在異常情況(失敗等)或其它情況,其中抖動變得過多(其中不能基于壓縮的時間戳和本地接收器定時器來生成正確的時間戳)。為解決這些情況,可提供抖動減少功能(JRF)115(圖1)作為壓縮器的前端,來過濾出(或丟棄)具有過多抖動的分組(例如,上述條件1,2或3中的任何一個不滿足時)。
為篩選出或識別具有過多MIJ的分組,抖動減少功能(JRF)計算在網(wǎng)絡108上接收的每個分組的抖動。如果測量的分組抖動大于2k-2,則認為是過度抖動并且丟棄分組。否則,壓縮(如上所述)頭(或頭域)并且然后發(fā)送到接收器終端(例如終端130)。
JRF計算當前分組的抖動如下抖動=(TS2-TS1-JRF timer_diff)的絕對值,其中TS2是當前分組的時間戳,TS1是前一個分組的時間戳,并且JRF timer_diff是當前分組和前一個分組之間JRF_timer的差值(流逝的時間)。這個抖動值可與2k-2相比。如果抖動大于2k-2,則丟棄分組。否則,在ANI_AD壓縮分組頭并且?guī)в袎嚎s頭的分組發(fā)送到RTP接收器。
這個抖動減少功能(JRF)115是限制由接收器終端接收的分組上的抖動的一種有效技術(shù)(因為在RF鏈路上引入的抖動被認為是可以忽略的)。而且,JRF運行以便更有效地利用RF鏈路140上的可用帶寬。在沒有JRF 115的情況下,具有大于2k-2的抖動的一個或多個分組會通過RF鏈路140發(fā)送到RTP接收器。但是,在接收器,如果抖動過多(也就是不滿足條件1),則不能生成正確的時間戳值,導致接收器丟棄分組。因此,JRF僅運行來過濾出具有過多抖動在接收器處無論如何將被丟棄的那些分組(避免鏈路140上有價值帶寬的浪費)。
H、頭剝離方案本發(fā)明的第二個實施方案提供基于定時器的頭剝離方案,其中頭或者一個或多個頭域(例如,包括RTP時間戳)在經(jīng)過低帶寬鏈路(例如經(jīng)過圖1的RF鏈路140)發(fā)送之前從RTP分組中剝離。在這種情況下,在RTP分組中沒有明確地提供時間戳。而是,定時信息隱含地提供給頭重新生成器用于基于頭剝離器(例如,存在在ANI_AD中)和頭重新生成器(例如,在終端130中存在)之間的基本固定比特率信道或類似電路的連接來增加本地定時器。
A、頭剝離概述頭剝離基于這樣的思想,即對于某些應用或業(yè)務,不需要傳輸包含在IP/UDP/RTP頭中的所有信息,或者因為其不變化,或者因為其對應用/業(yè)務不必要?;菊Z音是一個典型的例子。為了提供一種等價于已有的蜂窩語音業(yè)務的業(yè)務(例如,通過圖1的RF鏈路140),必須的唯一的變化頭信息是RTP時間戳(TS)。還要求保持RTP序號(SN)的透明。這里透明(對于SN)指剝離/重新生成之后的SN等于原始的SN。頭剝離依賴于由類似電路的連接或基本固定比特率的信道(其中沒有引入分組抖動)提供的暗示的定時信息以便僅基于本地定時器或計數(shù)器來重新生成RTP時間戳。這消除了明確地發(fā)送時間戳(或者甚至是發(fā)送壓縮的時間戳)的需要。為獲得SN的透明,壓縮的SN可與來自類似電路的信道或連接的定時信息結(jié)合使用。類似電路的連接優(yōu)選地提供具有基本固定比特率的信道。當沒有語音采樣(例如無聲間隔)時,信道可能會或不會分配給其它業(yè)務和/或用戶。
這種頭剝離方案的優(yōu)點包括a)最低的頭系統(tǒng)開銷,任何其它方案無法相比(甚至小于上述圖1-6中的壓縮頭技術(shù))。b)對錯誤的健壯性,因為來自類似電路的傳輸或基本固定比特率信道的定時信息固有地不受錯誤影響c)如果需要時在通話期間轉(zhuǎn)換到頭壓縮的可能性(例如,圖1-6的技術(shù))。如果通話變成多媒體時,因為非語音介質(zhì)添加到語音中,所以這會非常有用。而且,注意頭剝離不托管或排除統(tǒng)計復用,其如果實施,可在較低層出現(xiàn)。
圖8是說明根據(jù)本發(fā)明的示例實施方案的示例堆棧的框圖。顯示了頭剝離器堆棧802和頭重新生成器堆棧830。作為例子,頭剝離器堆棧802說明用于從分組上剝離一個或多個頭域的一些組件,而頭重新生成器堆棧830說明用于重新生成分組頭的一些組件。頭剝離器堆棧802可以在例如一種類型的ANI適配器(例如,圖1,ANI_AD 112)中提供,而頭重新生成器堆棧830可存在于例如,一種類型的終端適配器(例如,圖1,term_AD 136)中。
參見圖8,頭剝離器堆棧802包括RTP和UDP層804、IP層806。RTP/UDP/IP層生成RTP分組808(其包括RTP頭中的時間戳)。接著,在頭剝離器堆棧802,RTP分組808提供給頭剝離器(HS)810用于剝離或去除一個或多個頭或頭域。提供層L1和L2 812,其中例如,L2是數(shù)據(jù)鏈路層并且L1是物理層。按需要可提供其它層。類似地,頭重新生成器堆棧830包括相應的L1層和L2層820,重新生成頭(包括RTP時間戳)以便提供完整的RTP分組824(包括RTP/UDP/IP頭)的頭重新生成器(HR)822。分組824提供給IP層826并且然后提供給UDP和RTP層828。頭剝離器堆棧802和頭重新生成器堆棧830的層L1和L2通過鏈路815或空中接口(如RF鏈路140)或通過網(wǎng)絡進行通信。例如,VoIP分組在鏈路815(例如,無線鏈路或網(wǎng)絡)上發(fā)送之前通過頭剝離器810傳送。在接收端(在頭重新生成器堆棧830),頭重新生成器822在遞交到接收者之前重新生成頭。層L1/L2提供類似電路的連接,也就是提供頭剝離器810和頭重新生成器822之間的基本固定比特率信道。除此之外,為了最大效率,除了優(yōu)化的信道編碼和交織之外,層L1還執(zhí)行類似不均勻比特保護的話音有效負荷優(yōu)化。注意頭剝離的概念不管有效負荷優(yōu)化是否進行都是適用的。
在操作中,頭剝離器(HS)810消除了進入RTP分組中的抖動,并且根據(jù)頭中的RTP時間戳(TS)將其回放。這里,消除抖動意味著根據(jù)時間戳在類似電路的連接或基本固定比特率信道上調(diào)度語音采樣的發(fā)送。換句話說,分組在去除或剝離頭之后,在類似電路的信道或基本固定的比特率信道上在基于分組中其時間戳的時間發(fā)送。利用例如抖動減少功能(JRF 115,圖1)丟棄具有過多抖動的分組。頭重新生成器(HR)822重新構(gòu)建IP/UDP/RTP域,其可分為以下幾類a)靜態(tài)在會話期間值不改變,例如IP地址。
b)非靜態(tài)從一個分組到另一個分組值原則上改變,但是實際上,對于語音,在頭剝離期間需要保留的唯一的非靜態(tài)域是RTP時間戳(TS)。RTP序號(SN)也保留。靜態(tài)域可以轉(zhuǎn)換一次并且對于所有的在會話開始時作為初始化階段完整頭的一部分。可使用可靠的發(fā)送機制(例如,利用來自RTP接收器的確認或肯定應答來確認初始化信息的接收)。將簡單討論時間戳和序號。
1、RTP時間戳(TS)在語音的情況下,RTP時間戳(TS)作為在RTP源的壁鐘(也就是源定時器)的函數(shù)線性增加。如果連續(xù)語音采樣之間的時間間隔是T毫秒,則頭n的RTP時間戳(在時間n*T毫秒生成)=頭0的RTP時間戳(在時間0生成)+TS_stride*n,其中TS_stride和T是依賴于語音編解碼器的常數(shù)。如果每個話音(語音)采樣一個分組則也是這樣。更一般地,RTP時間戳(TS)是TS0+m*TS_stride的形式,其中TS0<TS_stride并且m是整數(shù)。在抖動消除之后在頭剝離器(HS)可以看到相同的行為。
在會話或連接開始時,執(zhí)行初始化過程來初始化RTP接收器(也就是,初始化頭重新生成器)。在初始化階段,頭剝離器一直發(fā)送初始化信息(Init_info)直到從接收器接收到肯定應答。Init_info(n)基本上由完整的IP/UDP/RTP頭n(包括初始時間戳和序號)組成。RTP序號用于識別這個特定的初始化頭,因為后續(xù)的初始化頭包括更大的序號(假設第一個初始化頭沒有被確認)。
在頭重新生成器(HR)822,當正確地接收到Init_info(n)時,HR 822發(fā)送ack(n)。一旦頭重新生成器(HR)822確認完整頭,HS 810就停止發(fā)送完整頭。HR 822還啟動一個初始化為在Init_info(n)中接收的RTP時間戳的本地時間戳計數(shù)器。TS計數(shù)器類似于圖1中的接收器定時器,但是TS計數(shù)器每T毫秒增加TS_stride(而不是1,但是其與接收器定時器原理相同)。對于后續(xù)剝離的語音幀(也就是已經(jīng)剝離或去掉頭的RTP分組),RTP TS從時間戳(TS)計數(shù)器重新生成。接收器定時器(TS定時器)與在RTP源處使用的時鐘或定時器(也就是源定時器)有相同的頻率以便生成時間戳。而且,類似電路的連接提供基本固定比特率,并且因此,分組延遲從分組到分組不變化或改變。結(jié)果,因基本固定的比特率信道而沒有分組抖動。因此,在RTP接收器接收包括初始化時間戳值(TS0)的初始化信息之后,RTP接收器可僅基于時間戳計數(shù)器(或接收器定時器)來為每個后續(xù)分組(在初始化之后)重新生成正確的時間戳。
在頭剝離器810和頭重新生成器822之間提供的基本固定比特率信道僅需要在預定的時間周期內(nèi)在頭剝離器810和頭重新生成器822之間提供預定比特數(shù),但是這個功能可執(zhí)行各種不同的方式。例如,信道可以是專用于剝離器810和重新生成器822的固定比特率信道或者在幾個用戶之間共享。信道可提供,例如每毫秒一比特,或提供每100毫秒100比特,但是在100毫秒周期內(nèi)數(shù)據(jù)速率可能不固定(也就是是變化的)。作為額外的例子,信道可通過在頭剝離器和頭重新生成器之間的一個或多個數(shù)據(jù)字符組提供預定數(shù)量的比特。例如,信道可每10毫秒提供1000比特的組塊或字符組。因此,基本固定比特率信道只需要在預定時間周期提供預定數(shù)量的比特,但是可利用不同的技術(shù)實現(xiàn)這一點。
2、RTP序號(SN)RTP SN(如由HS 810看到的)從一個分組到另一個一般增加1。唯一的例外是當分組丟失或失序時。在上行鏈路中,因為頭剝離器(HS)810和RTP源彼此非常接近,所以一般不會發(fā)生分組丟失或失序。因此,下列應用于下行鏈路。HS 810在剝離分組頭之前進行有限的緩存來試圖對分組重新排序。帶有RTP SN n的分組如果在具有RTP SN(n+1)的分組的頭被剝離時仍沒有接收到,則認為丟失。帶有RTP SN m的分組如果在其接收時,帶有RTP SN k的分組的頭已經(jīng)剝離,并且k>m,則認為失序。重排序緩存的長度是設計參數(shù)。緩存太長會導致過大的延遲,而緩存太短會導致太多丟棄的分組。該參數(shù)還依賴于IP網(wǎng)108提供的HS 810的上行比特流的質(zhì)量。HR 822維護一個作為其SN最佳估計值的SN計數(shù)器。通過觀察Init_info,HR822可獲得初始SN以及已知為分組大小(p_size)的分組中包含的比特數(shù)。HR 822用Init_info中的SN初始化SN計數(shù)器。然后HR 822“計數(shù)”基本固定比特率信道上接收的語音比特并且對于語音的每p_size個比特使SN計數(shù)器增加1(當沒有接收分組時例如無聲間隔時不增加)。根據(jù)實施方案,HR 822實際上不計數(shù)接收的比特。而是,每個分組持續(xù)時間在HR 822處SN計數(shù)器加1,其中分組持續(xù)時間是接收比特(p_bits)分組需要的時間。因此,分組持續(xù)時間是分組大小(p_size)和比特率(在類似電路的連接上固定)的函數(shù)。
因此,可以看出在初始化發(fā)生之后(向HR 822提供初始化SN和TS),HR 822通過每T毫秒將TS計數(shù)器增加TS_stride,以及通過每個分組持續(xù)時間將SN計數(shù)器加1可為后續(xù)分組生成時間戳。因此,在初始化之后,這些域可以僅參考本地時鐘(假設HR 822已知TS_stride和分組持續(xù)時間)在HR 822重新生成。SN計數(shù)器基于時間(分組持續(xù)時間)而不是基于實際到達比特的計數(shù)來增加對錯誤更健壯。如果在到達HR 822之前丟失一個或多個比特,則SN計數(shù)器將反映真實值并且將不受丟失比特的影響。
B、不連續(xù)性和串上述描述指示TS和SN在通過鏈路(例如RF鏈路140)傳輸之前可由HS 810完全剝離,并且然后由維護本地時鐘或定時器(例如,每T毫秒增加TS計數(shù)器TS_stride并且每個分組持續(xù)時間使SN計數(shù)器加1)的HR 822重新生成。但是,會出現(xiàn)一個或多個基本不連續(xù)事件,如果不解決,很可能使上述基于定時器的重新生成方法無效。一些不連續(xù)事件包括a)“新突發(fā)”事件分組n和n+1之間TS差值的瞬時改變(新談話突發(fā)開始);這也可以描述為時間戳(TS)的非線性改變或偏移。
b)“大小改變”事件由分組中封裝的語音幀的數(shù)量和/或語音幀大小的改變引起的RTP分組大小(p_size)的改變。
c)“跨度改變”事件TS_stride的改變(例如,由有效負荷類型PT引起的)。
我們定義頭串為一系列分組頭因此所有的分組大小相同(p_size),序號連續(xù),也就是n、(n+1)、(n+2)等,并且連續(xù)分組的時間戳(TS)以相同的增量TS_stride分隔。換句話說,頭串被認為是具有共有的一些分組域(例如分組大小)的一串頭,以及經(jīng)過連續(xù)分組線性增加的其它域,如SN和TS。一串通常是一個談話突發(fā)(例如,無聲間隔之間提供的一系列語音采樣)。
由任何不連續(xù)事件,單一地或甚至是組合地導致從一個串到另一個串的轉(zhuǎn)變。在這個方案中,當一個串開始時(并且前一個串已經(jīng)結(jié)束),HS 810確定發(fā)生了哪個不連續(xù)事件,并且相應地向HR 822發(fā)送需要的串初始化(string_init)信息。
圖9是說明根據(jù)本發(fā)明的示例實施方案在消息中提供的信息的表。Init_info典型地包括一個完整的頭(包括完整的SN和TS),并且在會話開始時從HS 810發(fā)送到HR 822(以便初始化HR 822)。在繼續(xù)發(fā)送無頭的數(shù)據(jù)分組之前,HS 810繼續(xù)重新發(fā)送init_info直到接收到來自HR 822的確認。之后,可能出現(xiàn)一個或多個串,要求從一個串到另一個串變化的域或者值的額外更新。這些改變的值利用string_init提供給HR 822。
String_init包括p_size值(如果它從前一個串以來已經(jīng)變化),以及TS_stride值(如果它從前一個串以來已經(jīng)變化)。如果從一個串到另一個串TS沒有非線性偏移發(fā)生,則HR 822可以基于在舊串中使用的TS計數(shù)器來繼續(xù)重新生成TS。但是,如果在串之間時間戳(TS)中有非線性偏移發(fā)生(也就是,丟失定時),則更新的時間戳必須在string_init中明確地從HS 810發(fā)送到HR 822。只要滿足上述條件1,更新的TS就可作為上述壓縮的時間戳414(見圖4)發(fā)送。否則,如果不滿足條件1,則必須向HR 822發(fā)送完整的更新時間戳。
在確認模式,在HS 810向HR 822發(fā)送string_init之后,在HS 810可以向HR 822進一步發(fā)送數(shù)據(jù)分組(無頭分組)之前,HS 810要求HR 822確認(或肯定應答)更新的串信息(string_init)的接收。在確認或肯定應答模式,HS 810重復地向HR 822發(fā)送string_init直到HS 810從HR 822接收string_init消息的肯定應答為止。在從HR 822接收到肯定應答之后,然后HS 810將串的剩余分組作為剝離頭的分組發(fā)送(因為新串分組的TS和SN現(xiàn)在可以僅利用本地時鐘或定時器重新生成)。對string_init的肯定應答要求(在確認模式)禁止HS 810在不通知HR 822的情況下發(fā)送新串。例如,如果HS 810發(fā)送新的string_init消息(例如,提供與不連續(xù)事件相關(guān)的更新域或信息)而HS 810和HR 822之間的鏈路臨時中斷,則HS 810不能繼續(xù)發(fā)送頭剝離的分組直到先接收來自HR 822的肯定應答為止。
一旦HS 810確信HR 822已經(jīng)接收string_init信息,然后在剩余串沒有頭的情況下發(fā)送語音幀(例如,數(shù)據(jù)分組)。對于這些無頭的幀,利用在HR 822處的本地時鐘重新生成TS和SN。
HS 810可以確定下列事件a)“新突發(fā)”事件SN=n的分組和SN=(n+1)的分組之間的TS差值與TS_stride不同。這意味著新串或談話突發(fā)的開始。在這種情況下,為確保SN同步,string_init由SN或壓縮的SN(C_SN)組成。如果沒有SN信息要發(fā)送,則HR 822不能確定每個分組持續(xù)時間SN計數(shù)器加1能給出準確的SN。這是因為已經(jīng)有一個鏈路斷開,期間HS 810和HR之間的語音比特丟失。
b)“大小改變”事件SN=n的RTP分組的大小與以前接收的分組不同;這將影響分組持續(xù)時間的值(SN計數(shù)器增加的速率)。String_init包括新的p_size值。
c)“跨度改變”事件由分析RTP分組中的有效負荷(PT)域確定;String_init包括新的TS_stride值。
這些不連續(xù)事件僅提供作為例子??赡艹霈F(xiàn)其它類型的不連續(xù)事件。
事件可以組合發(fā)生(復合事件)。在那種情況下,string_init包括來自相應基本事件的所有信息。例如,如果“新突發(fā)”與“大小改變”一起發(fā)生,string_init={C_SN,新p_size值}C、發(fā)送init_info、string_init的過程init_info通常在肯定應答模式發(fā)送,由此HS 810發(fā)送init_info直到HR 822肯定應答為止。String_init可在肯定應答或不肯定應答模式發(fā)送。在肯定應答模式,HS 810在每個分組發(fā)送string_init直到HR 822肯定應答為止。一旦接收到肯定應答,HS 810對于剩余串僅發(fā)送語音比特,沒有任何頭。在不肯定應答模式,HS 810在僅為剩余串發(fā)送語音比特之前發(fā)送string_init一定(預定)的次數(shù)。優(yōu)選地,string_init在串期間可以以一定的間隔重復以確保HR 822同步(例如,有正確的值)。
包括“大小改變”或“跨度改變”基本事件的混合事件典型地要求在肯定應答模式發(fā)送string_init。在那種情況下,string_init攜帶一個代號。代號是一個無論何時p_size或TS_stride改變都增加的計數(shù)器。其用于p_size或TS_stride快速接連改變的情況,以便跟蹤哪個改變已經(jīng)由HR 822肯定應答。例如,如果p_size從值p_size_0變?yōu)閜_size_1,然后再變?yōu)閜_size_2,則HS 810將發(fā)送帶有代號例如為3的包含p_size_1的string_init,然后隨后發(fā)送帶有代號4的包含p_size_2的string_init。如果不攜帶肯定應答的string_init的代號,則跟著第二個string_init的肯定應答的接收是不明確的。如果混合事件僅是“新突發(fā)”,則String_init(C_SN)可在肯定應答或不肯定應答模式發(fā)送。不肯定應答基于C_SN至少在每個談話突發(fā)開始時會重復的思想。因此HR 822永不與其SN重新同步的可能性漸進地小。除此之外,如果SN失去同步,則僅是由HS 810和HR 822之間的分組丟失引起。因此,SN失去同步的影響是重新生成的SN<正確的SN。這只是一個瞬時的不一致,通過下一個C_SN一接收到就使SN增加差值來糾正。SN增加超過1將由接收RTP端點解釋為分組丟失(多個丟失),并且一般不影響接收分組本身的回放。不肯定應答模式也允許分配一個信道以穩(wěn)定狀態(tài)攜帶肯定應答,也就是在呼叫建立之后和切換之間。
D、切換當在站終端可以從一個網(wǎng)絡適配器(ANI_AD)移動到另一個的蜂窩系統(tǒng)或其它系統(tǒng)中應用頭剝離/重新生成時,應該考慮切換或移交。
切換可以模型化為經(jīng)過三個階段切換準備、切換執(zhí)行和切換完成。有稱為切換(HO)管理器的功能(在ANI 110中提供)來決定開始切換準備。傳統(tǒng)地,切換準備由與目標系統(tǒng)交換信令消息以便保留目標系統(tǒng)中的資源以及獲得目標小區(qū)必要的信息組成。通過源HO管理器向接收器終端(或移動站)發(fā)送HO命令以及關(guān)于目標小區(qū)的信息來啟動切換執(zhí)行。響應HO命令,終端(或移動站)執(zhí)行切換。切換完成包括在終端或移動站和目標系統(tǒng)之間的信令交換,通知源,以及釋放不再需要的資源(例如在源處)。
1、上行鏈路ANI_AD對于上行鏈路數(shù)據(jù)傳輸(見圖1,上行鏈路142)擔當HR 822。必須為目的ANI_AD提供必要的信息以便重新生成完整的頭。主要限制包括在切換(HO)期間RTP TS和RTP SN的連續(xù)性。
圖10是說明根據(jù)本發(fā)明的示例實施方案切換過程的圖。終端130(或移動站MS)作為例子,在步驟902利用string_init消息通知源ANI_AD 112分組大小已經(jīng)改變。源ANI_AD 112在步驟904將這個改變確認到p_size。隨后,終端130移動到目標AN_IAD 114覆蓋的新的區(qū)域,并且HO管理器901在步驟906通知源ANI_AD準備切換(移交)。然后源ANI_AD在步驟908向目的ANI_AD 114發(fā)送一個HO_initialization(HO_init_u)信息。HO_init_u是完整IP/UDP/RTP頭的估計視圖。估計視圖由最后重新生成的頭組成,但是RTP TS替換為TS0_u、m_last_u、TS_stride_u、以及TS值Timer_u。這些值與TS_last有關(guān),最后重新生成頭的RTP TS如下TS_last=TS0_u+m_last_u*TS_stride_u。TS Timer_u是在源ANI_AD處的計數(shù)器,每T毫秒增加1。除此之外,HO_init_u包括p_size_u(上行鏈路方向的分組的當前大小)。目標ANI_AD從HO_init_u中得出靜態(tài)域,以及改變域(RTP TS和RTP SN)的近似初始值。在步驟910切換命令從HO管理器901發(fā)送到終端130(移動站),導致終端130轉(zhuǎn)換并且現(xiàn)在使用目標ANI_AD進行通信。但是,因為可使用其它技術(shù)啟動切換,所以HO管理器不是必須的。
切換被認為中斷了任何進行中的串。因此,在切換完成之后,要發(fā)送的第一個語音采樣總是類似新串來處理,在步驟912其要求發(fā)送初始化信息(HO_sync_u)。有三個重要的時間點HO準備開始的ST1,MS接收HO命令的ST2,以及源ANI_AD取得HO_init_u中要發(fā)送的其內(nèi)部信息的快照的時間ST3。使HOT成為從ST1到ST2流逝的時間。根據(jù)系統(tǒng)設計,HOT有一個上限HOT<HOT_max。第四個重要的時間點是ST4當終端130在HO之后想要恢復在目標系統(tǒng)中發(fā)送語音時的第一時間。在ST4,終端130(MS)確定到時間ST2-HOT_max,p_sizE_u最近的改變是否已經(jīng)確認。如果是,則終端確定HO_ini_u包含p_size_u的最新值。因此,不需要在HO_sync_u中包括它。這是因為時間點的順序是ST1<ST3<ST2。否則,終端130(MS)將在HO_sync_u中包括新的p_size_u值。相同的算法適用于TS_stride_u。
在所有情況下,HO_sync_u包括C_SN。需要C_SN是因為有HO引起的中斷。如果在源和目標系統(tǒng)中的比特率、分組持續(xù)時間等不同步,則需要C_TS。很可能是這種情況。HO_sync_u優(yōu)選地在肯定應答模式下發(fā)送。
目標ANI_AD 114使用HO_init_u和HO_sync_u來重新生成下列完整頭。除了TS和SN之外的所有域都從HO_init_u拷貝。通過解壓縮HO_sync_u中的C_SN獲得SN。通過解壓縮HO_sync_u中的C_TS確定TS。
2、下行鏈路HS角色從一個ANI_AD轉(zhuǎn)變?yōu)榱硪粋€。在移交之后,頭在新的路徑上通過新的ANI_AD代替舊的ANI_AD路由。結(jié)果,在終端130(MS)處在RTP_TS重新生成的定時中有不連續(xù)。
為處理上行鏈路的切換,當HO管理器決定開始切換準備時,其通知源ANI_AD。然后源ANI_AD向目標ANI_AD發(fā)送HO_initialization(HO_init_d)信息。HO_init_d由p_size_d和TS_stride_d組成,這些和其代號一起是MS最后確認的值。當目標ANI_AD在HO之后想要發(fā)送語音的第一時間,目標ANI_AD必須發(fā)送HO_sync_d。HO_sync_d由C_TS和C_SN組成。如果新的p_size與p_size_d不同,則HO_sync_d還包括新的p_size值。如果不是,則HO_sync_d只包括p_size_d的代號。MS使用代號來取回正確的p_size。這假設MS將p_size的最后幾個值與其代號一起保持在存儲器中。相同的算法適用于TS_stride。直到MS_AD肯定應答之后才發(fā)送HO_init_d。HO_sync_d在肯定應答模式發(fā)送。切換過程在圖2中描述。顯示的情況是p_size_u最近的改變在不遲于時間ST2-HOT_max已經(jīng)確認。
E、發(fā)送消息上述每個信息可以在帶內(nèi)或帶外發(fā)送。在帶內(nèi)方法中,信息通過竊取最低有效語音位在語音信道上發(fā)送。在帶外方法中,建立專用瞬時信道并且在接收到肯定應答時拆除。帶內(nèi)和帶外的組合也有可能,由此試圖用帶外方法,但是如果沒有資源用于瞬時信道則帶內(nèi)方法是后退的解決方案。確認可在帶內(nèi)發(fā)送,或在其自身專用肯定應答信道上帶外發(fā)送,或在其它專用瞬時信道(TIC)等上捎帶確認地帶外發(fā)送。
1、帶內(nèi)不管類似電路的語音信道如何實現(xiàn),其可以模型化為每T毫秒傳輸B比特。如果S是比特計的語音幀的大小,則S≤B。通過想象的語音編解碼器,Init_info預計大于S。因此Init_info不能在單一語音幀的空間里發(fā)送。但是,有一個因數(shù)R>=1,以致(R-1)*S<H≤R*S。通過將其分割為B比特的塊并且每T毫秒發(fā)送一個塊可以在類似電路的信道上發(fā)送Init_info(n)。一個完整的頭將消耗R個連續(xù)語音采樣的空間。圖11是說明根據(jù)本發(fā)明的示例實施方案帶內(nèi)初始化的圖。如果有連續(xù)的語音活動,則發(fā)送的Init_info是Init_info(0)、Init_info(R)、Init_info(2R)等,直到接收到肯定應答為止。在圖11,這些Init_info消息顯示為Init_tnfo 500和Init_info 502。頭剝離器肯定應答Init_info 500,但不是在HS 810發(fā)送第二個Init_info分組502之前。下一個分組504作為分組有效負荷504(沒有頭)從HS 810發(fā)送到HR 822。然后HR 822重新生成SN和TS以及其它頭域。
Init_info(0)代替語音采樣0、1、...、(R-1),Init_info(R)代替語音采樣R、(R+1)、...、(2R-1)等。如果有不連續(xù)的語音活動,假定頭0跟隨有L*T毫秒的無聲間隔,則重復Init_info(0)其它信息(string_init、HO_syne_u、Ack),大小都小于S,因此其適合于語音幀的空間。其竊取最低有效語音比特。為簡單起見,分析不考慮信道編碼引起的擴展,但是有或沒有信道擴展該概念都是合法的。圖3中顯示帶內(nèi)情況的初始化過程。
2、帶外圖12是說明根據(jù)本發(fā)明的示例實施方案帶外初始化的圖。在帶外方法中,建立具有合適帶寬的單獨信道以便正好與在語音信道上傳送的語音同時傳送Init_info。單獨的信道稱為瞬時初始化信道(TIC)。系統(tǒng)試圖為TIC分配足夠的帶寬以便能夠每T毫秒發(fā)送一次完整的頭。TIC設計為與語音信道有固定的定時關(guān)系。
通過分配瞬時確認信道(TAC)確認可在帶外發(fā)送,或者帶外發(fā)送,但是在前向瞬時信道上捎帶確認。HO_syne_u可在瞬時上行鏈路切換同步信道(TUHOSC)上帶外發(fā)送。當HO_sync_u肯定應答時,拆除TUHOSC。相同的方法應用于使用瞬時下行鏈路切換同步信道(TDHOSC)的HO_sync_d上。
3、失敗的情況有到切換執(zhí)行完成時目標ANI_AD還沒有HO_init的情況。原因包括在兩個ANI_AD之間的信令網(wǎng)上過多的延遲,需要快速執(zhí)行切換等。在那些情況下,網(wǎng)絡向MS發(fā)送通知,其然后象在通話開始時一樣重新開始初始化過程。
4、P_size和TS_stride是固定的常見情況P_size和TS_stride是固定的情況到目前為止對于語音是最常見的。在這種情況下,P_size和TS_stride可能改變引起的任何考慮都不適用。普遍的方案是簡化的。不需要HO_init_d。HO_sync_d和HO_sync_u僅攜帶C_SN和C_TS。String_init攜帶C_SN。僅當從一個串到另一個串有定時改變時才攜帶C_TS。終端(MS)不需要在存儲器中保持p_size和TS_stride的最近幾個值。在HO的情況下,終端(MS)不需要確定是否在HO_sync_u中包括p_size。
如上所述,IP/UDP/RTP頭中對于基本語音必須的唯一信息是靜態(tài)域,并且RTP時間戳(TS)以及RTP序號(SN)也非常值得要。這里描述的方案對這些信息域?qū)崿F(xiàn)了透明,并且提供有利的頭系統(tǒng)開銷壓縮效率。在切換中保持了所有靜態(tài)和非靜態(tài)域的連續(xù)。因為帶內(nèi)以及帶外方法是可能的,所以帶寬管理也變得更簡單。因為對RTP TS和RTP SN保持了透明,因此甚至可以在這里描述的頭剝離方案和頭壓縮方案之間來回轉(zhuǎn)換以保持對所有域的透明。例如當在語音中加入另一個介質(zhì)時需要轉(zhuǎn)換到頭壓縮。
III、基于定時器和參考的方案A、基于定時器和參考的方案概述基于定時器和參考的方案是基于這樣的觀察(1)RTP時間戳當在RTP源處生成時與分組之間流逝時間的線性函數(shù)相關(guān),以及(2)RTP TS是TS0+index*TS_stride的形式,其中TS0和TS_stride是固定的,并且index是整數(shù)(在下文中index稱為壓縮的RTP TS)。
因此,在正常操作中,在解壓縮器接收的RTP時間戳也是與連續(xù)增加的定時器,與僅由源和解壓縮器之間的累積抖動生成的失真相關(guān)的。因為累積抖動包括“網(wǎng)絡”抖動(源和解壓縮器之間的抖動)和“無線電”抖動(壓縮器和解壓縮器之間的抖動),所以壓縮器通過將無線電抖動的上界加到觀察的網(wǎng)絡抖動中可計算出累積抖動的上界。然后壓縮器只發(fā)送壓縮的RTP TS的“k”個最低有效位作為壓縮的RTP TS。解壓縮器通過首先計算近似值,并且然后用壓縮的RTPTS中的信息改進近似值以便確定準確值來解壓縮RTP TS。通過將與自從接收到前一個解壓縮頭以來流逝的時間成正比的值加到前面解壓縮的頭的RTP TS中來獲得近似值。RTP TS的確切值確定為與近似值最接近的一個值,其相應的壓縮RTP TS的k個最低有效位與壓縮的RTP TS相匹配。壓縮器選擇k值作為使得解壓縮器能夠基于累積抖動的上限正確解壓縮的最小值。
B、語音的情況首先,將關(guān)于語音描述基于定時器和參考的方案。作為例子,如果連續(xù)語音采樣之間的時間間隔是20毫秒,則頭n的RTP時間戳(在時間n*20毫秒生成)=頭0的RTP時間戳(在時間0生成)+TS_stride*n,其中TS_stride是依賴于語音編解碼器的常數(shù)。因此,進入解壓縮器的頭中的RTP TS也遵循作為時間的函數(shù)的線性模式,但是因源和解壓縮器之間的延遲抖動,不是很接近。在正常運行時(沒有崩潰或失敗),延遲抖動限制于滿足會話實時業(yè)務的要求。
在這個方案中,接收器利用定時器獲得當前頭(要壓縮的那個)的RTP TS的近似值,然后用從壓縮的頭中獲得的額外信息來改進近似值。
例如,假設如下Last_header是最后成功解壓縮的頭,其中TS_last是最后的RTPTS,并且p_TS_last是最后壓縮的RTP TS(在接收器);T是兩個連續(xù)語音采樣之間的正常時間間隔;TS_stride是每T毫秒的RTP TS增加值;Current_header是要解壓縮的當前分組的頭,其中TS_current是當前RTP TS,并且p_TS_current是當前壓縮的RTP TS;RFH是壓縮器接收到其肯定應答的頭的序號,其中TS_RFH是RTP TS,并且p_TS_RFH是壓縮的RTP TS;定時器是每T毫秒增加的定時器,其中壓縮器和解壓縮器每個都維護一個自己的定時器,分別稱為S_timer和R_timer;T_RFH是RFH被接收到時定時器的值,并且T_current是當Current_header被接收到時相同定時器的值;以及N_jitter(n,m)是觀察的與頭m相關(guān)的頭n(頭n在頭m之后接收)的網(wǎng)絡抖動,其中N_jitter(n,m)由壓縮器計算如下N_jitter(n,m)=Timer(n,m)-(頭n的壓縮的RTP TS-頭m的壓縮的RTP TS),其中Timer(n,m)是從頭m到頭n流逝的時間,以T毫秒為單位表示。N_jitter(n,m)可以是正的或負的。在壓縮器的N_jitter是網(wǎng)絡抖動,量化為T毫秒為單位。
R_jitter(n,m)是由壓縮器預測的與頭m相關(guān)的頭n的無線電抖動。R_jitter僅依賴于壓縮器-解壓縮器信道(CD-CC)的特性。R_jitter不需要精確計算,對于R_jitter有一個好的上界就足夠了。例如,上界可以是Max-radio_jitter,如果已知,是在CD-CC上的最大抖動。
因此,根據(jù)上述,分組的累積抖動計算為網(wǎng)絡抖動和無線抖動的和而且,RTP TS計算如下RTP TS=TS0+index*TS_stride,
其中TS0<TS_stride并且index是整數(shù)。
因此TS_last=TS0+index_last*TS_stride,并且TS_current=TS0+index_current*TS_stride。
1、壓縮器壓縮器在壓縮的頭中發(fā)送k個最低有效位p_TS_current。
壓縮器運行下列算法來確定k計算Max_network_jitter;計算J1=Max_network_jitter+Max_radio_jitter+J,其中J=2是考慮由壓縮器和解壓縮器引起的量化錯誤的因數(shù),其可以是+1或-1;以及找到滿足以下條件的最小的整數(shù)k(2*J1+1)<2k。
可以根據(jù)三種不同的方法計算壓縮器處的網(wǎng)絡抖動,即圖13所示的第一種方法,圖14所示的第二種方法以及圖15所示的第三種方法。第二種和第三種方法下面分別描述為選項1和選項2。第一種方法對于計算網(wǎng)絡抖動足夠了。但是,在壓縮器處計算網(wǎng)絡抖動的優(yōu)選方法是下面分別描述為選項1和選項2的第二種和第三種方法。
如圖13所示,根據(jù)第一種方法,利用關(guān)于緊接著前面分組的信息計算壓縮器處特定分組的網(wǎng)絡抖動。因此,例如,利用關(guān)于分組1的信息計算分組2(j2)的網(wǎng)絡抖動,利用關(guān)于分組2的信息計算分組3(j3)的網(wǎng)絡抖動,利用關(guān)于分組3的信息計算分組4(j4)的網(wǎng)絡抖動,利用關(guān)于分組4的信息計算分組5(j5)的網(wǎng)絡抖動。
因此,根據(jù)圖13,分組2的網(wǎng)絡抖動等于計算的抖動j2,分組3的網(wǎng)絡抖動等于計算的抖動j3,分組4的網(wǎng)絡抖動等于計算的抖動j4,并且分組5的網(wǎng)絡抖動等于計算的抖動j5。
選項1圖14說明了用于為選項1的第二種方法計算網(wǎng)絡抖動的步驟。在選項1中利用關(guān)于參考分組的信息計算特定分組的網(wǎng)絡抖動。因此,假設如圖14所示分組2是參考分組,利用關(guān)于參考分組2的信息計算分組3的抖動j3,利用關(guān)于參考分組2的信息計算分組4的抖動j4,并且利用關(guān)于參考分組2的信息計算分組5的抖動j5。
根據(jù)如圖14所示的選項1的第二種方法,如果假設抖動j3=2,抖動j4=3,并且抖動j5=-1,則在分組5之前N_jitter_min=2并且N_jitter_max=3,而在分組5 N_jitter_min=-1并且N_jitter_max=3。因此,在分組5的最大網(wǎng)絡抖動=N_jitter_max-N_jitter_min=4。因此,分組5的Max_network_jitter是4。下面提出根據(jù)選項1的方法計算網(wǎng)絡抖動的等式及其描述。
根據(jù)選項1的方法當前分組的網(wǎng)絡抖動計算如下N_jitter(current_header,RFH)=(T_current-T_rfh)-(p_TS_current-p_TS_RFH);更新N_jitter_max和N_jitter_min,其中N_jitter_max定義為Max{N_jitter(j,RFH)},對于從RFH并且包括RFH發(fā)送的所有的頭j。N_jitter_min定義為Min{N_jitter(j,RFH)},對于從RFH并且包括RFH發(fā)送的所有的頭j;并且計算Max_network_jitter=(N_jitter_max-N_jittet_min)。
應該指出,N_jitter_max和N_jitter_min可以是正數(shù)或負數(shù),但是(N_jitter_max-N_jitter_min)是正數(shù)。
選項2圖15說明了用于為選項2的第三種方法計算網(wǎng)絡抖動的步驟。在選項2中利用感興趣的分組與每個預定數(shù)量的前面分組之間的抖動計算來計算特定分組的網(wǎng)絡抖動。預定數(shù)量的前面的分組定義為一個窗口并且這樣的窗口可以是任意值。在圖15所示的例子中,窗口有四個前面分組的值。窗口可以設置為任何其它值,例如,7個分組。而且,窗口可以設置為,例如,等于從最后參考的分組以來的分組數(shù)的值。
如圖15所示,利用關(guān)于分組1j(5,1)、分組2,j(5,2)、分組3j(5,3)以及分組4,j(5,4)的信息計算分組5的網(wǎng)絡抖動。如圖15所示,為分組5關(guān)于每個分組計算的網(wǎng)絡抖動分別是關(guān)于分組1是j(5,1)=-2,關(guān)于分組2是j(5,2)=3,關(guān)于分組3是j(5,3)=4,并且關(guān)于分組4是j(5,4)=7,然后max_network_jitter=7。下面提出根據(jù)選項2的第三種方法計算網(wǎng)絡抖動的等式和描述。
根據(jù)選項2的方法計算當前分組的網(wǎng)絡抖動如下對于在當前頭之前發(fā)送的所有頭計算的N_jitter(current_header,j)=(T_current-T_j)-(p_TS_current-p_TS_j),并且屬于窗口W,其中T_j是當接收頭j時的定時器值,并且p_TS_j是頭j的壓縮RTP TS;并且在窗口W中所有j上計算Max_network_jitter=|最大N_jitter(Current_header,j)|。
在來自解壓縮器的反饋可用的情況下,窗口W包括從知道正確接收(例如,確認的)最后一個頭以來發(fā)送的頭。在沒有反饋的情況下,窗口W包括發(fā)送的最后L個頭,其中L是參數(shù)。
2、解壓縮器為解壓縮Current_header的RTP TS,接收器以T毫秒為單位計算從接收last_header以來流逝的時間。該時間,Timer(Current_header,Last_header)加到p_TS_last,以便給出p_TS_current的近似值。然后接收器通過選擇其k個最低有效位與壓縮的RTP TS相匹配的最接近近似值的值確定p_TS_current的精確值。然后TS_current計算為TS0+(p_TS_current)*TS_stride。
Timer(Current_header,Last_header)可計算為(T_current-T_last),其中當Current_header和Last_header分別接收時T_current和T_last是R_timer的值。
3、正確性檢驗為了檢驗基于定時器和參考的方案的正確性,假設如下Approx_TS是p_TS_current的近似值,由解壓縮器計算為p_TS_last+Timer(Current_header,Last_header);并且Exact_TS是p_TS_current的精確值。
然后基于上述|Approx_TS-Exact_TS|<=|Jitter(Current_header,Last_header)|;因在壓縮器的Max_network_jitter的定義|Jitter(Current_header,Last_header)|≤J1,其中J1=Max_network_jitter+Max_radio_jitter+J。
J是考慮由壓縮器和解壓縮器處的定時器引入的量化錯誤加入的因數(shù),其可以是+1或-1。因此J=2足夠。
因此,其遵循|Approx_TS-Exact_TS|≤J1為了沒有不明確地計算Exact_TS,選擇k以致于滿足(2*J1+1)<2k就足夠了。
4、在壓縮器之前分組失序的情況可由減少的RTP序號(RTP SN)檢測到分組失序。當其發(fā)生時,壓縮器可以利用不同的方案,例如,VLE解碼壓縮的RTP TS。利用壓縮頭中合適的指示位通知解壓縮器不同的解碼。
另一種選擇是采用正常的基于定時器和參考的方案算法-失序很可能導致更大的k值。
5、上行鏈路在無線系統(tǒng)中,對于上行鏈路方向,網(wǎng)絡抖動是零(因為RTP源和壓縮器都位于無線終端中),并且無線電抖動通常被限制并且控制以便保持非常小。因此,想要的k非常小并且固定,其最小化了頭大小的波動。這是對于帶寬管理非常有意義的優(yōu)點,因為對于上行鏈路,終端通常必須向網(wǎng)絡要求越來越多的帶寬。而且,沒有分組失序。因此基于定時器的方案特別適合于上行鏈路。
6、下行鏈路對于下行鏈路方向,網(wǎng)絡抖動不是零,但是整體抖動通常很小以滿足實時要求。想要的k值仍然很小并且通常固定。在k中會有更大的波動,但是帶寬管理不是問題,因為網(wǎng)絡控制帶寬分配。
7、移交在蜂窩系統(tǒng)中,有MS到網(wǎng)絡無線鏈路和網(wǎng)絡到MS無線鏈路,分別稱為上行鏈路和下行鏈路。當壓縮/解壓縮應用于蜂窩鏈路時,有一個基于MS的功能,MS_AD(MS適配器),其分別完成上行鏈路和下行鏈路的壓縮和解壓縮。有一個基于網(wǎng)絡的實體,稱為ANI_AD(接入網(wǎng)基礎結(jié)構(gòu)適配器),分別完成上行鏈路和下行鏈路的解壓縮和壓縮。
要考慮的移交特殊情況是ANI_AD間的移交,其中從舊的ANI_AD轉(zhuǎn)換到新的ANI_AD可導致中斷。問題是如何在移交過程中保持信息的連續(xù)性以便在移交之后,在MS_AD和新的ANI_AD處的壓縮/解壓縮沒有中斷的繼續(xù)。
有兩種替代的方法用于移交,描述如下a、第一種方法第一種方法使用以與1999年3月9日K.Le提交的序號09/522,497的相關(guān)申請“用于頭壓縮的一種有效移交過程(AN EFFICIENTHANDOFF PROCEDURE FOR HEADER COMPRESSION)”中所公開的握手方法獲取在ANI_AD和MS_AD之間交換的上下文信息的快照的方案。對于RTP TS,上下文信息包括參考頭的完整RTP TS。在移交之后,壓縮器(對于上行鏈路是MS_AD,對于下行鏈路是ANI_AD)利用基于定時器的方案臨時停止并且發(fā)送關(guān)于參考值的壓縮的RTP TS。例如,可使用1999年3月9日提交的序號為09/522,497的K.Le的“用于頭壓縮的一種有效移交過程(AN EFFICIENTHANDOFF PROCEDURE FOR HEADER COMPRESSION)”的相關(guān)申請中所公開的VLE解碼。一旦接收到確認,壓縮器就使用確認的值作為RFH,并且轉(zhuǎn)換回基于定時器的方案。
b、第二種方法第二種方法在移交過程中保持使用基于定時器的方案。
i、下行鏈路在是MS的接收器端沒有中斷。壓縮器的任務從一個ANI_AD轉(zhuǎn)移到另一個。移交之后,頭通過新的ANI_AD代替舊的ANI_AD在新路徑上路由。
-壓縮器舊的ANI_AD利用握手的方法將下列信息的快照轉(zhuǎn)移到新的ANI_ADT_RFH、p_TS_RFH、S_Timer的當前值、TS0以及TS_stride。(快照值用*表示,例如,T_RFH*)。新的ANI_AD用從舊的ANI_AD接收的S_Timer的當前值初始化其S_Timer并且開始每T毫秒增加該定時器。用舊的ANI_AD的當前S_Timer值初始化其S_Timer是一個概念的描述。如果有單一的S_Timer由多個流共享,則實際S_Timer不重新初始化。而是,記錄該S_Timer與來自舊的ANI_AD的值之間的偏移。在將來的計算中考慮該偏移。為壓縮移交后的第一個頭,新的ANI_AD發(fā)送p_TS_current的k個最低有效位。新的ANI_AD將k,使用的位數(shù)確定如下J2=N_jitter(Current_header,RFH*)的上界+Max_radio_jitter+J,其中選擇k滿足條件(2*J2+1)<2k。
在上面,Max_radio_jitter是在新的ANI_AD和MS_AD之間的段上的最大抖動。
N_jitter(Current_header,RFH*)的上界計算如下|Timer(Current_header,RFH*)-(p_TS_current-p_TS_RFH*)|+T_transfer,其中Timer(Current_header,RFH*)是(T_current-T_RFH*);T_current是當接收到Current_header時新的ANI_AD中S_Timer的值;T_RFH*是從舊的ANI_AD接收的值;T_transfer是以T毫秒為單位表示的從舊的ANI_AD向新的ANI_AD傳送上下文信息的時間的上界;并且J=2。
-解壓縮器為了解壓縮Current_header的RTP TS,接收器計算以T毫秒為單位的自從接收RFH以來流逝的時間。該時間,Timer(Current_header,RFH)加到p_TS_RFH,以便給出p_TS_current的近似值。然后接收器通過選擇其k個最低有效位與壓縮的RTP TS相匹配的與近似值最接近的值來確定p_TS_current的精確值。然后TS_current計算為TS0+(p_TS_current)*TS_stride。
從接收RFH以來流逝的時間可計算為(T_current-T_RFH)。
-失敗的情況當上下文信息不能以及時的方式轉(zhuǎn)移到新的ANI_AD時,新的ANI_AD將發(fā)送完整的RTP TS直到接收到確認為止。
ii、上行鏈路解壓縮器的任務從一個ANI_AD轉(zhuǎn)移到另一個。壓縮器保持固定在MS。
-解壓縮器舊的ANI_AD利用握手的方法將下列信息的快照傳送到新的ANI_ADT_RFH*、p_TS_RFH*、R_Timer的當前值、TS0、以及TS_stride。新的ANI_AD利用從舊的ANI_AD2接收的R_Timer的當前值初始化其R_Timer并且開始每T毫秒增加該定時器。用舊的ANI_AD的當前R_Timer值初始化R_Timer是一個概念的描述。如果有單一的R_Timer由多個流共享,則實際R_Timer不重新初始化。而是,記錄該R_Timer與來自舊的ANI_AD的值之間的偏移。在將來的計算中考慮該偏移。為解壓縮移交后的恰好第一個頭,新的ANI_AD計算Timer(Current_header,RFH),將其加到p_TS_RFH*,以便給出p_TS_current的近似值。然后接收器通過選擇其k個最低有效位與壓縮的RTP TS相匹配的與近似值最接近的值來確定p_TS_current的精確值。然后TS_current計算為TS0+(p_TS_current)*TS_stride。
Timer(Current_header,RFH)可估計為(T_Current-T_RFH*)。T_current是當接收Current_header時R_Timer的值。
-壓縮器MS_AD發(fā)送p_TS_current的k個最低有效位。其將要使用的位數(shù)k確定如下計算J2=N_jitter(Current_header,RFH*)的上界+Max_radio_jitter+J,其中選擇k滿足條件(2*J2+1)<2k。
這里,Max_radio_jitter是在新的ANI_AD和MS_AD之間的段上的最大抖動。
N_jitter(Current_header,RFH*)的上界計算為|Timer(Current_header,RFH*)-(p_TS_current-p_TS_RFH*)|+T_transfer,其中Timer(Current_header,RFH*)是(T_current-T_RFH*);T_current是當接收到Current_header時新的ANI_AD中S_Timer的值;T_RFH*是從舊的ANI_AD接收的值;T_transfer是以T毫秒為單位表示的從舊的ANI_AD向新的ANI_AD傳送上下文信息的時間的上界;并且J=2-失敗的情況當上下文信息不能以及時的方式轉(zhuǎn)移到新的ANI_AD時,新的ANI_AD將通知MS_AD,其發(fā)送完整的RTP TS直到接收到確認為止。
8、方案的性能因談話的實時要求,希望正常操作中的累積抖動最多僅有T毫秒的幾倍。因此,大約4或5的k值足夠了,因為多達16到32的語音采樣的抖動可以被糾正。
這個方案的優(yōu)點如下壓縮頭的大小是固定的并且很小。壓縮頭典型的由指示消息類型的消息類型(k1比特)、指示哪個域在改變的位屏蔽,以及包含index_current的k個最低有效位(k比特)的域組成。假設使用4位MSTI位屏蔽,并且k1=4,當僅RTP TS改變時(這種情況是最常見的)壓縮頭的大小是1.5字節(jié)。而且,這個大小不作為無聲間隔長度的函數(shù)而改變。
不需要定時器過程和解壓縮器過程之間的同步。
因為壓縮頭中的部分RTP TS信息是自包含的并且僅需要與接收器的定時器相結(jié)合來生成完整的RTP TS值,所以對錯誤有健壯性。頭的丟失或破壞不會使后續(xù)的壓縮頭無效。
壓縮器幾乎不需要維護存儲器信息選項1中的T_RFH、p_TS_RFH、N_jitter_max、N_jitter_min、TS0、以及TS_stride以及選項2中的{T-j、p_TS_j},對于窗口W中的所有的j,TSO,以及TS_stride。
C、抖動減少因談話的實時要求,可以合理的期望上述各種抖動與正常操作中的幾個T毫秒的相似。但是,不能排除抖動更大并且因此需要一個更大的k的情況。例如在從RTP源到接收器的路徑上可以有異常情況(失敗等),其中抖動變得過多。而且,有想要或者值得要固定值的k的情況。為解決這些情況,可實現(xiàn)抖動減少功能作為壓縮器的前端,來過濾出具有過多抖動的分組(也就是,抖動超過某個閾值)。
在固定的情況(沒有移交),抖動計算為J1并且與固定閾值比較如下J1=(n_jitter_max-N_jitter_min)+Max_radio_jitter+J。
在移交情況下,抖動計算為J2并且與移交閾值比較如下J2=|Timer(current_header,RFH*)-(p_TS_current-p_TS_RFH*)|+T_transfer+Max_radio_jitter+J。
關(guān)于固定非移交情況的主要差異是T_transfer的增加。實際上,為了能夠在100毫秒執(zhí)行移交,T_transfer必須限制為大約100毫秒,因此T_ransfer=大約5或6以T毫秒為單位(T=20毫秒)。值k=5足夠了。
固定和移交的閾值可以相同或不同。
D、視頻的情況在RTP視頻源的情況下,不需要真的分組之間有固定時間間隔,并且此外,RTP TS不需要從一個分組到另一個增加固定的跨度。但是,RTP TS和分組間的時間間隔是不連續(xù)的。因此,如下分組m的RTP時間戳=分組0的RTP時間戳(在時間0生成)+TS_stride*[index+adjust(m)],其中TS_stride是依賴于編解碼器的常數(shù),并且adjust(m)是依賴于m并且反映關(guān)于語音中類似的線性行為的差值的整數(shù);以及兩個連續(xù)分組之間的時間間隔是T毫秒數(shù)的整數(shù)倍。
下面,在RTP源的行為稱為調(diào)節(jié)的線性行為。與語音使用相同的符號,TS_last=TS0+TS+stride*[index_last+adjust(index_last)],并且TS_current=TS0+TS_stride*[index_current)+adjust(index_current]。調(diào)節(jié)參數(shù)可以是正數(shù)或負數(shù)。因此,與語音相比的主要差別是額外的術(shù)語調(diào)節(jié)。
RTP TS是進入解壓縮器的頭,也遵守作為時間函數(shù)的調(diào)節(jié)的線性模式,因源和解壓縮器之間的延遲抖動,不是很接近。在正常運行中(沒有崩潰或失敗),延遲抖動限制為滿足談話實時業(yè)務的要求。
如上所述假設當前頭的壓縮的RTPTS=index_current+adjust(index_current)。關(guān)于p_TS_current將使用例如,相同的符號。
壓縮器壓縮器在壓縮的頭中發(fā)送p_TS_current的k個最低有效位。確定k的算法與語音相同。
解壓縮器使用的算法與語音相同。
1、移交為語音描述的用于移交的兩個替代方法也適用于視頻。
2、k的值對于語音,顯示k=4或5足夠了(2k=16或32)。在視頻的情況下,因為調(diào)節(jié)所以需要更大的k值。因為視頻的結(jié)構(gòu)為每秒30幀,|Adjust|<30。因此,k=7或8在正常運行中應該足夠了。
這里特別說明和/或描述了本發(fā)明的幾個實施方案。但是,應該理解在不背離本發(fā)明的精神和預定范圍的情況下本發(fā)明的修改和變化由上述教導覆蓋并且在所附的權(quán)利要求的范圍之內(nèi)。
雖然本發(fā)明已經(jīng)被結(jié)合附圖詳細地進行了描述,因為在不背離本發(fā)明的精神和其范圍的情況下可進行本領域的普通技術(shù)人員可認知的許多改變和修改,因此其不限于這些細節(jié)。
權(quán)利要求
1.一種在網(wǎng)絡中源和接收器之間利用基于定時器的壓縮技術(shù)來發(fā)送當前分組的當前頭域的方法,包括從壓縮器向解壓縮器提供頭域的初始值;基于當前分組的當前頭域和抖動來在壓縮器計算當前分組的壓縮的頭域,其中所述計算步驟包括步驟計算源和所述解壓縮器之間的網(wǎng)絡在分組發(fā)送上的抖動影響,以及計算作為域值一部分的壓縮頭域,所述部分是抖動的函數(shù);在解壓縮器接收當前分組的壓縮頭域;在解壓縮器處基于當前分組的壓縮頭域的接收和解壓縮的前一個分組的頭域的接收之間流逝的時間以及前一個分組的解壓縮的域值來估算當前分組的頭域;以及基于在解壓縮器處接收的壓縮的頭域來改正估算的當前頭域。
2.根據(jù)權(quán)利要求1的方法,其中所述計算抖動影響包括步驟計算在壓縮器之前的網(wǎng)絡的抖動影響;以及計算壓縮器和解壓縮器之間的網(wǎng)絡的抖動影響。
3.根據(jù)權(quán)利要求2的方法,其中壓縮器和解壓縮器之間的網(wǎng)絡的所述抖動影響設置為抖動的上界值。
4.根據(jù)權(quán)利要求2的方法,其中所述計算在壓縮器之前的網(wǎng)絡的抖動影響包括利用關(guān)于參考分組的信息計算當前分組的抖動影響。
5.根據(jù)權(quán)利要求2的方法,其中所述計算在壓縮器之前的網(wǎng)絡的抖動影響包括利用關(guān)于所述當前分組以及預定數(shù)量的前面分組的每個的信息計算當前分組的抖動影響。
6.根據(jù)權(quán)利要求2的方法,其中所述計算在壓縮器之前的網(wǎng)絡的抖動影響包括利用關(guān)于所述當前分組以及直到參考分組的每個前面分組的信息計算當前分組的抖動影響。
7.根據(jù)權(quán)利要求1的方法,其中所述在壓縮器處計算當前分組的壓縮頭域包括計算當前分組的壓縮頭域為域值的k個最低有效位,其中k是一個整數(shù)。
8.根據(jù)權(quán)利要求1的方法,其中所述頭域包括時間戳。
9.根據(jù)權(quán)利要求1的方法,其中所述頭域包括RTP時間戳。
10.根據(jù)權(quán)利要求1的方法,其中所述在壓縮器處計算當前分組的壓縮頭域包括將域值轉(zhuǎn)換為另一個值,稱為壓縮值,其占用更少的比特來表示;以及計算當前分組的壓縮頭域為所述壓縮值的k個最低有效位,其中k是一個整數(shù)。
11.一種解壓縮網(wǎng)絡中從壓縮器發(fā)送到解壓縮器的當前分組的當前頭域的方法包括步驟在解壓縮器處接收當前分組的壓縮頭域,所述壓縮頭域在壓縮器中已經(jīng)計算為域值的一部分,所述域值計算為源和所述解壓縮器之間的網(wǎng)絡在分組發(fā)送上的抖動影響;在解壓縮器處基于自從前一個壓縮頭域到達解壓縮器以來流逝的時間以及前一個分組的解壓縮的域值來計算當前分組的頭域的近似值;在解壓縮器處基于當前分組的壓縮頭域來計算當前分組的頭域糾正量;以及通過將當前分組的頭域的近似值調(diào)整一個基于頭域糾正量的一個量來在解壓縮器處解壓縮當前分組的壓縮頭域。
12.根據(jù)權(quán)利要求11的方法,其中通過計算壓縮器之間的網(wǎng)絡的抖動影響以及計算壓縮器和解壓縮器之間的網(wǎng)絡的抖動影響來計算源和所述解壓縮器之間的網(wǎng)絡在分組發(fā)送上的所述抖動影響。
13.根據(jù)權(quán)利要求12的方法,其中壓縮器和解壓縮器之間的網(wǎng)絡的所述抖動影響設置為抖動的上界值。
14.根據(jù)權(quán)利要求12的方法,其中所述計算在壓縮器之前的網(wǎng)絡的抖動影響包括利用關(guān)于參考分組的信息計算當前分組的抖動影響。
15.根據(jù)權(quán)利要求12的方法,其中所述計算在壓縮器之前的網(wǎng)絡的抖動影響包括利用關(guān)于所述當前分組以及預定數(shù)量的前面分組的每個的信息計算當前分組的抖動影響。
16.根據(jù)權(quán)利要求12的方法,其中所述計算在壓縮器之前的網(wǎng)絡的抖動影響包括利用關(guān)于所述當前分組以及直到參考分組的每個前面分組的信息計算當前分組的抖動影響。
17.根據(jù)權(quán)利要求11的方法,其中壓縮頭域計算為域值的k個最低有效位,其中k是一個整數(shù)。
18.根據(jù)權(quán)利要求11的方法,其中壓縮頭域計算為壓縮值的k個最低有效位,其中k是一個整數(shù);并且其中解壓縮器基于自從前一個分組到達以來流逝的時間以及前一個分組的解壓縮器壓縮值來計算壓縮值的近似值。
19.一種在系統(tǒng)的第一個和第二個網(wǎng)絡實體之間執(zhí)行移交的方法,當移動解壓縮器位于第一和第二個區(qū)域中時,第一和第二個網(wǎng)絡實體分別將移動解壓縮器接口到源終端,所述方法包括在第一個網(wǎng)絡實體中以及在移動解壓縮器中接收來自源終端的頭域的初始值,第一個網(wǎng)絡實體將位于第一個區(qū)域中的移動解壓縮器接口到源終端;在第一個網(wǎng)絡實體中接收來自源終端的尋址到移動解壓縮器的第一個分組的頭域;在第一個網(wǎng)絡實體中壓縮第一個分組的頭域并且將第一個分組的第一個壓縮頭域發(fā)送到移動解壓縮器,所述第一個壓縮的頭域計算為域值的一部分,所述域值計算為源終端和移動解壓縮器之間的網(wǎng)絡在分組發(fā)送上的第一個抖動影響;在移動解壓縮器中基于自從前一個分組到達以來流逝的時間以及前一個分組的解壓縮域值來接收和解壓縮第一個分組的第一個壓縮的頭域;移動解壓縮器從第一個區(qū)域移動到第二個區(qū)域;將初始化信息發(fā)送到第二個網(wǎng)絡實體以便為壓縮而初始化第二個網(wǎng)絡實體;在第二個網(wǎng)絡實體中接收并且壓縮來自源終端尋址到移動解壓縮器的第二個分組的頭域,并且將第二個分組的第二個壓縮頭域發(fā)送到移動解壓縮器,所述第二個壓縮頭域計算為域值的一部分,所述域值計算為源終端和移動解壓縮器之間的網(wǎng)絡在分組發(fā)送上的第二個抖動影響以及向第二個網(wǎng)絡實體發(fā)送初始化信息的時間;以及在移動解壓縮器基于自從前一個分組到達以來流逝的時間以及前一個分組的解壓縮域值來接收和解壓縮第二個分組的第二個壓縮的頭域。
20.根據(jù)權(quán)利要求15的方法,其中通過計算壓縮器之前的網(wǎng)絡的抖動影響以及計算壓縮器和解壓縮器之間的網(wǎng)絡的抖動影響來計算源終端和所述解壓縮器之間的網(wǎng)絡在分組發(fā)送上的所述第一個和第二個抖動影響的每一個。
21.根據(jù)權(quán)利要求20的方法,其中壓縮器和解壓縮器之間的網(wǎng)絡的所述抖動影響設置為抖動的上界值。
22.根據(jù)權(quán)利要求19的方法,其中所述第一個分組是緊接移交之前的分組并且所述第二個分組是緊接移交之后的分組。
23.根據(jù)權(quán)利要求20的方法,其中所述計算在壓縮器之前的網(wǎng)絡的抖動影響包括利用關(guān)于參考分組的信息計算當前分組的抖動影響。
24.根據(jù)權(quán)利要求20的方法,其中所述計算在壓縮器之前的網(wǎng)絡的抖動影響包括利用關(guān)于所述當前分組以及預定數(shù)量的前面分組的每個的信息計算當前分組的抖動影響。
25.根據(jù)權(quán)利要求20的方法,其中所述計算在壓縮器之前的網(wǎng)絡的抖動影響包括利用關(guān)于所述當前分組以及直到參考分組的每個前述分組的信息計算當前分組的抖動影響。
26.根據(jù)權(quán)利要求19的方法,其中所述頭域包括時間戳。
27.根據(jù)權(quán)利要求19的方法,其中壓縮頭域計算為域值的k個最低有效位,其中k是一個整數(shù)。
28.根據(jù)權(quán)利要求19的方法,其中壓縮頭域計算為壓縮域值的k個最低有效位,其中k是一個整數(shù);并且其中解壓縮器基于自從前一個分組到達以來流逝的時間以及前一個分組的解壓縮器壓縮值來計算壓縮值的近似值。
29.一種在第一個和第二個網(wǎng)絡實體之間執(zhí)行移交的方法,當移動壓縮器位于第一和第二個區(qū)域時,第一個和第二個網(wǎng)絡實體分別將移動壓縮器接口到接收器終端,所述方法包括在第一個網(wǎng)絡實體中接收來自移動壓縮器的頭域的初始值;在第一個網(wǎng)絡實體中接收從移動壓縮器接收的第一個分組的第一個壓縮的頭域,所述第一個壓縮的頭域在移動壓縮器中計算為域值的一部分,所述域值計算為源和解壓縮器之間的網(wǎng)絡在分組發(fā)送上的第一個抖動影響;在第一個網(wǎng)絡實體中基于自從前一個分組到達以來流逝的時間以及前一個分組的解壓縮域值來解壓縮第一個分組的第一個壓縮的頭域;移動壓縮器從第一個區(qū)域移動到第二個區(qū)域;將初始化信息發(fā)送到第二個網(wǎng)絡實體以便為壓縮初始化第二個網(wǎng)絡實體;在第二個網(wǎng)絡實體中接收從移動壓縮器接收的第二個分組的第二個壓縮頭域,所述第二個壓縮頭域在移動壓縮器中計算為域值的一部分,所述域值計算為源和解壓縮器之間的網(wǎng)絡在分組發(fā)送上的第二個抖動影響以及向第二個網(wǎng)絡實體發(fā)送初始化信息的時間;以及在第二個網(wǎng)絡實體中基于自從前一個分組到達以來流逝的時間以及前一個分組的解壓縮域值來解壓縮第二個分組的第二個壓縮的頭域。
30.根據(jù)權(quán)利要求29的方法,其中通過計算移動壓縮器之前的網(wǎng)絡的抖動影響以及計算壓縮器和解壓縮器之間的網(wǎng)絡的抖動影響來計算源和所述解壓縮器之間的網(wǎng)絡在分組發(fā)送上的所述第一個和第二個抖動影響。
31.根據(jù)權(quán)利要求30的方法,其中壓縮器和解壓縮器之間的網(wǎng)絡的所述抖動影響設置為抖動的上界值。
32.根據(jù)權(quán)利要求29的方法,其中所述第一個分組是緊接移交之前的分組并且所述第二個分組是緊接移交之后的分組。
33.根據(jù)權(quán)利要求30的方法,其中所述計算在移動壓縮器之前的網(wǎng)絡的抖動影響包括利用關(guān)于參考分組的信息計算當前分組的抖動影響。
34.根據(jù)權(quán)利要求30的方法,其中所述計算在移動壓縮器之前的網(wǎng)絡的抖動影響包括利用關(guān)于所述當前分組以及預定數(shù)量的前面分組的每個的信息計算當前分組的抖動影響。
35.根據(jù)權(quán)利要求30的方法,其中所述計算在移動壓縮器之前的網(wǎng)絡的抖動影響包括利用關(guān)于所述當前分組以及直到參考分組的每個前面分組的信息計算當前分組的抖動影響。
36.根據(jù)權(quán)利要求29的方法,其中所述頭域包括時間戳。
37.根據(jù)權(quán)利要求29的方法,其中壓縮頭域計算為壓縮值的k個最低有效位,其中k是一個整數(shù);并且其中解壓縮器基于自從前一個分組到達以來流逝的時間以及前一個分組的解壓縮的壓縮值來計算壓縮值的近似值。
38.根據(jù)權(quán)利要求29的方法,其中壓縮頭域計算為壓縮值的k個最低有效位,其中k是一個整數(shù)。
39.一種通信系統(tǒng)包括提供多個分組的源,每個分組包括一個頭域,所述源耦合到網(wǎng)絡中;包括解壓縮器的接收器;通過網(wǎng)絡實體和接收器之間的網(wǎng)絡耦合到網(wǎng)絡中以及接收器中的網(wǎng)絡實體,所述網(wǎng)絡實體包括用于為從所述源發(fā)送的并且指向所述接收器的至少一些分組執(zhí)行頭域壓縮的壓縮器,所述網(wǎng)絡實體包括用于計算指向所述接收器終端的分組中的抖動并且丟棄具有大于預定值的抖動的分組的抖動減少功能,其中抖動計算為由源和接收器中包括的解壓縮器之間的網(wǎng)絡引起的全部抖動量。
40.根據(jù)權(quán)利要求39的通信系統(tǒng),其中通過計算壓縮器之前的網(wǎng)絡的抖動影響以及計算壓縮器和解壓縮器之間的網(wǎng)絡的抖動影響來計算所述抖動。
41.根據(jù)權(quán)利要求39的通信系統(tǒng),其中壓縮器和解壓縮器之間的網(wǎng)絡的所述抖動影響設置為抖動的上界值。
42.根據(jù)權(quán)利要求40的通信系統(tǒng),其中通過利用關(guān)于參考分組的信息計算當前分組的抖動影響來計算壓縮器之前的網(wǎng)絡的所述抖動。
43.根據(jù)權(quán)利要求40的通信系統(tǒng),其中所述計算在壓縮器之前的網(wǎng)絡的抖動影響包括利用關(guān)于所述當前分組以及預定數(shù)量的前面分組的每個的信息計算當前分組的抖動影響。
44.根據(jù)權(quán)利要求40的通信系統(tǒng),其中所述計算在壓縮器之前的網(wǎng)絡的抖動影響包括利用關(guān)于所述當前分組以及直到參考分組的每個前面分組的信息計算當前分組的抖動影響。
45.根據(jù)權(quán)利要求39的通信系統(tǒng),其中壓縮頭域計算為壓縮值的k個最低有效位,其中k是一個整數(shù);并且其中解壓縮器基于自從前一個分組到達以來流逝的時間以及前一個分組的解壓縮的壓縮值來計算壓縮值的近似值。
全文摘要
提供了一種基于定時器的頭壓縮/解壓縮技術(shù)以及一種基于定時器和參考的技術(shù)。源生成一個頭域,如RTP時間戳。包括該頭域的分組發(fā)送到壓縮器,壓縮器基于來自源的分組的頭域以及抖動質(zhì)量來計算壓縮的頭域。通過計算壓縮器之前的網(wǎng)絡在分組發(fā)送上的抖動影響以及計算壓縮器和解壓縮器之間的網(wǎng)絡在分組發(fā)送上的抖動影響來計算壓縮的頭域。包括壓縮頭域的分組發(fā)送到包括本地定時器的解壓縮器。解壓縮器通過基于自從前一個分組到達以來流逝的時間以及前一個分組中的域值計算頭域的近似值,來解壓縮壓縮的頭域。然后基于分組中提供的壓縮的頭域來糾正頭域的近似值。
文檔編號H03M7/30GK1419771SQ01806173
公開日2003年5月21日 申請日期2001年3月9日 優(yōu)先權(quán)日2000年3月9日
發(fā)明者希姆·列 申請人:諾基亞有限公司, 希姆·列