專利名稱:壓縮數(shù)據(jù)的可變長編碼的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及包括分組頭壓縮的高效數(shù)據(jù)壓縮。
現(xiàn)有技術(shù)描述在許多領(lǐng)域中,能夠以高效和對(duì)錯(cuò)誤魯棒性的方式對(duì)一系列值進(jìn)行壓縮非常關(guān)鍵。例如IP/UDP/RTP頭壓縮以便在蜂窩網(wǎng)上傳送實(shí)時(shí)基于IP的多媒體業(yè)務(wù)。因?yàn)镮P/UDP/RTP頭的尺寸大并且蜂窩系統(tǒng)的帶寬有限,因此壓縮效率是必需的。因?yàn)榉涓C鏈路易于出錯(cuò)的特點(diǎn)因此錯(cuò)誤魯棒性也需要。
在1999年2月的互聯(lián)網(wǎng)工程任務(wù)組(IETF)RFC 2508中描述的RTP頭壓縮在無損壓縮器-解壓縮器鏈路上獲得了很高的壓縮效率。其可以將大多數(shù)頭壓縮到兩字節(jié)那么低。但是,該方案不具有錯(cuò)誤魯棒性。遇到的問題是錯(cuò)誤傳播并且增加已壓縮頭的大小。這里的錯(cuò)誤傳播指的是如果壓縮頭碰到錯(cuò)誤,則不僅這個(gè)壓縮頭不能解碼而且接著的壓縮頭即使沒有錯(cuò)誤可能也不能解碼。這里增加的壓縮頭大小指的是因?yàn)殄e(cuò)誤恢復(fù)過程,在有損耗的鏈路上的壓縮頭大于在無損鏈路上獲得的最佳的2字節(jié)。下面討論RFC 2508的限制。
頭壓縮方案利用頭中攜帶的某些信息域或者1)不改變(這里稱為‘類型1’頭域)或者2)以完全可預(yù)測(cè)的方式改變(這里稱為‘類型2’頭域)的事實(shí)。其它域,稱作‘類型3’頭域,以不可確切預(yù)測(cè)的方式變化。
類型1頭域的例子是IP地址、UDP端口號(hào)、RTP SSRC(同步源)等。在會(huì)話期間這些域僅需要發(fā)送到接收器/解壓縮器一次(例如作為會(huì)話建立時(shí)發(fā)送的一個(gè)或多個(gè)分組的部分)。
類型2頭域的例子是RTP時(shí)間戳、RTP序號(hào)、以及IP ID域。所有的都有按從分組到分組的某個(gè)常量增加的趨勢(shì)。因此,對(duì)于這些值不需要在每個(gè)頭中發(fā)送。僅需要使解壓縮器知道恒定的增量(差分)值,在RFC 2508中稱為增量。解壓縮器在重建原始頭時(shí)利用這些增量來重新生成最新的類型2域值。換句話說,差分編碼用于壓縮類型2的頭域。
大多數(shù)IP堆棧實(shí)現(xiàn)的IP-ID域?qū)τ谠窗l(fā)送的每個(gè)分組按一個(gè)固定數(shù)量增加。因此只要RTP流分組與來自壓縮器-解壓縮器(CD)信道上相同源的其它分組沒有交叉,則IP-ID增量就是常量并且不需要發(fā)送。
類型3頭域的例子是RTP M-比特(標(biāo)志器),其指示介質(zhì)中某個(gè)邊界的出現(xiàn)(如視頻幀結(jié)束)。因?yàn)榻橘|(zhì)通常以不可預(yù)測(cè)的方式變化,因此這個(gè)信息不能確切地預(yù)測(cè)。
上面提到的頭壓縮方案的限制源于用于類型2域的增量編碼。因?yàn)椴罘志幋a,如果一個(gè)單一的壓縮頭丟失,則因?yàn)樗泻竺娴膲嚎s頭從不能解碼的壓縮頭遞歸地預(yù)測(cè),所以將都不能解碼。這就是我們稱為的錯(cuò)誤傳播。
用于從錯(cuò)誤傳播恢復(fù)的一種算法稱為“二次”算法,如果在壓縮分組中發(fā)送分組UDP校驗(yàn)和可以使用該算法。CD-鏈路上的壓縮分組攜帶一個(gè)4比特序號(hào),其對(duì)壓縮器發(fā)送的每個(gè)壓縮分組增加1。解壓縮器使用這個(gè)序號(hào)來檢測(cè)鏈路上丟失的壓縮分組。如果序號(hào)增加超過1,則解壓縮器希望從最后壓縮的分組增量以來的所有壓縮分組增量沒有改變并且為每個(gè)丟失的分組增加一個(gè)增量。然后解壓縮器通過計(jì)算解壓縮分組UDP的校驗(yàn)和并且檢測(cè)其是否與發(fā)送的UDP校驗(yàn)和匹配來檢測(cè)該設(shè)想是正確的。
二次算法限制性太強(qiáng)。首先,其要求在每個(gè)壓縮分組中發(fā)送校驗(yàn)和(2字節(jié))并且因此降低了壓縮效率。其次,對(duì)于典型的音頻流,二次算法僅在自最后解壓縮分組以來沒有任何TS和IP-ID跳躍才有效。
當(dāng)解壓縮器不能對(duì)分組解壓縮時(shí),其向壓縮器發(fā)送一個(gè)否定確認(rèn)Nack。壓縮器一接收到Nack,就發(fā)送未壓縮的頭域。因?yàn)橛蛐枰獰o壓縮地發(fā)送,因此Nack機(jī)制導(dǎo)致至少一個(gè)來回延遲持續(xù)時(shí)間的音頻或視頻中斷期。
為了限制錯(cuò)誤傳播,壓縮器使用刷新機(jī)制,借此即使解壓縮器不要求其也周期性地發(fā)送未壓縮域值。但是這樣的機(jī)制進(jìn)一步降低了壓縮效率。
RFC 2508的另一個(gè)限制是壓縮頭短序號(hào)。當(dāng)解壓縮器接收到序號(hào)與前一個(gè)不連續(xù)的頭時(shí),檢測(cè)到分組丟失并且使用恢復(fù)方案來重新同步壓縮器和解壓縮器。僅使用一個(gè)短序號(hào)來檢測(cè)分組丟失對(duì)易于出錯(cuò)的鏈路,如經(jīng)常發(fā)生‘長丟失’的無線鏈路是不魯棒的。長丟失定義為‘序列循環(huán)’或一行中多個(gè)分組的丟失。當(dāng)長丟失發(fā)生時(shí),解壓縮器接收的分組中的序號(hào)‘回繞’。例如,假設(shè)序號(hào)包含k比特,因此序號(hào)循環(huán)等于2k。如果一行中有2k個(gè)分組丟失,則因?yàn)榭雌饋碓诘絹淼姆纸M中序號(hào)仍連續(xù),所以解壓縮器不能檢測(cè)到分組丟失。
發(fā)明內(nèi)容
本發(fā)明是一個(gè)魯棒和高效的編碼方案,其在一個(gè)實(shí)施方案中稱為VLE(可變長編碼)。VLE以及本發(fā)明的其它實(shí)施方案解決了現(xiàn)有技術(shù)的錯(cuò)誤傳播和效率下降問題。
本發(fā)明部分地基于在壓縮點(diǎn)接收的頭類型2域顯示一個(gè)增加趨勢(shì)的觀察。這暗示來自連續(xù)頭的域趨于具有相同的多個(gè)MSB(最重要比特)并且僅由其多個(gè)LSB(最低有效位)區(qū)別。因此可以通過僅發(fā)送多個(gè)LSB來實(shí)現(xiàn)壓縮。
本發(fā)明使壓縮器能夠確定要發(fā)送的多個(gè)LSB的最小數(shù)量,這樣無論CD-鏈路上前面的壓縮分組怎么丟失,該數(shù)量足以提供正確的解壓縮。
本發(fā)明可以應(yīng)用于任何值序列。數(shù)值越聚合(也就是彼此接近),則效率越高。
根據(jù)本發(fā)明將當(dāng)前值壓縮到最小或減少數(shù)量的比特用于從壓縮器發(fā)送到解壓縮器的方法包括在壓縮器上保留一系列至少一個(gè)先前值,每個(gè)具有不同的k個(gè)最低有效位并且已經(jīng)發(fā)送到解壓縮器;確定表示能夠利用所述一系列先前值中的任何值作為參考值在解壓縮器中成功地對(duì)當(dāng)前值解壓縮的最少或減少數(shù)量比特的k值;以及以壓縮的形式將當(dāng)前值與當(dāng)前值的k個(gè)最低有效位一起從壓縮器發(fā)送到解壓縮器。通過將當(dāng)前值與前面的值相比較來確定當(dāng)前值與先前值之間的最大差值r,同時(shí)選擇大于log2(r)+1的最小整數(shù)作為k來確定k值。解壓縮器將至少一個(gè)確認(rèn)發(fā)送給壓縮器,指示解壓縮器已經(jīng)對(duì)值解壓縮并且壓縮器可更新至少一個(gè)先前的,以丟棄較舊的至少一個(gè)先前值。解壓縮器可用所述一系列至少一個(gè)先前值的最后一個(gè)值的參考值對(duì)當(dāng)前值解壓縮,其將壓縮為具有與和參考值最接近的接收到的當(dāng)前值的k個(gè)最低有效位相同的k個(gè)最低有效位的值。解壓縮器使用包含從小于參考值到大于參考值的值的一個(gè)搜索區(qū)間;并且從搜索區(qū)間里的值中選擇具有相同k個(gè)最低有效位的值。該值可通過將參考值v_ref和比特k的數(shù)量映射到所述一系列至少一個(gè)先前值的和當(dāng)前值上來生成;并且所述一系列至少一個(gè)先前值可以更新以使已經(jīng)確認(rèn)由解壓縮器解壓縮的最舊的發(fā)送值作為最舊值。這些值可以是參考值和比特?cái)?shù)量k的一個(gè)函數(shù)。該函數(shù)可以是]v_ref-2k-1,v_ref+2k-1]。該函數(shù)可以是]v_ref,v_ref+2k]。至少一個(gè)確認(rèn)是接收的未壓縮或壓縮值。至少一個(gè)確認(rèn)是可以是包括在部分壓縮值編碼中使用的信息的接收的壓縮值。至少一個(gè)確認(rèn)包含所述一系列至少一個(gè)先前值中最舊的值。所述一系列至少一個(gè)先前值可以更新以基于估算的可能在壓縮器和解壓縮器之間序列值的發(fā)送期間丟失的值的最大數(shù)量來丟棄較舊的先前值。壓縮的當(dāng)前值對(duì)與當(dāng)前值一起發(fā)送的數(shù)k編碼。該編碼可以是哈夫曼編碼。該值包含RTP頭。至少一個(gè)確認(rèn)可以是表示RTP頭中TS和IP-ID確認(rèn)的RTP SN頭的確認(rèn)。
根據(jù)本發(fā)明的一種用于將當(dāng)前值壓縮成最小或減少數(shù)量比特的系統(tǒng)包括一個(gè)保留一系列至少一個(gè)先前值,每個(gè)先前值具有不同的k個(gè)最低有效位的壓縮器;從壓縮器中接收壓縮成最小或減少數(shù)量的k個(gè)最低有效位的當(dāng)前值的解壓縮器;并且其中壓縮器確定代表最小數(shù)量比特的k值,該值使用所述一系列至少一個(gè)先前值中的任何一個(gè)值作為參考在解壓縮器上對(duì)當(dāng)前值成功地解壓縮。通過將當(dāng)前值與至少一個(gè)先前值相比較確定當(dāng)前值與至少一個(gè)先前值之間的最大差值r,選擇大于log2(r)+1的最小整數(shù)作為k來確定k值。解壓縮器將至少一個(gè)確認(rèn)發(fā)送給壓縮器,指示解壓縮器已經(jīng)對(duì)值解壓縮并且壓縮器可更新所述一系列至少一個(gè)先前值以丟棄較舊的一個(gè)至少一個(gè)先前值。解壓縮器可用所述一系列至少一個(gè)先前值的最后一個(gè)值的參考值,來在解壓縮器上解壓縮將作為具有與和參考值最接近的接收到的當(dāng)前值的k個(gè)最低有效位相同的k個(gè)最低有效位的值而被解壓縮的當(dāng)前值。解壓縮器使用包含從小于參考值到大于參考值的值的一個(gè)搜索區(qū)間;并且從搜索區(qū)間里的值中選擇具有相同k個(gè)最低有效位的值。壓縮器可通過將參考值v_ref和比特的數(shù)量k映射到所述一系列至少一個(gè)先前值和當(dāng)前值上來生成該值;并且所述一系列至少一個(gè)先前值可以更新以使已經(jīng)確認(rèn)由解壓縮器解壓縮的最舊的發(fā)送值作為最舊值。該函數(shù)可以是]v_ref-2k-1,v_ref+2k-1]。該函數(shù)可以是]v_ref,v_ref+2k]。確認(rèn)是接收的未壓縮值。至少一個(gè)確認(rèn)是接收的壓縮值。至少一個(gè)確認(rèn)是可以是包括在部分壓縮值編碼中使用的信息的接收的壓縮值。所述一系列至少一個(gè)先前值可以由壓縮器更新以基于估算的可能在壓縮器和解壓縮器之間序列值的發(fā)送期間丟失的值的最大數(shù)量來丟棄至少一個(gè)較舊的先前值。壓縮的當(dāng)前值對(duì)與當(dāng)前值一起發(fā)送的數(shù)k編碼。該值包含RTP頭。至少一個(gè)確認(rèn)可以是表示RTP頭中TS和IP-ID確認(rèn)的RTP SN頭的確認(rèn)。
附圖簡述
圖1從概念上說明了信息壓縮。
圖2從概念上說明了信息的解壓縮。
圖3說明了根據(jù)本發(fā)明利用確認(rèn)壓縮器從發(fā)送具有較高比特?cái)?shù)的頭到具有較低比特?cái)?shù)的頭的轉(zhuǎn)換。
圖4說明了根據(jù)本發(fā)明壓縮器從發(fā)送具有第一壓縮順序的頭到具有第二壓縮順序的頭的轉(zhuǎn)換。
圖5和6說明了根據(jù)本發(fā)明選擇比特k最小數(shù)的例子。
圖7A和7B說明了根據(jù)本發(fā)明壓縮器存儲(chǔ)的值的滑動(dòng)窗口的使用。
圖8說明一個(gè)根據(jù)本發(fā)明利用兩個(gè)編碼域發(fā)送壓縮值的VLE編碼格式的例子。
實(shí)現(xiàn)本發(fā)明的最佳模式基本概念和規(guī)則圖1從概念上說明了壓縮信息及其例子。壓縮上下文信息是一個(gè)信息子集的一組、一個(gè)子集或一個(gè)代表,其可以是沒有限制的任何類型的信息,包含如圖3和4所示由壓縮器用來作為壓縮算法輸入以生成可以是沒有限制的壓縮頭的壓縮信息的頭。另一個(gè)輸入來自要壓縮的信息源,在例子中其沒有限制的說明為要壓縮的頭。
圖2從概念上說明信息解壓縮及其例子。解壓縮上下文信息是一個(gè)信息子集的一組、一個(gè)子集或一個(gè)代表,其可以是沒有限制的任何類型的信息,包含如圖3和4所示由解壓縮用來作為解壓縮算法輸入以生成可以是沒有限制的解壓縮頭的解壓縮信息的頭。另一個(gè)輸入來自要解壓縮的信息,在例子中其沒有限制的說明為要解壓縮的頭。
壓縮和解壓縮上下文信息都是動(dòng)態(tài)的,也就是說,可以由壓縮器和解壓縮器分別更新。更新的頻率依賴于頭壓縮機(jī)制。在壓縮器上導(dǎo)致壓縮上下文信息更新的時(shí)間包括進(jìn)入頭的壓縮,或接收來自解壓縮器的反饋。在解壓縮器上導(dǎo)致解壓縮上下文信息更新的事件包括進(jìn)入頭的解壓縮。
壓縮器可以是三種狀態(tài)中的一種·FH(完整頭)狀態(tài)·FO(第一順序)狀態(tài)·SO(第二順序)狀態(tài)在初始化階段壓縮器工作在FH狀態(tài)。在FH狀態(tài),壓縮器發(fā)送完整的RTP頭。這個(gè)狀態(tài)通常僅是一個(gè)過渡狀態(tài),其僅在RTP會(huì)話開始出現(xiàn)或因極其異常事件,如壓縮器故障或存儲(chǔ)丟失,而在會(huì)話中間出現(xiàn)。
在更新階段壓縮器工作在FO狀態(tài)。在FO狀態(tài),發(fā)送器發(fā)送FO頭,也就是其頭部攜帶與參考頭相比已經(jīng)改變的,與序號(hào)一起適當(dāng)編碼的域的分組。希望解壓縮器如圖3和4所示能夠?qū)σ欢〝?shù)量的FO確認(rèn),其中數(shù)量依賴于模式。例如,如果是帶有固定參數(shù)的線性模式,則在推斷階段只需要發(fā)送一個(gè)確認(rèn)。
在推斷階段壓縮器工作在SO狀態(tài)。在SO狀態(tài),發(fā)送器發(fā)送SO頭,也就是其頭部基本上只是一個(gè)序號(hào)的分組。解壓縮器可以對(duì)正確接收的SO分組確認(rèn)或不確認(rèn)。
下面描述本發(fā)明使用的,但不限于此的,在VLE中使用的一種數(shù)學(xué)函數(shù)類型。該函數(shù)表示為f(k,v_ref)=(v_1,v_2,…,v_2k),映射為一個(gè)稱為參考值的整數(shù)值v_ref并且許多比特k映射為都具有不同k個(gè)LSB的k元整數(shù)。
雖然任何這樣的函數(shù)都是合適的,但是一個(gè)優(yōu)選的實(shí)施方案僅使用返回連續(xù)值v_1,v_2,..,v_2k,也就是v_i=v_1+i-1的函數(shù)。換句話說,該函數(shù)具有長度有2k值的區(qū)間。該區(qū)間可以寫做]v_ref-C(k,v_ref),v_ref-C(k,v_ref)+2k]其中C是作為k和v_ref函數(shù)的一個(gè)整數(shù)。再一次,雖然可以對(duì)任何這樣的區(qū)間感興趣,但是優(yōu)選實(shí)施方案使用C(k,v_ref)=0和C(k,v_ref)=2k-1。換句話說,該實(shí)施方案使用區(qū)間為]v_ref-2k-1,v_ref+2k-1]以及]v_ref,v_ref+2k]。
下面描述基于]v_ref-2k-1,v_ref+2k-1]間隔的VLE實(shí)施方案。系統(tǒng)由壓縮器、解壓縮器和如圖3和4所示的CD-信道,也就是壓縮器和解壓縮器之間的鏈路組成。該信道是易于出錯(cuò)的。該實(shí)施方案唯一的假設(shè),但不限于此,是信道不記錄壓縮值并且給出作為解壓縮器輸入的壓縮值是沒有被破壞的(或者換句話說破壞的頭被作為丟失頭)。如圖3和4所示該信道可以是一個(gè)單工鏈路,也就是僅傳送來自解壓縮器的壓縮值或雙工信道,也就是信道還傳送從解壓縮器到壓縮器的反饋。在優(yōu)選實(shí)施方案中使用雙工信道。
第一階段是解壓縮器獲得初始值。這由壓縮器或其它合適的裝置在通信開始時(shí)發(fā)送未壓縮值實(shí)現(xiàn)。解壓縮器如圖3和4所示利用反饋信道確認(rèn)接收值。當(dāng)壓縮器接收到一個(gè)反饋確認(rèn)時(shí)初始化無限地完成,然后可以使用VLE編碼進(jìn)行壓縮。在VLE中,值作為比特k的可變數(shù)壓縮。首先討論在VLE模式中解壓縮器的操作。
圖7A和7B說明了窗口更新過程。窗口包括輸入壓縮器并且可能被壓縮但是不需要被壓縮的先前值。假設(shè)在一個(gè)特定時(shí)間點(diǎn)窗口是vi,vi+1,___,vn(1)當(dāng)壓縮一個(gè)新的值vn+1時(shí),如圖7A所示窗口擴(kuò)大以便包括這個(gè)新值。
(2)然后如圖7B所示,當(dāng)壓縮器知道較舊的值不能再由解壓縮器使用時(shí),在這個(gè)例子中,可以是當(dāng)發(fā)生值vi+2的確認(rèn)接收時(shí),通過刪除較舊的一個(gè)或多個(gè)值(在該例子中為vi和vi+1,)來縮小窗口。解壓縮
參考值是由解壓縮器解壓縮的最后一個(gè)值。通過如圖3和4所示確認(rèn)的接收或假設(shè)由在足夠的時(shí)間期間一系列值的發(fā)送,至少一個(gè)值可能統(tǒng)計(jì)地被接收并且不利用來自解壓縮器的任何反饋解壓縮看來,已經(jīng)接收了一個(gè)實(shí)際值,來用信號(hào)通知壓縮器解壓縮。解壓縮器通過提供其k個(gè)LSB與接收的k比特相符的區(qū)間]v_ref-2k-1,v_ref+2k-1]中的唯一值來對(duì)進(jìn)入的壓縮值解壓縮。這個(gè)搜索區(qū)間是前面介紹的函數(shù)的一個(gè)特殊實(shí)例。解壓縮值變成v_ref,其進(jìn)而又用于對(duì)下面進(jìn)入的壓縮值解壓縮。在優(yōu)選實(shí)施方案中,解壓縮器確認(rèn)如圖3和4所示已經(jīng)解壓縮的至少一些分組。需要確認(rèn)的分組數(shù)是完全靈活的并且被選擇以滿足想要應(yīng)用的規(guī)范。如下所示,從解壓縮器發(fā)送到壓縮器的確認(rèn)越多,則正向鏈路上的壓縮效率越高。壓縮現(xiàn)在參考?jí)嚎s器操作。壓縮器保留其已經(jīng)壓縮并且發(fā)送到解壓縮器的值的一個(gè)滑動(dòng)窗口,如圖7A和7B所示。在一個(gè)實(shí)施方案中,該窗口保留其從解壓縮器接收到確認(rèn)的最新值以及按向解壓縮器發(fā)送的順序的所有下面要發(fā)送的值。壓縮器還分別保留滑動(dòng)窗口的最小和最大值v_min和v_max。
當(dāng)一個(gè)新的未壓縮值v到達(dá)壓縮器時(shí),壓縮器發(fā)送對(duì)于滑動(dòng)窗口的每個(gè)v_i在區(qū)間]v_i-2k-1,v_i+2k-1]中的v的k個(gè)LSB。這可以方便地由r<2k-1來表示,其中r=max(|v-v_max|,|v-v_min|)。然后壓縮器選擇大于log2(r)+1的最小整數(shù)作為k。當(dāng)壓縮器接收到確認(rèn)時(shí),其從窗口中刪除在確認(rèn)值之前發(fā)送的所有值,如上述參考圖7B所論述的。
下面的討論說明為什么VLE總是提供正確的解壓縮并且是一種非常靈活的壓縮機(jī)制。
只要壓縮器和解壓縮器遵循上述規(guī)則,則無論在如圖3和4所示的壓縮器和解壓縮器之間的CD-信道上有什么損失,都能正確解壓縮。實(shí)際上,解壓縮器使用的參考值v_ref必須屬于壓縮器窗口,如圖5和6所示的例子中在點(diǎn)v_min和v_max之間,并且因此知道編碼值將在作為解壓縮器使用的搜索區(qū)間的區(qū)間]v_ref-2k-1,v_ref+2k-1]中。
VLE沒有錯(cuò)誤傳播。解壓縮器接收的壓縮分組可以總是解壓縮的。分組丟失轉(zhuǎn)化為壓縮分組大小的一個(gè)逐漸增加。
確認(rèn)越頻繁,窗口中的值越少并且因此可能發(fā)送更少的LSB。尤其是在要壓縮的值符合增加的趨勢(shì)并且對(duì)于每個(gè)新值v,v-v_min增加,直到接收到確認(rèn)為止的頭壓縮情況下更是這樣。
解壓縮器必須知道壓縮值的長度。在有些情況下可以無任何附加信令,例如,通過來自編碼較低層的組幀信息知道這個(gè)長度。如果需要明確的信令,則優(yōu)選實(shí)施方案定義一種VLE格式。該格式可有兩個(gè)域長度域(也就是LSB數(shù)量R)和壓縮值域(也就是原始值v的k個(gè)LSB),如圖8所示。
在優(yōu)選實(shí)施方案中,VLE長度域,如圖8中所示,利用哈夫曼編碼對(duì)自身編碼。也可以使用任何其它編碼方法(例如線性編碼)。對(duì)不同的應(yīng)用應(yīng)該估計(jì)不同長度的可能性,并且然后應(yīng)該使用哈夫曼編碼算法對(duì)這些數(shù)據(jù)中需要的進(jìn)行編碼。在知道鏈路特性(損耗和延遲)、解壓縮器確認(rèn)周期,以及要壓縮的原始值的模式時(shí),可以估計(jì)在壓縮器和解壓縮器之間的通信鏈路上遇到給定長度的可能性。
為進(jìn)一步減少長度域自身的長度,可以限制壓縮器從減少的一組值中選擇域的長度。例如,假設(shè)未壓縮的域是32比特并且想要以最大2比特長度對(duì)下面的可能性遞減順序的4比特、8比特和32比特編碼,合適的編碼字是單一比特0用于4比特,2比特值10用于8比特并且2比特值11用于32比特。
使用合適的編碼使得壓縮值的平均尺寸最小化。
而且,如果可以從其它分組域中得到長度,則長度信息不需要專門的比特。例如,在典型的頭壓縮應(yīng)用中,在壓縮頭中發(fā)送了一個(gè)分組類型域??梢允褂眠@個(gè)分組類型域來暗示幾乎不會(huì)超過的一個(gè)缺省長度。在這種情況下,在缺省長度超過的地方使用一個(gè)單獨(dú)的分組類型。因?yàn)檫@種情況很少發(fā)生,因此額外開銷整體降低了。
如果沒有反饋信道,則需要其它信息(帶外)或額外假設(shè)來使壓縮器窗口向前移動(dòng)并且防止k一直增加。一種方式是假設(shè)沿從壓縮器到解壓縮器的信道至多L個(gè)連續(xù)壓縮值可以丟失。換句話說,壓縮器確切地知道(L+1)個(gè)連續(xù)壓縮值中至少有一個(gè)到達(dá)解壓縮器。因此,壓縮器僅需要在窗口中存儲(chǔ)已經(jīng)發(fā)送到解壓縮器的最近的(L+1)個(gè)值。因此,范圍(v_max-v_min),并且因此k值,僅依賴于最近發(fā)送的(L+1)個(gè)值。
VLE可應(yīng)用于RTP頭壓縮。與RFC 2508相反地,不需要使用壓縮器-解壓縮器序號(hào)。代替地,利用VLE對(duì)RTP序號(hào)編碼。解壓縮器如圖3和4所示在VLE應(yīng)用中描述的,通過向壓縮器發(fā)送它接收的RTP SN來確認(rèn)分組。
如下所述關(guān)于最佳確認(rèn),解壓縮器不需要返回未壓縮的RTP SN值。
下面的例子說明用于如RFC 2508中提出的RTP SN壓縮的本發(fā)明的工作。向壓縮器提供一系列進(jìn)入分組,其SN(序號(hào))是32、33、35、36、39、40、38、41。假設(shè)解壓縮器已經(jīng)確認(rèn)序號(hào)是35的分組,則壓縮器保持一個(gè)如上所述的自從最后一個(gè)確認(rèn)分組以來發(fā)送的序號(hào)窗口。當(dāng)接收到確認(rèn)時(shí),壓縮器窗口是35、36、39、40、38、41?,F(xiàn)在假設(shè)一個(gè)具有序號(hào)值43的新的SN值到達(dá)壓縮器。壓縮器尋找其窗口最大值并且找到41。壓縮器尋找窗口最小值并且找到35。壓縮器計(jì)算進(jìn)入值與其上(43-41=2)界和下界(43-35=8)的距離r。最大距離是8。壓縮器必須發(fā)送在這個(gè)例子中大于log2r+1,2k大于17的整數(shù)的許多比特k。這個(gè)數(shù)是k=5。因?yàn)?3的二進(jìn)制格式寫作101011,所以壓縮器發(fā)送5個(gè)LSB,也就是01011。解壓縮器參考值是解壓縮器解壓縮的最后的值并且其肯定是壓縮器窗口中的值。解壓縮器通過將其5個(gè)LSB是01011并且最接近參考值的值返回來對(duì)進(jìn)入的值(01011)解壓縮。無論參考值是什么,這個(gè)值總是43。例如,如果假設(shè)當(dāng)解壓縮器接收壓縮值時(shí)其接收的最后的值是40(也就是在壓縮器和解壓縮器之間的鏈路上38和41丟失),則解壓縮器使用的搜索區(qū)間是[25,56]或二進(jìn)制格式
。區(qū)間中最后的LSB是01011的唯一一個(gè)值是101011,也就是43。
解壓縮器挑選k值的另一種方法是選擇LSB是01011的離40最近的值。數(shù)40的二進(jìn)制格式是101000。最后的LSB是01011的離101000最近的值是01011,也就是43。這說明無論在壓縮器-解壓縮器鏈路上有什么丟失,VLE都能夠確定將提供正確解壓縮的最小或減少數(shù)量的LSB比特。
圖5和6說明將進(jìn)行k的挑選,以便被VLE編碼的當(dāng)前值的是在具有相同LSB的值中間并且離窗口中最大或最小值最近。圖5說明v大于v_max的情況而圖6說明v小于v_min的情況。
在發(fā)送RTP時(shí)間戳或IP-ID域的分組中,利用用于SN編碼的相同的發(fā)送分組窗口對(duì)這些域編碼。因此,解壓縮器不在反向/反饋信道上回送這些域以便對(duì)其確認(rèn)。窗口還可以看作矢量窗口(SN,TS,IP-ID)。通過僅返回SN域可以確認(rèn)給定的矢量。
當(dāng)SN、TS和IP-ID要發(fā)送時(shí)一個(gè)實(shí)施方案基于確認(rèn)結(jié)構(gòu)來執(zhí)行頭壓縮以便發(fā)送這些域。其它編碼可用于TS和IP-ID。這個(gè)頭壓縮方案概括如下。利用確認(rèn)轉(zhuǎn)換到FO和SO狀態(tài)當(dāng)新的會(huì)話開始時(shí),壓縮器在FH狀態(tài)下工作直到從解壓縮器接收到確認(rèn)(ACK),指示已經(jīng)接收到至少一個(gè)FH分組。解壓縮器負(fù)責(zé)一接收到FH分組就確認(rèn),因此壓縮器可以從FH狀態(tài)轉(zhuǎn)換到FO狀態(tài)。確認(rèn)可包括由解壓縮器解壓縮的壓縮當(dāng)前值或未壓縮的當(dāng)前值。兩個(gè)值中任何一個(gè)允許壓縮器更新壓縮狀態(tài)并且啟動(dòng)舊值的丟棄。
在FO狀態(tài),壓縮器發(fā)送FO分組并且期望解壓縮器確認(rèn)接收的FO分組(不是對(duì)每個(gè)FO分組必須的)。如果壓縮器確定(基于ACK)解壓縮器已經(jīng)建立了FOD,并且該FOD與正在發(fā)送的當(dāng)前頭和上一個(gè)發(fā)送的頭之間的FOD相同,則壓縮器進(jìn)入SO狀態(tài)并且開始發(fā)送SO分組。
由于上面討論的原因,壓縮器需要從SO狀態(tài)退回FO狀態(tài)。但是,壓縮器從不轉(zhuǎn)換回FH狀態(tài)除非發(fā)生某些異常事件,如因?yàn)橄到y(tǒng)崩潰解壓縮器丟失其上下文。無論何時(shí)壓縮器處于FO狀態(tài),其都如上所述試圖進(jìn)入SO狀態(tài)。
合適的分組類型公開在2000年3月28日提交的名為“Method andSystem for Transmitting and Receiving Packets(用于發(fā)送和接收分組的方法和系統(tǒng))”專利申請(qǐng)序號(hào)09/536,639中。
下面描述VLE的兩個(gè)變量,稱為固定長編碼(FLE)和單邊可變長編碼(OVLE)。固定長編碼(FLE)如果已經(jīng)確切知道范圍r=(v_max-v_min)從不超過上界,則可以使用固定長編碼。每個(gè)值采用相同數(shù)量比特編碼,其是覆蓋這個(gè)范圍需要的最小數(shù)量比特。在這種情況下因?yàn)榧僭O(shè)長度是一個(gè)已知常數(shù)因此不需要發(fā)送。單邊可變長編碼(OVLE)前面描述的VLE基于與參考值v_ref和返回搜索區(qū)間]v_ref-2k-1,v_ref+2k-1]的比特?cái)?shù)k相匹配的一個(gè)函數(shù)。因?yàn)槠淇梢赃m應(yīng)從一個(gè)值到另一個(gè)值的任意改變(正,負(fù)),所以非常通用和靈活。但是,當(dāng)用于單調(diào)的域時(shí)這個(gè)區(qū)間不是最有效的。實(shí)際上,解壓縮器僅在子集]v_ref,v_ref+2k-1]中獲得解壓縮值。
在RTP頭壓縮的情況下,這些域通常以增加的順序到達(dá)壓縮器。但是,因?yàn)閬碜詨嚎s器的上行流可能出現(xiàn)混亂或在時(shí)間戳的情況下,編碼器可能不按采樣的順序發(fā)送編碼的幀,所以會(huì)有例外。為了提高效率,利用返回不在v_ref中間的,如]v_ref-2k-2,v_ref+3*2k-2]的搜索區(qū)間的函數(shù)是有價(jià)值的。
當(dāng)VLE用于作為自適應(yīng)頭壓縮應(yīng)用的組成部分時(shí),可能使用區(qū)間]v_ref,v_ref+2k],其對(duì)于給定的k最有效。這稱為單邊可變長編碼(OVLE)。只要壓縮器進(jìn)入值在增加,VLE就用于FO分組而OVLE用于SO分組。在到達(dá)壓縮器之前分組出現(xiàn)混亂的情況下,壓縮器總是將分組作為FO分組壓縮。替代地,即使發(fā)生混亂,壓縮器也會(huì)重新排序和/或丟棄分組以便停留在SO狀態(tài)。用于壓縮數(shù)據(jù)的可變長編碼(VLE)和單邊VLE(OVLE)的最優(yōu)確認(rèn)算法為提高整體壓縮效率,希望解壓縮器發(fā)送到壓縮器的確認(rèn)的大小保持最小。在這里討論的算法中,解壓縮器僅需要在確認(rèn)中發(fā)送與其在壓縮消息中接收的相同數(shù)量的比特(或最多多2比特,如后面描述的)。
如在VLE和OVLE中描述的,壓縮器保持值VSW的滑動(dòng)窗口并且在發(fā)送到解壓縮器之后將每個(gè)原始未壓縮的值存儲(chǔ)在VSW中。
VSWv1,v2,v3,…,vi,…vn注意v1是最舊的值,并且vn是最新的值。事例1單一編碼方法假設(shè)僅使用一個(gè)編碼方法(VLE或OVLE)并且壓縮器和解壓縮器都知道使用的是哪一個(gè)。當(dāng)解壓縮器成功地接收到一個(gè)壓縮值并且決定對(duì)其確認(rèn)時(shí),其簡單地將接收的壓縮值拷貝到確認(rèn)中并且將其發(fā)送回壓縮器。
當(dāng)壓縮器接收到確認(rèn)消息時(shí),其按下面的三個(gè)步驟處理確認(rèn)1)使用VSW中的(最舊的值)作為參考值并且遵守與解壓縮器相同的規(guī)則對(duì)確認(rèn)中的壓縮值解壓縮。解壓縮的值標(biāo)識(shí)為v_acked。
2)對(duì)于第一次(最舊)出現(xiàn)的v_acked從頭(最舊)到尾(最新)搜索VSW。
3)刪除在v_acked之前(比v_acked舊)的所有值。
可以看到上述算法通過保留VSW的下列特性來工作·如果由壓縮器利用k比特發(fā)送HSW中的vi,則可以利用相同的k比特解壓縮并且利用任何vj(j≤i))作為參考值。
特別地,vi可以用作參考值來對(duì)VSW中的任何值解壓縮。與確認(rèn)總是確認(rèn)VSW中的一個(gè)值相結(jié)合,可以推斷從步驟1)得到的v_acked是觸發(fā)確認(rèn)消息的真正正確的原始值。事例2多編碼方法在這種情況下,解壓縮器在VLE和OVLE之間動(dòng)態(tài)地切換編碼方法。其僅需要稍微改變上述的算法就可以處理這種情況?;旧希诿總€(gè)確認(rèn)消息中,解壓縮器必須增加一個(gè)標(biāo)記以指示使用哪種編碼方法來壓縮接收值。因此,當(dāng)壓縮器接收到確認(rèn)消息時(shí),其可以基于確認(rèn)中的編碼標(biāo)記來選擇正確的解壓縮方法。只要保留VSW的屬性,基于與上一節(jié)相同的推理改變的算法就是正確的。
當(dāng)VLE和/或OVLE應(yīng)用于頭壓縮時(shí),因?yàn)榻鈮嚎s器可以基于頭類型和其它配置信息隱含地得到該信息,所以在從壓縮器發(fā)送到解壓縮器的壓縮頭中不需要明確地?cái)y帶編碼標(biāo)記。但是,在相反的方向,必須在確認(rèn)消息中明確地?cái)y帶該標(biāo)記。在最壞的情況下,需要2比特來區(qū)分三種可能性VLE、正側(cè)(plus-sided)OVLE、負(fù)側(cè)(mius-sided)OVLE。如果OVLE的側(cè)信息是預(yù)先定義的,則編碼標(biāo)記可以減少到1比特。VSW中的重復(fù)值有一種特殊的情況上面還沒有討論到。在壓縮器滑動(dòng)窗口中相同(原始未壓縮)的值可能出現(xiàn)不止一次。出于下面兩個(gè)原因需要考慮這一點(diǎn)1)理論上,算法應(yīng)該是通用的并且對(duì)任何序列值都有效;2)實(shí)際上,某些視頻代碼的RTP時(shí)間戳確實(shí)具有這種行為。
問題是,雖然計(jì)算的值v_acked仍然是正確的,但是壓縮器不能確定VSW中出現(xiàn)的哪個(gè)v_acked實(shí)際上觸發(fā)了ACK(如果找到了多個(gè)出現(xiàn))。
但是,應(yīng)當(dāng)指出,因?yàn)閴嚎s器總是選擇VSW中第一個(gè)(最舊的)出現(xiàn)的v_acked,所以算法是有效的。如果不是正確的實(shí)例觸發(fā)了確認(rèn),則唯一的副作用是從VSW中刪除的值比應(yīng)該刪除的少。結(jié)果,會(huì)使用比需要的多的比特對(duì)此后到達(dá)的新的值編碼。
如果重復(fù)值很少出現(xiàn),則因?yàn)榇_認(rèn)一個(gè)值在VSW中僅出現(xiàn)一次的另一個(gè)(明確)確認(rèn)一到達(dá),壓縮器就離開其不是最佳的狀態(tài),所以不需要對(duì)上述算法做任何修改。
如果認(rèn)為重復(fù)值經(jīng)常發(fā)生,則會(huì)增加額外信息以去除確認(rèn)的二義性。一個(gè)例子是將一個(gè)生成號(hào)(GN)分配給每個(gè)壓縮值并且要求解壓縮器將GN放在確認(rèn)中。
雖然已經(jīng)參考優(yōu)選實(shí)施方案描述了本發(fā)明,但是應(yīng)該理解在不背離其精神和范圍的情況下可以做許多的修改。意指所有這些修改落在所附權(quán)利要求的范圍里。
權(quán)利要求
1.一種將當(dāng)前值壓縮到最小數(shù)比特用于壓縮器發(fā)送到解壓縮器的方法,包括在壓縮器上保留一系列至少一個(gè)先前值,每個(gè)先前值具有不同的k個(gè)最低有效位并且已經(jīng)發(fā)送到解壓縮器;確定表示最小數(shù)比特的k值,其允許利用所述一系列先前值中的任何值作為參考值在解壓縮器上對(duì)當(dāng)前值成功地解壓縮;以及將當(dāng)前值以壓縮形式與當(dāng)前值的k個(gè)最低有效位一起從壓縮器發(fā)送到解壓縮器。
2.根據(jù)權(quán)利要求1的方法,其中通過將當(dāng)前值與至少一個(gè)先前值比較以確定當(dāng)前值與至少一個(gè)先前值之間的最大差值r,以及選擇k作為大于log2(r)+1的最小整數(shù)來確定k值。
3.根據(jù)權(quán)利要求1的方法,其中解壓縮器向壓縮器發(fā)送至少一個(gè)確認(rèn),其指示解壓縮器已經(jīng)對(duì)值解壓縮并且壓縮器更新所述一系列至少一個(gè)先前值以便丟棄至少一個(gè)較舊的先前值。
4.根據(jù)權(quán)利要求2的方法,其中解壓縮器向壓縮器發(fā)送至少一個(gè)確認(rèn),其指示解壓縮器已經(jīng)對(duì)值解壓縮并且壓縮器更新所述一系列至少一個(gè)先前值以便丟棄至少一個(gè)較舊的先前值。
5.根據(jù)權(quán)利要求1的方法,還包括在解壓縮器上利用所述一系列至少一個(gè)先前值的最后值的參考值對(duì)當(dāng)前值解壓縮,其將壓縮為具有與和參考值最接近的接收到的當(dāng)前值的k個(gè)最低有效位相同的k個(gè)最低有效位的值。
6.根據(jù)權(quán)利要求2的方法,還包括在解壓縮器上利用所述一系列至少一個(gè)先前值的最后值的參考值對(duì)當(dāng)前值解壓縮,其將壓縮為具有與和參考值最接近的接收到的當(dāng)前值的k個(gè)最低有效位相同的k個(gè)最低有效位值的值。
7.根據(jù)權(quán)利要求3的方法,還包括在解壓縮器上利用所述一系列至少一個(gè)先前值的最后值的參考值對(duì)當(dāng)前值解壓縮,其將壓縮為具有與和參考值最接近的接收到的當(dāng)前值的k個(gè)最低有效位相同的k個(gè)最低有效位值的值。
8.根據(jù)權(quán)利要求4的方法,還包括在解壓縮器上利用所述一系列至少一個(gè)先前值的最后值的參考值對(duì)當(dāng)前值解壓縮,其將壓縮為具有與和參考值最接近的接收到的當(dāng)前值的k個(gè)最低有效位相同的k個(gè)最低有效位值的值。
9.根據(jù)權(quán)利要求5的方法,還包括在解壓縮器上使用一個(gè)搜索區(qū)間,其包含范圍從小于到大于參考值的值;以及從位于搜索區(qū)間的值中選擇具有相同k個(gè)最低有效位的值。
10.根據(jù)權(quán)利要求6的方法,還包括在解壓縮器上使用一個(gè)搜索區(qū)間,其包含范圍從小于到大于參考值的值;以及從位于搜索區(qū)間的值中選擇具有相同k個(gè)最低有效位的值。
11.根據(jù)權(quán)利要求7的方法,還包括在解壓縮器上使用一個(gè)搜索區(qū)間,其包含范圍從小于到大于參考值的值;以及從位于搜索區(qū)間的值中選擇具有相同k個(gè)最低有效位的值。
12.根據(jù)權(quán)利要求8的方法,還包括在解壓縮器上使用一個(gè)搜索區(qū)間,其包含范圍從小于到大于參考值的值;以及從位于搜索區(qū)間的值中選擇具有相同k個(gè)最低有效位的值。
13.根據(jù)權(quán)利要求1的方法,其中通過將參考值v_ref和比特?cái)?shù)k映射到所述一系列至少一個(gè)先前值和當(dāng)前值生成所述值;以及更新所述一系列至少一個(gè)先前值以便將已經(jīng)由解壓縮器確認(rèn)解壓縮的最舊的發(fā)送值作為最舊值。
14.根據(jù)權(quán)利要求2的方法,其中通過將參考值v_ref和比特?cái)?shù)k映射到所述一系列至少一個(gè)先前值和當(dāng)前值生成所述值;以及更新所述一系列至少一個(gè)先前值以便將已經(jīng)由解壓縮器確認(rèn)解壓縮的最舊的發(fā)送值作為最舊值。
15.根據(jù)權(quán)利要求3的方法,其中通過將參考值v_ref和比特?cái)?shù)k映射到所述一系列至少一個(gè)先前值和當(dāng)前值生成所述值;以及更新所述一系列至少一個(gè)先前值以便將已經(jīng)由解壓縮器確認(rèn)解壓縮的最舊的發(fā)送值作為最舊值。
16.根據(jù)權(quán)利要求4的方法,其中通過將參考值v_ref和比特?cái)?shù)k映射到所述一系列至少一個(gè)先前值和當(dāng)前值生成所述值;以及更新所述一系列至少一個(gè)先前值以便將已經(jīng)由解壓縮器確認(rèn)解壓縮的最舊的發(fā)送值作為最舊值。
17.根據(jù)權(quán)利要求5的方法,其中通過將參考值v_ref和比特?cái)?shù)k映射到所述一系列至少一個(gè)先前值和當(dāng)前值生成所述值;以及更新所述一系列至少一個(gè)先前值以便將已經(jīng)由解壓縮器確認(rèn)解壓縮的最舊的發(fā)送值作為最舊值。
18.根據(jù)權(quán)利要求6的方法,其中通過將參考值v_ref和比特?cái)?shù)k映射到所述一系列至少一個(gè)先前值和當(dāng)前值生成所述值;以及更新所述一系列至少一個(gè)先前值以便將已經(jīng)由解壓縮器確認(rèn)解壓縮的最舊的發(fā)送值作為最舊值。
19.根據(jù)權(quán)利要求7的方法,其中通過將參考值v_ref和比特?cái)?shù)k映射到所述一系列至少一個(gè)先前值和當(dāng)前值生成所述值;以及更新所述一系列至少一個(gè)先前值以便將已經(jīng)由解壓縮器確認(rèn)解壓縮的最舊的發(fā)送值作為最舊值。
20.根據(jù)權(quán)利要求8的方法,其中通過將參考值v_ref和比特?cái)?shù)k映射到所述一系列至少一個(gè)先前值和當(dāng)前值生成所述值;以及更新所述一系列至少一個(gè)先前值以便將已經(jīng)由解壓縮器確認(rèn)解壓縮的最舊的發(fā)送值作為最舊值。
21.根據(jù)權(quán)利要求9的方法,其中通過將參考值v_ref和比特?cái)?shù)k映射到所述一系列至少一個(gè)先前值和當(dāng)前值生成所述值;以及更新所述一系列至少一個(gè)先前值以便將已經(jīng)由解壓縮器確認(rèn)解壓縮的最舊的發(fā)送值作為最舊值。
22.根據(jù)權(quán)利要求10的方法,其中通過將參考值v_ref和比特?cái)?shù)k映射到所述一系列至少一個(gè)先前值和當(dāng)前值生成所述值;以及更新所述一系列至少一個(gè)先前值以便將已經(jīng)由解壓縮器確認(rèn)解壓縮的最舊的發(fā)送值作為最舊值。
23.根據(jù)權(quán)利要求11的方法,其中通過將參考值v_ref和比特?cái)?shù)k映射到所述一系列至少一個(gè)先前值和當(dāng)前值生成所述值;以及更新所述一系列至少一個(gè)先前值以便將已經(jīng)由解壓縮器確認(rèn)解壓縮的最舊的發(fā)送值作為最舊值。
24.根據(jù)權(quán)利要求12的方法,其中通過將參考值v_ref和比特?cái)?shù)k映射到所述一系列至少一個(gè)先前值和當(dāng)前值生成所述值;以及更新所述一系列至少一個(gè)先前值以便將已經(jīng)由解壓縮器確認(rèn)解壓縮的最舊的發(fā)送值作為最舊值。
25.根據(jù)權(quán)利要求1的方法,其中所述值是參考值和比特?cái)?shù)k的函數(shù)。
26.根據(jù)權(quán)利要求25的方法,其中所述函數(shù)是]v_ref-2k-1,v_ref+2k-1]。
27.根據(jù)權(quán)利要求25的方法,其中所述函數(shù)是]v_ref,v_ref+2k]。
28.根據(jù)權(quán)利要求3的方法,其中所述至少一個(gè)確認(rèn)是接收到的未壓縮值。
29.根據(jù)權(quán)利要求3的方法,其中所述至少一個(gè)確認(rèn)是接收到的壓縮值。
30.根據(jù)權(quán)利要求29的方法,其中所述至少一個(gè)確認(rèn)是包括在部分壓縮值編碼中使用的信息的接收到的壓縮值。
31.根據(jù)權(quán)利要求28的方法,其中所述至少一個(gè)確認(rèn)包含所述一系列先前值中的一個(gè)最舊值。
32.根據(jù)權(quán)利要求29的方法,其中所述至少一個(gè)確認(rèn)包含所述一系列先前值中的一個(gè)最舊值。
33.根據(jù)權(quán)利要求1的方法,其中基于在壓縮器和解壓縮器之間序列值的發(fā)送期間可丟失值的估算的最大數(shù)來更新所述一系列先前值以便丟棄較舊的先前值。
34.根據(jù)權(quán)利要求1的方法,其中所述已壓縮的當(dāng)前值將與當(dāng)前值一起發(fā)送的數(shù)k編碼。
35.根據(jù)權(quán)利要求34的方法,其中所述編碼是哈夫曼編碼。
36.根據(jù)權(quán)利要求1的方法,其中所述值包括RTP頭。
37.根據(jù)權(quán)利要求33的方法,其中所述至少一個(gè)確認(rèn)是代表RTP頭中TS和IP-ID確認(rèn)的RTP SN頭的確認(rèn)。
38.一種用于將當(dāng)前值壓縮成最小數(shù)量的比特的系統(tǒng),包括保留一系列至少一個(gè)先前值的壓縮器,每個(gè)先前值具有不同的k個(gè)最低有效位;接收來自壓縮器的壓縮到最少的k個(gè)最低有效位的當(dāng)前值的解壓縮器;并且其中壓縮器確定代表比特的最小數(shù)的k值,其允許利用所述一系列至少一個(gè)先前值中的任何一個(gè)作為參考在解壓縮器上對(duì)當(dāng)前值成功解壓縮。
39.根據(jù)權(quán)利要求38的系統(tǒng),其中通過將當(dāng)前值與至少一個(gè)先前值相比較以確定當(dāng)前值與至少一個(gè)先前值之間的最大差值r,同時(shí)選擇大于log2(r)+1的最小整數(shù)作為k來確定k值。
40.根據(jù)權(quán)利要求38的系統(tǒng),其中解壓縮器向壓縮器發(fā)送至少一個(gè)確認(rèn),指示解壓縮器已經(jīng)對(duì)值解壓縮并且壓縮器更新所述一系列至少一個(gè)先前值以丟棄較舊的先前值。
41.根據(jù)權(quán)利要求39的系統(tǒng),其中解壓縮器向壓縮器發(fā)送至少一個(gè)確認(rèn),指示解壓縮器已經(jīng)對(duì)值解壓縮并且壓縮器更新所述一系列至少一個(gè)先前值以丟棄較舊的先前值。
42.根據(jù)權(quán)利要求38的系統(tǒng),其中解壓縮器可用所述一系列的至少一個(gè)先前值的最后一個(gè)值的參考值,來在解壓縮器上解壓縮當(dāng)前值,其將壓縮為具有與和參考值最接近的接收到的當(dāng)前值的k個(gè)最低有效位相同的k個(gè)最低有效位的值。
43.根據(jù)權(quán)利要求39的系統(tǒng),其中解壓縮器可用所述一系列的至少一個(gè)先前值的最后一個(gè)值的參考值,來在解壓縮器上解壓縮當(dāng)前值,其將壓縮為具有與和參考值最接近的接收到的當(dāng)前值的k個(gè)最低有效位相同的k個(gè)最低有效位的值。
44.根據(jù)權(quán)利要求40的系統(tǒng),其中解壓縮器可用所述一系列的至少一個(gè)先前值的最后一個(gè)值的參考值,來在解壓縮器上解壓縮當(dāng)前值,其將壓縮為具有與和參考值最接近的接收到的當(dāng)前值的k個(gè)最低有效位相同的k個(gè)最低有效位的值。
45.根據(jù)權(quán)利要求41的系統(tǒng),其中解壓縮器可用所述一系列的至少一個(gè)先前值的最后一個(gè)值的參考值,來在解壓縮器上解壓縮當(dāng)前值,其將壓縮為具有與和參考值最接近的接收到的當(dāng)前值的k個(gè)最低有效位相同的k個(gè)最低有效位的值。
46.根據(jù)權(quán)利要求42的系統(tǒng),還包括解壓縮器使用一個(gè)范圍包含從小于到大于參考值的值的搜索區(qū)間;并且從搜索區(qū)間中選擇具有相同k個(gè)最低有效位的值。
47.根據(jù)權(quán)利要求43的系統(tǒng),還包括解壓縮器使用一個(gè)范圍包含從小于到大于參考值的值的搜索區(qū)間;并且從搜索區(qū)間中選擇具有相同k個(gè)最低有效位的值。
48.根據(jù)權(quán)利要求44的系統(tǒng),還包括解壓縮器使用一個(gè)范圍包含從小于到大于參考值的值的搜索區(qū)間;并且從搜索區(qū)間中選擇具有相同k個(gè)最低有效位的值。
49.根據(jù)權(quán)利要求45的系統(tǒng),還包括解壓縮器使用一個(gè)范圍包含從小于到大于參考值的值的搜索區(qū)間;并且從搜索區(qū)間中選擇具有相同k個(gè)最低有效位的值。
50.根據(jù)權(quán)利要求38的系統(tǒng),其中壓縮器通過將參考值v_ref和比特?cái)?shù)k映射到所述一系列至少一個(gè)先前值和當(dāng)前值生成所述值;并且更新所述一系列至少一個(gè)先前值以便將已經(jīng)由解壓縮器確認(rèn)解壓縮的最舊的發(fā)送值作為最舊值。
51.根據(jù)權(quán)利要求38的系統(tǒng),其中所述函數(shù)是]v_ref-2k-1,v_ref+2k-1]。
52.根據(jù)權(quán)利要求38的系統(tǒng),其中所述函數(shù)是]v_ref,v_ref+2k]。
53.根據(jù)權(quán)利要求40的系統(tǒng),其中所述確認(rèn)是接收到的未壓縮值。
54.根據(jù)權(quán)利要求40的系統(tǒng),其中所述至少一個(gè)確認(rèn)是接收到的壓縮值。
55.根據(jù)權(quán)利要求54的系統(tǒng),其中所述至少一個(gè)確認(rèn)是包括在部分壓縮值編碼中使用的信息的接收到的壓縮值。
56.根據(jù)權(quán)利要求38的系統(tǒng),其中由壓縮器基于在壓縮器和解壓縮器之間序列值的發(fā)送期間可丟失值的估算的最大數(shù)來更新所述一系列至少一個(gè)先前值以便丟棄至少一個(gè)較舊的先前值。
57.根據(jù)權(quán)利要求38的系統(tǒng),其中所述已壓縮的當(dāng)前值將對(duì)與當(dāng)前值一起發(fā)送的數(shù)k編碼。
58.根據(jù)權(quán)利要求38的系統(tǒng),其中所述值包括RTP頭。
59.根據(jù)權(quán)利要求40的系統(tǒng),其中所述至少一個(gè)確認(rèn)是代表RTP頭中TS和IP-ID確認(rèn)的RTP SN頭的確認(rèn)。
60.一種將當(dāng)前值壓縮到減小數(shù)量的比特用于從壓縮器發(fā)送到解壓縮器的方法,包括在壓縮器上保留一系列至少一個(gè)先前值,每個(gè)先前值具有不同的k個(gè)最低有效位并且已經(jīng)發(fā)送到解壓縮器;確定表示減小的比特?cái)?shù)的k值,其允許利用所述一系列先前值中的任何值作為參考值而在解壓縮器上對(duì)當(dāng)前值成功地解壓縮;以及將當(dāng)前值以壓縮形式與當(dāng)前值的k個(gè)最低有效位一起從壓縮器發(fā)送到解壓縮器。
全文摘要
本發(fā)明是一種用于將當(dāng)前值壓縮到最小數(shù)量的比特以便從壓縮器發(fā)送到解壓縮器的方法和系統(tǒng)。根據(jù)本發(fā)明的方法包括在壓縮器上保留一系列至少先前值,每個(gè)先前值具有不同的k個(gè)最低有效位并且其已經(jīng)發(fā)送到解壓縮器;確定表示允許利用所述一系列先前值中的任何值作為參考值而在解壓縮器上對(duì)當(dāng)前值成功地解壓縮的最小數(shù)比特的k值;以及將當(dāng)前值以壓縮的形式與當(dāng)前值的k個(gè)最低有效位一起從壓縮器發(fā)送到解壓縮器。
文檔編號(hào)H03M7/40GK1390390SQ00815502
公開日2003年1月8日 申請(qǐng)日期2000年11月2日 優(yōu)先權(quán)日1999年11月9日
發(fā)明者希姆·列, Z·劉, D·萊安 申請(qǐng)人:諾基亞有限公司, 希姆·列