專利名稱:一種丟包補(bǔ)償?shù)姆椒ê蛯?shí)現(xiàn)丟包補(bǔ)償?shù)难b置及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)通訊領(lǐng)域,尤其涉及一種丟包補(bǔ)償?shù)姆椒ê蛯?shí)現(xiàn)丟包補(bǔ)償 的裝置及系統(tǒng)。
背景技術(shù):
G711語(yǔ)音編解碼算法是一種采用脈沖編碼調(diào)制(Pulse Code Modulation, PCM)技術(shù),對(duì)8K采樣率語(yǔ)音的壓縮編碼技術(shù),是當(dāng)前公共電話網(wǎng)絡(luò)上使用最 為廣泛的語(yǔ)音編解碼算法。在因特網(wǎng)協(xié)議承栽語(yǔ)音(Voice over Internet Protocol, VoIP)處理過(guò)程中,常常以10ms的語(yǔ)音數(shù)據(jù)作為G.711編解碼所處理的最小時(shí) 間間隔,因?yàn)樵诰W(wǎng)絡(luò)當(dāng)中存在著諸多情況引起的丟包,所以G.711附錄I為使用 者提供一種行之有效的丟包補(bǔ)償算法。當(dāng)前G.711附錄I所描述的丟包補(bǔ)償算法,是基于lOms作為一個(gè)數(shù)據(jù)幀長(zhǎng) 度的。在整個(gè)設(shè)計(jì)當(dāng)中設(shè)置兩個(gè)較大的數(shù)據(jù)緩沖區(qū)history[390]*16bit, pitchbuf[390]*16bit。其中緩沖區(qū)history[390]中保存了已經(jīng)播放的48.75ms的數(shù) 據(jù),用來(lái)對(duì)接下來(lái)可能發(fā)生的丟失的1~6包進(jìn)行補(bǔ)償,同時(shí)也用來(lái)緩存3.75ms 的數(shù)據(jù)結(jié)果,以進(jìn)行更好的語(yǔ)音平滑。緩沖區(qū)pitchbuf!390]只是在丟包中才進(jìn)行 運(yùn)算,在不丟包時(shí)不做任何改動(dòng),同時(shí)丟包時(shí)的輸出數(shù)據(jù)也不對(duì)其進(jìn)行更新。在實(shí)現(xiàn)本發(fā)明過(guò)程中,發(fā)明人發(fā)現(xiàn),在上述方案中,history和pitchbuf都是 靜態(tài)數(shù)據(jù)空間,在多通道同時(shí)編解碼的方案當(dāng)中,這兩個(gè)緩沖區(qū)只能為本通道 服務(wù),不能夠被其他的通道或者計(jì)算所公用。因此,當(dāng)通道數(shù)目較多時(shí),將為 每個(gè)通道都分配靜態(tài)數(shù)據(jù)空間,這樣多個(gè)通道將占用很多的靜態(tài)空間。發(fā)明內(nèi)容本發(fā)明所要解決的技術(shù)問(wèn)題在于,提供一種用于丟包補(bǔ)償?shù)姆椒ê蛯?shí)現(xiàn)丟 包補(bǔ)償?shù)难b置及系統(tǒng)??晒?jié)省丟包補(bǔ)償中需要的數(shù)據(jù)存儲(chǔ)空間。為此, 一方面,本發(fā)明的實(shí)施例提供了一種丟包補(bǔ)償方法,所述方法用于
數(shù)據(jù)幀的傳輸,包括獲取數(shù)據(jù)幀的丟幀情況;根據(jù)所述丟幀情況和丟包補(bǔ)償 算法對(duì)數(shù)據(jù)幀進(jìn)行丟包補(bǔ)償處理,并將經(jīng)過(guò)丟包補(bǔ)償處理的所述數(shù)據(jù)幀進(jìn)行壓 縮編碼后存儲(chǔ);其中,在丟包補(bǔ)償算法中,需要使用編碼后存儲(chǔ)的數(shù)據(jù)幀時(shí), 對(duì)所述數(shù)據(jù)幀進(jìn)行解碼。另一方面,本發(fā)明的實(shí)施例提供了一種實(shí)現(xiàn)丟包補(bǔ)償?shù)难b置,所述裝置用 于根據(jù)數(shù)據(jù)幀傳輸中的丟包情況進(jìn)行丟包補(bǔ)償,該裝置包括獲取模塊,用于 獲取數(shù)據(jù)幀的丟幀情況;處理模塊,用于才艮據(jù)所迷丟幀情況和丟包補(bǔ)償算法對(duì) 數(shù)據(jù)幀進(jìn)行丟包補(bǔ)償處理,其中,在丟包補(bǔ)償算法中,需要使用編碼后存儲(chǔ)的 數(shù)據(jù)幀時(shí),對(duì)所述數(shù)據(jù)幀進(jìn)行解碼;編碼存儲(chǔ)模塊,用于將經(jīng)過(guò)丟包補(bǔ)償處理 的數(shù)據(jù)幀進(jìn)行壓縮編碼后存儲(chǔ)。另一方面,本發(fā)明的實(shí)施例提供了一種實(shí)現(xiàn)丟包補(bǔ)償?shù)南到y(tǒng),所述系統(tǒng)用 于才艮據(jù)數(shù)據(jù)幀傳輸中的丟包情況進(jìn)行丟包補(bǔ)償,所述系統(tǒng)包括獲取模塊,用于獲取數(shù)據(jù)幀的丟幀情況;編解碼模塊,用于根據(jù)所述丟幀情況和丟包補(bǔ)償算法對(duì)數(shù)據(jù)幀進(jìn)行丟包補(bǔ) 償處理,并將經(jīng)過(guò)丟包補(bǔ)償處理的數(shù)據(jù)幀進(jìn)行壓縮編碼后存儲(chǔ),其中,在丟包 補(bǔ)償算法中,需要使用編碼后存儲(chǔ)的數(shù)據(jù)幀時(shí),對(duì)所述數(shù)據(jù)幀進(jìn)行解碼。采用本發(fā)明實(shí)施例提供的方案,由于在數(shù)據(jù)存儲(chǔ)在靜態(tài)空間時(shí),增加了一 個(gè)編解碼過(guò)程,使得存儲(chǔ)的數(shù)據(jù)量降低了,節(jié)省了該方法中對(duì)靜態(tài)空間的需求。
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施 例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述 中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付 出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是本發(fā)明實(shí)施例中丟包補(bǔ)償方法的一個(gè)具體實(shí)施例的流程示意圖; 圖2是本發(fā)明實(shí)施例中丟包補(bǔ)償方法的另 一個(gè)具體實(shí)施例的流程示意圖; 圖3是本發(fā)明實(shí)施例中實(shí)現(xiàn)丟包補(bǔ)償裝置的一個(gè)具體實(shí)施例的組成示意圖 圖4是圖3中處理模塊的一個(gè)具體實(shí)施例的組成示意圖; 圖5是圖3中編碼存儲(chǔ);^莫塊的一個(gè)具體實(shí)施例的組成示意圖; 圖6是本發(fā)明實(shí)施例中丟包補(bǔ)償系統(tǒng)的一個(gè)具體組成示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清 楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是 全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造 性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。為了降低丟包補(bǔ)償算法中相應(yīng)緩沖區(qū)占用的靜態(tài)存儲(chǔ)空間,本發(fā)明實(shí)施例中提供了一種丟包補(bǔ)償方法,用于數(shù)據(jù)幀的傳輸,如圖l所示,該方法包括101、 獲取數(shù)據(jù)幀的丟幀情況。102、 根據(jù)所述丟幀情況和丟包補(bǔ)償算法對(duì)數(shù)據(jù)幀進(jìn)行丟包補(bǔ)償處理;其中, 在丟包補(bǔ)償算法中,需要^f吏用編碼后存儲(chǔ)的數(shù)據(jù)幀時(shí),對(duì)所述數(shù)據(jù)幀進(jìn)行解碼。103、 將經(jīng)過(guò)丟包補(bǔ)償處理的所述數(shù)據(jù)幀進(jìn)行壓縮編碼后存儲(chǔ)。。下面基于G.711附錄I對(duì)本發(fā)明實(shí)施例中所描述的丟包補(bǔ)償方法進(jìn)行進(jìn)一步 描述。在本實(shí)施例中,上述103中所指的存儲(chǔ)的數(shù)據(jù)幀,可以是指G.711中定義的 緩沖區(qū)history和pitchbuf中存儲(chǔ)的數(shù)據(jù)。在G.711中解碼所需要的靜態(tài)存儲(chǔ)空 間為817*16bit,其中有3%*2*16bit的空間為第一緩沖區(qū)(或稱為history)和第 二緩沖區(qū)(或稱為pitchbuf),其余為其他變量的存儲(chǔ)區(qū)。A中所指的壓縮編碼 在此例中具體可為將16bit數(shù)據(jù)編碼轉(zhuǎn)換為8bit數(shù)據(jù)。若原來(lái)的緩沖區(qū)是用16bit 的數(shù)字信號(hào)(Digital Signal Processor, DSP)實(shí)現(xiàn)的,那么經(jīng)過(guò)編碼后的數(shù)據(jù)可 以通過(guò)組合存儲(chǔ)的方式,將8bit數(shù)據(jù)存儲(chǔ)在16bit的DSP中。這樣就可以將緩 沖區(qū)history和pitchbuf存儲(chǔ)空間各減去一半,達(dá)到節(jié)省存儲(chǔ)空間的目的。如圖2所示,為本發(fā)明實(shí)施例中丟包補(bǔ)償方法的實(shí)現(xiàn)流程圖。在該流程中, 根據(jù)丟幀的情況不同,進(jìn)行不同的處理,圖中以6條帶箭頭的黑色曲線"i兌明6 種不同的處理流程。且以H簡(jiǎn)稱history緩沖區(qū)。0、 當(dāng)判斷當(dāng)前幀和當(dāng)前幀的前一幀都不是丟幀時(shí),按流程0處理。具體包 括使用新接收的數(shù)據(jù)幀更新history中存儲(chǔ)的數(shù)據(jù),并對(duì)該數(shù)據(jù)幀進(jìn)行3.75ms 的延時(shí)后再解碼輸出。1、 當(dāng)判斷當(dāng)前幀不是丟幀,但是上一幀是丟幀時(shí),按流程1處理。具體包 括對(duì)當(dāng)前接收的數(shù)據(jù)幀進(jìn)行解碼;對(duì)存儲(chǔ)在history中的數(shù)據(jù)幀進(jìn)行解碼; 根據(jù)history中存儲(chǔ)的數(shù)據(jù)解碼后的結(jié)果,對(duì)當(dāng)前數(shù)據(jù)幀解碼后的數(shù)據(jù)幀進(jìn) 行平滑,以得到更好的語(yǔ)音質(zhì)量;然后對(duì)平滑后的數(shù)據(jù)幀進(jìn)行3.75ms的延時(shí),以便進(jìn)行輸出;同時(shí),對(duì)平滑后的數(shù)據(jù)幀進(jìn)行壓縮編碼,如將16bit數(shù)據(jù)幀編碼為8bit數(shù)據(jù)幀;將編碼后的數(shù)據(jù)幀存儲(chǔ)在history中。2、 當(dāng)判斷當(dāng)前幀是丟幀,而且是第一次丟幀時(shí),按流程2處理。具體包括 根據(jù)history中的數(shù)據(jù)更新pitchbuf中的數(shù)據(jù)幀,即保持第一次丟包時(shí)pitchbuf和history中存儲(chǔ)的數(shù)據(jù)幀的一致性;接下來(lái)對(duì)更新后的pitchbuf (或history)中的數(shù)據(jù)幀進(jìn)行解碼,解碼后的數(shù) 據(jù)幀可存儲(chǔ)在一個(gè)臨時(shí)緩沖區(qū)中,如定義一個(gè)pitchbuf一tmp[390]臨時(shí)緩沖區(qū)。再利用臨時(shí)緩沖區(qū)中存儲(chǔ)的數(shù)據(jù)幀,計(jì)算得到基周期,并將臨時(shí)緩沖區(qū)中 最后1/4基周期長(zhǎng)度的數(shù)據(jù)幀保存到緩沖區(qū)lastq[30]當(dāng)中,并對(duì)這1/4基周期長(zhǎng) 度的數(shù)據(jù)幀進(jìn)行平滑;將平滑后的1/4基周期長(zhǎng)度的數(shù)據(jù)幀覆蓋臨時(shí)緩沖區(qū)中相應(yīng)的位置,并利用 覆蓋后的臨時(shí)緩沖區(qū)中的數(shù)據(jù)計(jì)算出10ms補(bǔ)償數(shù)據(jù)幀;對(duì)上步中獲得的補(bǔ)償?shù)?0ms數(shù)據(jù)進(jìn)行3.75ms延時(shí)后輸出;對(duì)臨時(shí)緩沖區(qū)中的數(shù)據(jù)幀進(jìn)行壓縮編碼后保存到history和pitchbuf中,如 以組合編碼的方式存放到DSP的對(duì)應(yīng)存儲(chǔ)區(qū)域內(nèi)。3、 當(dāng)判斷當(dāng)前幀是第二次或第三次丟幀時(shí),按流程3處理。具體包括對(duì)history中存儲(chǔ)的數(shù)據(jù)進(jìn)行解碼,由于此時(shí)history和pitchbuf中的數(shù)據(jù)幀 完全相同,因此也可是對(duì)pitchbuf中存儲(chǔ)的數(shù)據(jù)幀進(jìn)行解碼;將解碼后的出具存儲(chǔ)到臨時(shí)緩沖區(qū)中,然后進(jìn)行相應(yīng)更新,其更新過(guò)程跟 流程2中的方式稍有不同,具體可參加G.711中的相關(guān)規(guī)定;利用更新后的臨時(shí)緩沖區(qū)中的數(shù)據(jù)計(jì)算出新的lOms補(bǔ)償數(shù)據(jù)幀,并將該補(bǔ) 償數(shù)據(jù)幀和history中解碼出的數(shù)據(jù)幀進(jìn)行疊加后,做平滑處理;對(duì)上述做平滑處理后的數(shù)據(jù)幀進(jìn)行3.75ms延時(shí)后輸出;將上述做平滑處理后的數(shù)據(jù)幀壓縮編碼后存儲(chǔ)到history和pitchbuf中。4、 當(dāng)判斷當(dāng)前幀是第四、五或六次丟幀時(shí),按流程4處理。具體包括 對(duì)history中存儲(chǔ)的數(shù)據(jù)幀進(jìn)行解碼,該解碼結(jié)果可存儲(chǔ)到臨時(shí)緩沖區(qū)中,
由于此時(shí)history和pitchbuf中的數(shù)據(jù)完全相同,因此也可是對(duì)pitchbuf中存儲(chǔ) 的數(shù)據(jù)幀進(jìn)行解碼;根據(jù)解碼后的數(shù)據(jù)幀計(jì)算相應(yīng)的補(bǔ)償結(jié)果,并根據(jù)該補(bǔ)償結(jié)果對(duì)整體的數(shù) 據(jù)幀進(jìn)行平滑處理;對(duì)經(jīng)過(guò)平滑處理后的數(shù)據(jù)幀進(jìn)行3.75ms延時(shí)后輸出;將上述做平滑處理后的數(shù)據(jù)幀壓縮編碼后存儲(chǔ)到history和pitchbuf中。5、當(dāng)判斷當(dāng)前幀是第七次甚至更高次的丟幀時(shí),按流程6處理。即對(duì)于連 續(xù)丟包超過(guò)6次的,將當(dāng)前幀數(shù)據(jù)幀全部補(bǔ)充為"0", 4旦是仍然需要將該全"0" 數(shù)據(jù)幀延時(shí)3.75ms后輸出,并使用該輸出數(shù)據(jù)幀更新history和pitchbuf,由于 數(shù)據(jù)幀為全"0",此時(shí)對(duì)該輸出數(shù)據(jù)幀可不進(jìn)行平滑。其中,在上述的補(bǔ)償方法中的某一具體流程分支中,history和pitchbuf中存 儲(chǔ)的所有數(shù)據(jù)幀并不是一定都要需要的,比如可能只需要history和pitchbuf中 存儲(chǔ)的一部分?jǐn)?shù)據(jù)幀就可以完成該次的丟包補(bǔ)償,因此也可以僅對(duì)該部分需要 的數(shù)據(jù)幀進(jìn)行編解碼處理,而不必對(duì)所有需要history和pitchbuf存儲(chǔ)的數(shù)據(jù)幀 都進(jìn)行編解碼處理,這就需要對(duì)存儲(chǔ)的數(shù)據(jù)幀選擇性的進(jìn)行編解碼處理,比如 在存儲(chǔ)前進(jìn)行判斷,該部分?jǐn)?shù)據(jù)幀是否需要編碼。這種選擇性的編解碼處理方 法會(huì)增加一定的算法復(fù)雜度,但是由于不需要對(duì)所有存儲(chǔ)的數(shù)據(jù)幀都進(jìn)行編解 碼處理,因此執(zhí)行效率會(huì)有所改善。采用上述的丟包補(bǔ)償方法,由于在數(shù)據(jù)存儲(chǔ)在靜態(tài)空間時(shí),增加了一個(gè)編 解碼過(guò)程,使得存儲(chǔ)的數(shù)據(jù)量P務(wù)低了 ,節(jié)省了該方法中對(duì)靜態(tài)空間的需求。另一方面,與上述丟包補(bǔ)償方法,相應(yīng)的,本發(fā)明實(shí)施例還提供了一種實(shí) 現(xiàn)丟包補(bǔ)償?shù)难b置,如圖3所示,該裝置包括獲取模塊l,用于獲取數(shù)據(jù)幀的 丟幀情況;處理模塊2,用于根據(jù)所述丟幀情況和丟包補(bǔ)償算法對(duì)數(shù)據(jù)幀進(jìn)行丟 包補(bǔ)償處理,其中,在丟包補(bǔ)償算法中,需要使用編碼后存儲(chǔ)的數(shù)據(jù)幀時(shí),對(duì) 所述數(shù)據(jù)進(jìn)行解碼;編碼存儲(chǔ)模塊3,用于將經(jīng)過(guò)丟包補(bǔ)償處理的數(shù)據(jù)幀進(jìn)行壓 縮編碼后存儲(chǔ)。其中,所述處理模塊2可包括下述模塊中部分或全部(如圖4所示,為包 括全部的情況)第一處理模塊20,用于當(dāng)所述丟幀情況為當(dāng)前數(shù)據(jù)幀不是丟幀,且當(dāng)前數(shù) 據(jù)幀的前一數(shù)據(jù)幀是丟幀時(shí),根據(jù)第一處理策略對(duì)當(dāng)前數(shù)據(jù)幀進(jìn)行丟包補(bǔ)償處
理;第一編碼模塊,用于將經(jīng)過(guò)丟包補(bǔ)償處理的當(dāng)前數(shù)據(jù)幀進(jìn)行壓縮編碼后存 儲(chǔ)在第一緩沖區(qū)。第一處理策略包括對(duì)當(dāng)前數(shù)據(jù)幀進(jìn)行解碼;對(duì)存儲(chǔ)在第一緩沖區(qū)的數(shù)據(jù) 進(jìn)行解碼;根據(jù)第一緩沖區(qū)中解碼后的數(shù)據(jù)對(duì)當(dāng)前數(shù)據(jù)幀解碼后的數(shù)據(jù)進(jìn)行平 滑;對(duì)經(jīng)過(guò)平滑后的數(shù)據(jù)進(jìn)行延時(shí)。第二處理模塊22,用于當(dāng)所述丟幀情況為當(dāng)前數(shù)據(jù)幀是第一次丟幀時(shí),根 據(jù)第二處理策略對(duì)當(dāng)前數(shù)據(jù)幀進(jìn)行丟包補(bǔ)償處理;第二處理策略包括根據(jù)所述第一緩沖區(qū)的數(shù)據(jù)更新第二緩沖區(qū);對(duì)所述 第一緩沖區(qū)的數(shù)據(jù)幀進(jìn)行解碼,并根據(jù)解碼后的數(shù)據(jù)幀獲得基周期;將更新后 的第二緩沖區(qū)中的數(shù)據(jù)的最后1/4基周期長(zhǎng)度的數(shù)據(jù)幀進(jìn)行平滑;將平滑后的數(shù) 據(jù)幀替換所述第二緩沖區(qū)中相應(yīng)的最后1/4基周期長(zhǎng)度的數(shù)據(jù)幀;根據(jù)進(jìn)行替換 后的數(shù)據(jù)計(jì)算出需要補(bǔ)償?shù)臄?shù)據(jù)幀;對(duì)所述需要補(bǔ)償?shù)臄?shù)據(jù)幀進(jìn)行延時(shí)。第三處理模塊24,用于當(dāng)所述丟幀情況為當(dāng)前數(shù)據(jù)幀是第二次或第三次丟 幀時(shí),根據(jù)第三處理策略對(duì)當(dāng)前數(shù)據(jù)幀進(jìn)行丟包補(bǔ)償處理;第三處理策略包括對(duì)所述第 一緩沖區(qū)或第二緩沖區(qū)的數(shù)據(jù)幀進(jìn)行解碼; 對(duì)解碼后的數(shù)據(jù)幀進(jìn)行相應(yīng)的更新;根據(jù)更新后的數(shù)據(jù)幀計(jì)算出補(bǔ)償數(shù)據(jù)幀; 對(duì)所述補(bǔ)償數(shù)據(jù)幀和第一緩沖區(qū)中解碼獲得數(shù)據(jù)幀疊加后進(jìn)行平滑,并進(jìn)行延 時(shí)。第四處理模塊26,用于當(dāng)所述丟幀情況為當(dāng)前數(shù)據(jù)幀是第四、五或六次丟 幀時(shí),根據(jù)第四處理策略對(duì)當(dāng)前數(shù)據(jù)幀進(jìn)行丟包補(bǔ)償處理;第四處理策略包括對(duì)所述第一緩沖區(qū)或第二緩沖的數(shù)據(jù)幀進(jìn)行解碼;根 據(jù)解碼后的數(shù)據(jù)幀計(jì)算出相應(yīng)的補(bǔ)償結(jié)果,對(duì)整體數(shù)據(jù)幀進(jìn)行平滑處理后延時(shí)。相應(yīng)的,編碼存儲(chǔ)才莫塊3包括如下;f莫塊中的一個(gè)或多個(gè)(圖5為包括全部 的情況)第二編碼模塊30,用于將經(jīng)過(guò)丟包補(bǔ)償處理的當(dāng)前數(shù)據(jù)幀進(jìn)行壓縮編碼后 存儲(chǔ)在第 一緩沖區(qū)和第二緩沖區(qū);第三編碼模塊32,用于將經(jīng)過(guò)丟包補(bǔ)償處理的當(dāng)前數(shù)據(jù)幀進(jìn)行壓縮編碼后 存儲(chǔ)在第 一緩沖區(qū)和第二緩沖區(qū);第四編碼模塊34,用于將經(jīng)過(guò)丟包補(bǔ)償處理的當(dāng)前數(shù)據(jù)幀進(jìn)行壓縮編碼后 存儲(chǔ)在第 一緩沖區(qū)和第二緩沖區(qū)。
其中,上述處理模塊2和編碼存儲(chǔ)模塊3可以由單獨(dú)的編解碼模塊4實(shí)現(xiàn), 該編解碼才莫塊4和獲取模塊1可以是物理上分離的裝置,并可組成一種實(shí)現(xiàn)丟 包補(bǔ)償?shù)南到y(tǒng),如圖6所示。采用上述的丟包補(bǔ)償裝置和系統(tǒng),由于在數(shù)據(jù)存儲(chǔ)在靜態(tài)空間時(shí),增加了 一個(gè)編解碼過(guò)程,由于對(duì)靜態(tài)空間中存儲(chǔ)的數(shù)據(jù)幀進(jìn)行了壓縮編碼,使得數(shù)據(jù) 幀的存儲(chǔ)空間減少了 ,降低了該方法中對(duì)靜態(tài)空間的需求。以上所描述的裝置實(shí)施例但J又是示意性的,其中所述作為分離部件說(shuō)明的 單元可以是或者也可以不是物理上分開(kāi)的,即可以位于一個(gè)地方,或者也可以 分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來(lái) 實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性的勞動(dòng)的情況 下,即可以理解并實(shí)施。通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到各實(shí)施 方式可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件。 基于這樣的理解,上述技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)^L出貢獻(xiàn)的部分可以 以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介 質(zhì)中,如ROM/RAM、磁碟、光盤(pán)等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備 (可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行各個(gè)實(shí)施例或者實(shí)施例 的某些部分所述的方法。以上所述的實(shí)施方式,并不構(gòu)成對(duì)該技術(shù)方案保護(hù)范圍的限定。任何在上 述實(shí)施方式的精神和原則之內(nèi)所作的修改、等同替換和改進(jìn)等,均應(yīng)包含在該 技術(shù)方案的保護(hù)范圍之內(nèi)。
權(quán)利要求
1、一種丟包補(bǔ)償方法,所述方法用于數(shù)據(jù)幀的傳輸,其特征在于,所述方法包括獲取數(shù)據(jù)幀的丟幀情況;根據(jù)所述丟幀情況和丟包補(bǔ)償算法對(duì)所述數(shù)據(jù)幀進(jìn)行丟包補(bǔ)償處理,并將經(jīng)過(guò)所述丟包補(bǔ)償處理的數(shù)據(jù)幀進(jìn)行壓縮編碼后存儲(chǔ);其中,在所述丟包補(bǔ)償算法中,當(dāng)需要使用編碼后存儲(chǔ)的所述數(shù)據(jù)幀時(shí),對(duì)所述數(shù)據(jù)幀進(jìn)行解碼。
2、 如權(quán)利要求l所述的方法,其特征在于,所述根據(jù)所述丟幀情況和丟包 補(bǔ)償算法對(duì)所述數(shù)據(jù)幀進(jìn)行丟包補(bǔ)償處理,并將經(jīng)過(guò)所述丟包補(bǔ)償處理的數(shù)據(jù) 幀進(jìn)行壓縮編碼后存儲(chǔ)的步驟包括當(dāng)所述丟幀情況為當(dāng)前凄t據(jù)幀不是丟幀,所述當(dāng)前數(shù)據(jù)幀的前一數(shù)據(jù)幀是 丟幀時(shí),根據(jù)第一處理策略對(duì)當(dāng)所述前數(shù)據(jù)幀進(jìn)行所述丟包補(bǔ)償處理; 將經(jīng)過(guò)丟包補(bǔ)償處理的當(dāng)前數(shù)據(jù)幀進(jìn)行壓縮編碼后存儲(chǔ)在第 一緩沖區(qū)。
3、 如權(quán)利要求2所述的方法,其特征在于,所述根據(jù)第一處理策略對(duì)所述 當(dāng)前數(shù)據(jù)幀進(jìn)行所述丟包補(bǔ)償處理包括對(duì)所述當(dāng)前數(shù)據(jù)幀進(jìn)行解碼; 對(duì)存儲(chǔ)在所述第 一緩沖區(qū)的數(shù)據(jù)幀進(jìn)行解碼;根據(jù)所述第 一緩沖區(qū)中解碼后的數(shù)據(jù)幀對(duì)所述當(dāng)前數(shù)據(jù)幀解碼后的數(shù)據(jù)幀 進(jìn)行平滑;對(duì)經(jīng)過(guò)平滑后的數(shù)據(jù)幀進(jìn)行延時(shí)。
4、 如權(quán)利要求l所述的方法,其特征在于,所述根據(jù)所述丟幀情況和丟包 補(bǔ)償算法對(duì)所述數(shù)據(jù)幀進(jìn)行丟包補(bǔ)償處理,并將經(jīng)過(guò)所述丟包補(bǔ)償處理的數(shù)據(jù) 幀進(jìn)行壓縮編碼后存儲(chǔ)的步驟包括當(dāng)所述丟幀情況為所述當(dāng)前數(shù)據(jù)幀是第一次丟幀時(shí),4艮據(jù)第二處理策略對(duì) 所述當(dāng)前數(shù)據(jù)幀進(jìn)^f亍丟包補(bǔ)償處理; 將經(jīng)過(guò)所述丟包補(bǔ)償處理的當(dāng)前數(shù)據(jù)幀進(jìn)行壓縮編碼后存儲(chǔ)在第一緩沖區(qū) 和第二緩沖區(qū)。
5、 如權(quán)利要求4所述的方法,其特征在于,所述根據(jù)第二處理策略對(duì)所述 當(dāng)前數(shù)據(jù)幀進(jìn)行丟包補(bǔ)償處理包括根據(jù)所述第 一緩沖區(qū)的數(shù)據(jù)幀更新第二緩沖區(qū);對(duì)所述更新后的第二緩沖區(qū)的數(shù)據(jù)幀進(jìn)行解碼,并根據(jù)解碼后的數(shù)據(jù)幀獲 得基周期;將更新后的第二緩沖區(qū)中的數(shù)據(jù)幀的最后1/4基周期長(zhǎng)度的數(shù)據(jù)進(jìn)行平滑; 將平滑后的數(shù)據(jù)替換所述第二緩沖區(qū)中相應(yīng)的最后1/4基周期長(zhǎng)度的數(shù)據(jù), 得到替換后的數(shù)據(jù)幀;根據(jù)替換后的數(shù)據(jù)幀計(jì)算出補(bǔ)償?shù)臄?shù)據(jù)幀; 對(duì)所述需要補(bǔ)償?shù)臄?shù)據(jù)幀進(jìn)行延時(shí)。
6、 如權(quán)利要求l所述的方法,其特征在于,所述根據(jù)所述丟幀情況和丟包 補(bǔ)償算法對(duì)所述數(shù)據(jù)幀進(jìn)行丟包補(bǔ)償處理,并將經(jīng)過(guò)所述丟包補(bǔ)償處理的數(shù)據(jù) 幀進(jìn)行壓縮編碼后存儲(chǔ)的步驟包括當(dāng)所述丟幀情況為當(dāng)前數(shù)據(jù)幀是第二次或第三次丟幀時(shí),根據(jù)第三處理策 略對(duì)所述'當(dāng)前數(shù)據(jù)幀進(jìn)行丟包補(bǔ)償處理;將經(jīng)過(guò)所述丟包補(bǔ)償處理的當(dāng)前數(shù)據(jù)幀進(jìn)行壓縮編碼后存儲(chǔ)在第一緩沖區(qū) 和第二緩沖區(qū)。
7、 如權(quán)利要求6所述的方法,其特征在于,所述根據(jù)第三處理策略對(duì)當(dāng)前 數(shù)據(jù)幀進(jìn)行丟包補(bǔ)償處理包括對(duì)所述第一緩沖區(qū)或第二緩沖區(qū)的數(shù)據(jù)幀進(jìn)行解碼; 對(duì)解碼后的數(shù)據(jù)幀進(jìn)行相應(yīng)的更新; 根據(jù)更新后的數(shù)據(jù)幀計(jì)算出補(bǔ)償數(shù)據(jù)幀;對(duì)所述補(bǔ)償數(shù)據(jù)幀和第一緩沖區(qū)中解碼獲得數(shù)據(jù)幀疊加后進(jìn)行平滑,并進(jìn) 行延時(shí)。
8、 如權(quán)利要求l所述的方法,其特征在于,所述根據(jù)所述丟幀情況和丟包 補(bǔ)償算法對(duì)所述數(shù)據(jù)幀進(jìn)行丟包補(bǔ)償處理,并將經(jīng)過(guò)所述丟包補(bǔ)償處理的數(shù)據(jù) 幀進(jìn)行壓縮編碼后存儲(chǔ)的步驟包括當(dāng)所述丟幀情況為所述當(dāng)前數(shù)據(jù)幀是第四、五或六次丟幀時(shí),才艮據(jù)第四處 理策略對(duì)所述當(dāng)前數(shù)據(jù)幀進(jìn)行丟包補(bǔ)償處理;將經(jīng)過(guò)所述丟包補(bǔ)償處理的當(dāng)前數(shù)據(jù)幀進(jìn)行壓縮編碼后存儲(chǔ)在第 一緩沖區(qū) 和第二緩沖區(qū)。
9、 如權(quán)利要求8所述的方法,其特征在于,所述根據(jù)第四處理策略對(duì)當(dāng)前 數(shù)據(jù)幀進(jìn)行丟包補(bǔ)償處理包括對(duì)所述第一緩沖區(qū)或第二緩沖區(qū)的數(shù)據(jù)幀進(jìn)行解碼; 根據(jù)解碼后的數(shù)據(jù)幀計(jì)算出相應(yīng)的補(bǔ)償結(jié)果,對(duì)整體數(shù)據(jù)幀進(jìn)行平滑處理 后延時(shí)。
10、 一種實(shí)現(xiàn)丟包補(bǔ)償?shù)难b置,所述裝置用于根據(jù)數(shù)據(jù)幀傳輸中的丟包情 況進(jìn)行丟包補(bǔ)償,其特征在于,所述裝置包括獲取模塊,用于獲取數(shù)據(jù)幀的丟幀情況;處理模塊,用于根據(jù)所述丟幀情況果和丟包補(bǔ)償算法對(duì)數(shù)據(jù)幀進(jìn)行丟包補(bǔ) 償處理,其中,在丟包補(bǔ)償算法中,需要使用編碼后存儲(chǔ)的數(shù)據(jù)幀時(shí),對(duì)所述 數(shù)據(jù)幀進(jìn)行解碼;編碼存儲(chǔ)模塊,用于將經(jīng)過(guò)所述丟包補(bǔ)償處理的數(shù)據(jù)幀進(jìn)行壓縮編碼后存儲(chǔ)。
11、 如權(quán)利要求10所述的裝置,其特征在于,所述處理模塊包括第一處理模塊,用于所述丟幀情況為當(dāng)前數(shù)據(jù)幀不是丟 幀,當(dāng)前數(shù)據(jù)幀的前一數(shù)據(jù)幀是丟幀時(shí),#4居第一處理策略對(duì)所述當(dāng)前數(shù)據(jù)幀 進(jìn)行丟包補(bǔ)償處理;所述編碼存儲(chǔ)模塊包括第一編碼模塊,用于將經(jīng)過(guò)所述丟包補(bǔ)償處理的當(dāng) 前數(shù)據(jù)幀進(jìn)行壓縮編碼后存儲(chǔ)在第 一緩沖區(qū);其中,所述第一處理策略包括 對(duì)當(dāng)前數(shù)據(jù)幀進(jìn)行解碼;對(duì)存儲(chǔ)在第 一緩沖區(qū)的數(shù)據(jù)幀進(jìn)行解碼;根據(jù)第 一緩沖區(qū)中解碼后的數(shù)據(jù)幀對(duì)當(dāng)前數(shù)據(jù)幀解碼后的數(shù)據(jù)幀進(jìn)行平 對(duì)經(jīng)過(guò)平滑后的數(shù)據(jù)幀進(jìn)行延時(shí)。
12、如權(quán)利要求IO所述的裝置,其特征在于,所述處理模塊包括第二處理模塊,用于當(dāng)所述丟幀情況為所述當(dāng)前數(shù)據(jù)幀 是第一次丟幀時(shí),根據(jù)第二處理策略對(duì)所述當(dāng)前數(shù)據(jù)幀進(jìn)行丟包補(bǔ)償處理;所述編碼存儲(chǔ)模塊包括第二編碼模塊,用于將經(jīng)過(guò)所述丟包補(bǔ)償處理的當(dāng) 前數(shù)據(jù)幀進(jìn)行壓縮編碼后存儲(chǔ)在第 一緩沖區(qū)和第二緩沖區(qū);其中,所述第二處理策略包括根據(jù)所述第一緩沖區(qū)的數(shù)據(jù)幀更新第二緩沖區(qū);對(duì)所述第 一緩沖區(qū)的數(shù)據(jù)幀進(jìn)行解碼,并根據(jù)解碼后的數(shù)據(jù)幀獲得基周期; 將更新后的第二緩沖區(qū)中的數(shù)據(jù)幀的最后1/4基周期長(zhǎng)度的數(shù)據(jù)進(jìn)行平滑; 將平滑后的數(shù)據(jù)替換所述第二緩沖區(qū)中相應(yīng)的最后1/4基周期長(zhǎng)度的數(shù)據(jù); 根據(jù)進(jìn)行替換后的數(shù)據(jù)幀計(jì)算出需要補(bǔ)償?shù)臄?shù)據(jù)幀; 對(duì)所述需要補(bǔ)償?shù)臄?shù)據(jù)幀進(jìn)行延時(shí)。
13、如權(quán)利要求10所述的裝置,其特征在于,所述處理模塊包括第三處理模塊,用于當(dāng)所述丟幀情況為所述當(dāng)前數(shù)據(jù)幀 是第二次或第三次丟幀時(shí),根據(jù)第三處理策略對(duì)所述當(dāng)前數(shù)據(jù)幀進(jìn)行丟包補(bǔ)償 處理;所述編碼存儲(chǔ)it塊包括第三編碼^t塊,用于將經(jīng)過(guò)所述丟包補(bǔ)償處理的當(dāng) 前數(shù)據(jù)幀進(jìn)行壓縮編碼后存儲(chǔ)在第一緩沖區(qū)和第二緩沖區(qū), 其中,所述第三處理策略包括 對(duì)所述第一緩沖區(qū)或第二緩沖區(qū)的數(shù)據(jù)幀進(jìn)行解碼; 對(duì)解碼后的數(shù)據(jù)幀進(jìn)行相應(yīng)的更新; 根據(jù)更新后的數(shù)據(jù)幀計(jì)算出4卜償數(shù)據(jù)幀;對(duì)所述補(bǔ)償數(shù)據(jù)幀和第一緩沖區(qū)中解碼獲得數(shù)據(jù)幀疊加后進(jìn)行平滑,并進(jìn)行延時(shí)。
14、 如權(quán)利要求10所述的裝置,其特征在于,所述處理模塊包括第四處理模塊,用于當(dāng)所述丟幀情況為當(dāng)前數(shù)據(jù)幀是第 四、五或六次丟幀時(shí),根據(jù)第四處理策略對(duì)所述當(dāng)前數(shù)據(jù)幀進(jìn)行丟包補(bǔ)償處理;所述編碼存儲(chǔ)模塊包括第四編碼模塊,用于將所述經(jīng)過(guò)丟包補(bǔ)償處理的當(dāng) 前數(shù)據(jù)幀進(jìn)行壓縮編碼后存儲(chǔ)在第一緩沖區(qū)和第二緩沖區(qū),其中,所述第四處理策略包括對(duì)所述第 一緩沖區(qū)或第二緩沖的數(shù)據(jù)幀進(jìn)行解碼;根據(jù)解碼后的數(shù)據(jù)幀計(jì)算出相應(yīng)的補(bǔ)償結(jié)果,對(duì)整體數(shù)據(jù)幀進(jìn)行平滑處理 后延時(shí)。
15、 一種實(shí)現(xiàn)丟包補(bǔ)償?shù)南到y(tǒng),所述系統(tǒng)用于根據(jù)數(shù)據(jù)幀傳輸中的丟包情 況進(jìn)行丟包補(bǔ)償,其特征在于,所述系統(tǒng)包括獲取模塊,用于獲取數(shù)據(jù)幀的丟幀情況;編解碼模塊,用于才艮據(jù)所述丟幀情況和丟包補(bǔ)償算法對(duì)凄t據(jù)幀進(jìn)行丟包補(bǔ) 償處理,并將經(jīng)過(guò)丟包補(bǔ)償處理的數(shù)據(jù)幀進(jìn)行壓縮編碼后存儲(chǔ),其中,在丟包 補(bǔ)償算法中,需要使用編碼后存儲(chǔ)的數(shù)據(jù)幀時(shí),對(duì)所述數(shù)據(jù)幀進(jìn)行解碼。
16、 如權(quán)利要求15所述的系統(tǒng),其特征在于,所述編解碼模塊包括 處理模塊,用于根據(jù)所述丟幀情況和丟包補(bǔ)償算法對(duì)數(shù)據(jù)幀進(jìn)行丟包補(bǔ)償處理,其中,在丟包補(bǔ)償算法中,需要使用編碼后存儲(chǔ)的數(shù)據(jù)幀時(shí),對(duì)所述數(shù) 據(jù)幀進(jìn)行解碼;編碼存儲(chǔ)模塊,用于將經(jīng)過(guò)所述丟包補(bǔ)償處理的數(shù)據(jù)幀進(jìn)行壓縮編碼后存儲(chǔ)。
全文摘要
本發(fā)明實(shí)施例公開(kāi)了一種丟包補(bǔ)償方法和實(shí)現(xiàn)丟包補(bǔ)償?shù)难b置及系統(tǒng),該方法用于數(shù)據(jù)幀的傳輸,包括獲取數(shù)據(jù)幀的丟幀情況;根據(jù)所述丟幀情況和丟包補(bǔ)償算法對(duì)數(shù)據(jù)幀進(jìn)行丟包補(bǔ)償處理,并將經(jīng)過(guò)丟包補(bǔ)償處理的所述數(shù)據(jù)進(jìn)行壓縮編碼后存儲(chǔ);其中,在丟包補(bǔ)償算法中,需要使用編碼后存儲(chǔ)的數(shù)據(jù)時(shí),對(duì)所述數(shù)據(jù)進(jìn)行解碼。采用本發(fā)明實(shí)施例提供的方案,由于在數(shù)據(jù)存儲(chǔ)在靜態(tài)空間時(shí),增加了一個(gè)編解碼過(guò)程,使得存儲(chǔ)的數(shù)據(jù)量降低了,節(jié)省了該方法中對(duì)靜態(tài)空間的需求。
文檔編號(hào)H04L12/56GK101399636SQ200810198318
公開(kāi)日2009年4月1日 申請(qǐng)日期2008年9月4日 優(yōu)先權(quán)日2008年9月4日
發(fā)明者朝魯檬 申請(qǐng)人:華為技術(shù)有限公司