專利名稱:一種抖動(dòng)緩存裝置和抖動(dòng)緩存管理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)傳輸技術(shù)領(lǐng)域,尤其是涉及一種抖動(dòng)緩存裝置和抖動(dòng) 緩存管理方法。
背景技術(shù):
隨著IP電話的廣泛應(yīng)用,IP電話的語(yǔ)音質(zhì)量越來(lái)越受到人們的關(guān)注,
而影響IP電話質(zhì)量的主要有3個(gè)因素抖動(dòng)、分組延時(shí)和分組丟失。在語(yǔ) 音抖動(dòng)處理中主要采用的是抖動(dòng)緩沖技術(shù),即在接收方設(shè)定一個(gè)抖動(dòng)緩存, 數(shù)據(jù)包到達(dá)時(shí)首先進(jìn)入抖動(dòng)緩存中暫存,抖動(dòng)緩存再以穩(wěn)定平緩的速率將 數(shù)據(jù)包發(fā)送到解碼器。該緩沖技術(shù)可以在一定限度內(nèi)有效處理語(yǔ)音抖動(dòng), 提高音質(zhì)。
抖動(dòng)緩存的任務(wù)是存儲(chǔ)數(shù)據(jù)包以便覆蓋包抖動(dòng),對(duì)VoIP (Voice over IP, IP網(wǎng)絡(luò)承載語(yǔ)音業(yè)務(wù))網(wǎng)絡(luò)和設(shè)備的語(yǔ)音質(zhì)量有著非常重要的影響。 因?yàn)镮P網(wǎng)絡(luò)沒(méi)有固定的傳輸路徑,所以每個(gè)數(shù)據(jù)包從起點(diǎn)到目的地可選擇 不同的路線,因此數(shù)據(jù)包很少能按照與發(fā)送相同的順序抵達(dá)。抖動(dòng)緩存通 過(guò)確定抵達(dá)時(shí)間以及適應(yīng)網(wǎng)絡(luò)時(shí)間的變化,對(duì)數(shù)據(jù)包進(jìn)行重新排列,恢復(fù) 正確的順序。目前,抖動(dòng)緩存都只有一級(jí),分為定值抖動(dòng)緩存和自適應(yīng)抖 動(dòng)緩存兩種。
定值抖動(dòng)緩存基于硬件,由廠家來(lái)配置。IP網(wǎng)絡(luò)上傳輸數(shù)據(jù)時(shí)由于中間 傳輸路徑不同以及網(wǎng)絡(luò)擁賽等原因,會(huì)造成數(shù)據(jù)包不能按照次序到達(dá),因此 同一時(shí)刻可能有多個(gè)數(shù)據(jù)包到達(dá)或者沒(méi)有數(shù)據(jù)包到達(dá),出現(xiàn)到達(dá)抖動(dòng)緩存的 數(shù)據(jù)包長(zhǎng)度大于或小于抖動(dòng)緩存長(zhǎng)度的情況。當(dāng)?shù)竭_(dá)抖動(dòng)緩存的數(shù)據(jù)包長(zhǎng)度 大于抖動(dòng)緩存長(zhǎng)度時(shí),出現(xiàn)上溢現(xiàn)象,此時(shí)必須丟棄大于部分的數(shù)據(jù)包,增 加了系統(tǒng)的丟包率;當(dāng)?shù)竭_(dá)抖動(dòng)緩存的數(shù)據(jù)包長(zhǎng)度小于抖動(dòng)緩存長(zhǎng)度時(shí),出 現(xiàn)下溢現(xiàn)象,此時(shí)系統(tǒng)采用丟包隱藏的方法產(chǎn)生一個(gè)數(shù)據(jù)包,降低了語(yǔ)音質(zhì)量。例如,假設(shè)抖動(dòng)緩存的長(zhǎng)度為40毫秒, 一個(gè)數(shù)據(jù)包的長(zhǎng)度為20毫秒。 如果同一時(shí)刻有三個(gè)數(shù)據(jù)包到達(dá)抖動(dòng)緩存,則出現(xiàn)上溢情況,必須丟棄一個(gè)
數(shù)據(jù)包;如果在某一時(shí)刻沒(méi)有數(shù)據(jù)包到達(dá)或者只有一個(gè)數(shù)據(jù)包到達(dá)抖動(dòng)緩存,
則出現(xiàn)下溢情況,而抖動(dòng)緩存必須發(fā)送40毫秒的數(shù)據(jù)包,系統(tǒng)采用丟包隱藏
的方法產(chǎn)生一個(gè)數(shù)據(jù)包,此時(shí)語(yǔ)音質(zhì)量就會(huì)下降。
自適應(yīng)抖動(dòng)緩存基于軟件,釆用語(yǔ)音信號(hào)伸縮的方法來(lái)適應(yīng)網(wǎng)絡(luò)延遲的 改變。當(dāng)出現(xiàn)上溢情況時(shí),將數(shù)據(jù)包在時(shí)間上進(jìn)行壓縮,以適應(yīng)抖動(dòng)緩存的
大?。划?dāng)出現(xiàn)下溢情況時(shí),將數(shù)據(jù)包在時(shí)間上進(jìn)行拉伸,以適應(yīng)抖動(dòng)緩存的 大小。例如,假設(shè)抖動(dòng)緩存的長(zhǎng)度為40毫秒, 一個(gè)數(shù)據(jù)包的長(zhǎng)度為20毫秒。 如果同一時(shí)刻有三個(gè)數(shù)據(jù)包到達(dá)抖動(dòng)緩存,出現(xiàn)上溢情況,則將三個(gè)數(shù)據(jù)包 在時(shí)間上進(jìn)行壓縮,使三個(gè)數(shù)據(jù)包的總時(shí)間為40毫秒;如果在某一時(shí)刻只有 一個(gè)數(shù)據(jù)包到達(dá)抖動(dòng)緩存,出現(xiàn)下溢情況,則將該數(shù)據(jù)包在時(shí)間上進(jìn)行拉伸, 使該數(shù)據(jù)包的時(shí)間變?yōu)?0毫秒。
但是,采用自適應(yīng)抖動(dòng)緩存時(shí),會(huì)產(chǎn)生聲音變形。當(dāng)對(duì)數(shù)據(jù)包進(jìn)行時(shí)間 壓縮時(shí),正常語(yǔ)音在更短的時(shí)間上播放,會(huì)使聽(tīng)者感覺(jué)語(yǔ)音局促;當(dāng)對(duì)數(shù)據(jù) 包進(jìn)行時(shí)間拉伸時(shí),正常語(yǔ)音在更長(zhǎng)的時(shí)間上播放,會(huì)使聽(tīng)者感覺(jué)語(yǔ)音緩慢。 另外,對(duì)數(shù)據(jù)包進(jìn)行時(shí)間壓縮或時(shí)間拉伸,會(huì)增加運(yùn)算量,需要消耗一定的 時(shí)間,增加了總的延遲時(shí)間。
發(fā)明內(nèi)容
本發(fā)明要解決的問(wèn)題是提供一種抖動(dòng)緩存裝置和抖動(dòng)緩存管理方法,以 克服現(xiàn)有技術(shù)中由于上溢情況或下溢情況而造成語(yǔ)音質(zhì)量降低的缺陷。
為達(dá)到上述目的,本發(fā)明的一個(gè)實(shí)施例的技術(shù)方案提供一種抖動(dòng)緩存裝 置,包括具有不同優(yōu)先級(jí)的多個(gè)抖動(dòng)緩存,所述多個(gè)抖動(dòng)緩存相并聯(lián),用于 存儲(chǔ)接收到的數(shù)據(jù)包;優(yōu)先級(jí)最高的抖動(dòng)緩存還用于發(fā)送所存儲(chǔ)的數(shù)據(jù)包。
按照本發(fā)明的一個(gè)方面,優(yōu)先級(jí)高的抖動(dòng)緩存存儲(chǔ)滿后,所述接收到的 數(shù)據(jù)包存儲(chǔ)入優(yōu)先級(jí)低的抖動(dòng)緩存。
按照本發(fā)明的另一個(gè)方面,優(yōu)先級(jí)高的抖動(dòng)緩存未存儲(chǔ)滿時(shí),其下一級(jí)
抖動(dòng)緩存移動(dòng)所存儲(chǔ)的數(shù)據(jù)包到所述優(yōu)先級(jí)高的抖動(dòng)緩存。
按照本發(fā)明的再一個(gè)方面,優(yōu)先級(jí)高的抖動(dòng)緩存存儲(chǔ)的數(shù)據(jù)包的序號(hào)標(biāo)識(shí)大于優(yōu)先級(jí)低的抖動(dòng)緩存存儲(chǔ)的數(shù)據(jù)包的序號(hào)標(biāo)識(shí)時(shí),交換所述數(shù)據(jù)包。 按照本發(fā)明的再一個(gè)方面,每個(gè)抖動(dòng)緩存長(zhǎng)度相同。
本發(fā)明的一個(gè)實(shí)施例的技術(shù)方案提供一種抖動(dòng)緩存管理方法,包括以下
步驟多個(gè)抖動(dòng)緩存按照優(yōu)先級(jí)依次接收數(shù)據(jù)包;優(yōu)先級(jí)最高的抖動(dòng)緩存按 照數(shù)據(jù)包的序號(hào)標(biāo)識(shí)發(fā)送所存儲(chǔ)的數(shù)據(jù)包。
按照本發(fā)明的再一個(gè)方面,所述多個(gè)抖動(dòng)緩存接收數(shù)據(jù)包具體為優(yōu)先 級(jí)高的抖動(dòng)緩存接收所述數(shù)據(jù)包;所述優(yōu)先級(jí)高的抖動(dòng)緩存存儲(chǔ)滿后,優(yōu)先 級(jí)低的抖動(dòng)緩存接收所述數(shù)據(jù)包;判斷所有抖動(dòng)緩存是否全部存儲(chǔ)滿,如果 是,則丟棄剩余的數(shù)據(jù)包。
按照本發(fā)明的再一個(gè)方面,在接收到數(shù)據(jù)包之后,還包括移動(dòng)所述接收 到的數(shù)據(jù)包,具體為判斷優(yōu)先級(jí)高的抖動(dòng)緩存是否存儲(chǔ)滿,如果未存儲(chǔ)滿, 則判斷其下一級(jí)抖動(dòng)緩存是否有可用的數(shù)據(jù)包;如果有,則移動(dòng)所述可用的 數(shù)據(jù)包到所述優(yōu)先級(jí)高的抖動(dòng)緩存。
按照本發(fā)明的再一個(gè)方面,在發(fā)送數(shù)據(jù)包之前還包括對(duì)所述接收到的數(shù) 據(jù)包進(jìn)行排序,具體為判斷優(yōu)先級(jí)高的抖動(dòng)緩存存儲(chǔ)的序號(hào)標(biāo)識(shí)最大的數(shù) 據(jù)包的序號(hào)標(biāo)識(shí)是否小于優(yōu)先級(jí)低的抖動(dòng)緩存存儲(chǔ)的序號(hào)標(biāo)識(shí)最小的數(shù)據(jù)包 的序號(hào)標(biāo)識(shí);如果否,則交換所述數(shù)據(jù)包。
與現(xiàn)有技術(shù)相比,本發(fā)明的一個(gè)實(shí)施例的技術(shù)方案具有以下優(yōu)點(diǎn)
本發(fā)明通過(guò)多個(gè)抖動(dòng)緩存相并聯(lián),增加了抖動(dòng)緩存的存儲(chǔ)量,減少了 上溢情況的發(fā)生。
并且,本發(fā)明通過(guò)移動(dòng)各級(jí)抖動(dòng)緩存接收到的數(shù)據(jù)包,補(bǔ)充優(yōu)先級(jí)高 的抖動(dòng)緩存的存儲(chǔ)空間,減少了下溢情況的發(fā)生。
進(jìn)一步,本發(fā)明沒(méi)有對(duì)數(shù)據(jù)包進(jìn)行時(shí)間壓縮或時(shí)間拉伸,不會(huì)產(chǎn)生聲 音變形,不會(huì)增加總的延遲時(shí)間。
圖1是本發(fā)明的一種語(yǔ)音數(shù)據(jù)接收系統(tǒng)的結(jié)構(gòu)圖2是本發(fā)明的一種抖動(dòng)緩存管理方法的流程圖3是本發(fā)明實(shí)施例一的RTP數(shù)據(jù)包的到達(dá)序列圖。
具體實(shí)施例方式
下面結(jié)合附圖,對(duì)本發(fā)明的具體實(shí)施方式
作進(jìn)一步詳細(xì)描述 本發(fā)明的一種語(yǔ)音數(shù)據(jù)接收系統(tǒng)的結(jié)構(gòu)如圖1所示,包括抖動(dòng)緩存裝置 11和解碼器12,抖動(dòng)緩存裝置11進(jìn)一步包括具有不同優(yōu)先級(jí)的n個(gè)抖動(dòng)緩 存lll,其中1級(jí)抖動(dòng)緩存的優(yōu)先級(jí)最高,n級(jí)抖動(dòng)緩存的優(yōu)先級(jí)最低。每個(gè) 抖動(dòng)緩存lll的長(zhǎng)度相同,并聯(lián)在一起,用于存儲(chǔ)接收到的數(shù)據(jù)包;l級(jí)抖動(dòng) 緩存還用于發(fā)送所存儲(chǔ)的數(shù)據(jù)包到解碼器12。
當(dāng)抖動(dòng)緩存裝置ll接收到數(shù)據(jù)包后,該數(shù)據(jù)包首先存儲(chǔ)入優(yōu)先級(jí)高的抖 動(dòng)緩存,只有優(yōu)先級(jí)高的抖動(dòng)緩存存儲(chǔ)滿后,該數(shù)據(jù)包才能存儲(chǔ)入優(yōu)先級(jí)低 的抖動(dòng)緩存。當(dāng)優(yōu)先級(jí)高的抖動(dòng)緩存未存儲(chǔ)滿時(shí),如果其下一級(jí)抖動(dòng)緩存中 有可用的數(shù)據(jù)包,則移動(dòng)該數(shù)據(jù)包到優(yōu)先級(jí)高的抖動(dòng)緩存。當(dāng)優(yōu)先級(jí)低的抖 動(dòng)緩存中存儲(chǔ)有數(shù)據(jù)包的序號(hào)標(biāo)識(shí)小于優(yōu)先級(jí)高的抖動(dòng)緩存存儲(chǔ)的數(shù)據(jù)包的 序號(hào)標(biāo)識(shí)時(shí),交換數(shù)據(jù)包的位置,使優(yōu)先級(jí)高的抖動(dòng)緩存存儲(chǔ)的數(shù)據(jù)包的序 號(hào)標(biāo)識(shí)小于優(yōu)先級(jí)低的抖動(dòng)緩存存儲(chǔ)的數(shù)據(jù)包的序號(hào)標(biāo)識(shí)。
本發(fā)明的一種抖動(dòng)緩存管理方法的流程如圖2所示,首先多個(gè)抖動(dòng)緩存 按照優(yōu)先級(jí)依次接收數(shù)據(jù)包,然后優(yōu)先級(jí)最高的抖動(dòng)緩存按照數(shù)據(jù)包的序號(hào) 標(biāo)識(shí)發(fā)送所存儲(chǔ)的數(shù)據(jù)包。參照?qǐng)D2,本發(fā)明包括以下步驟 步驟s201,抖動(dòng)緩存裝置接收數(shù)據(jù)包。
步驟s202,將所述數(shù)據(jù)包存儲(chǔ)入優(yōu)先級(jí)高的抖動(dòng)緩存。
步驟s203,判斷所述優(yōu)先級(jí)高的抖動(dòng)緩存是否存儲(chǔ)滿,如果是,則轉(zhuǎn)步 驟s206;否則轉(zhuǎn)步驟s204。
步驟s204,判斷其下一級(jí)抖動(dòng)緩存是否有可用的數(shù)據(jù)包;如果有,則轉(zhuǎn) 步驟s205;否則轉(zhuǎn)步驟s210。
步驟s205,移動(dòng)所述可用的數(shù)據(jù)包到其上一級(jí)抖動(dòng)緩存,并轉(zhuǎn)步驟s203。
步驟s206,將剩余的數(shù)據(jù)包存儲(chǔ)入下一級(jí)抖動(dòng)緩存。 步驟s207,判斷所述數(shù)據(jù)包是否全部存儲(chǔ)完成,如果是,則轉(zhuǎn)步驟s210; 否則轉(zhuǎn)步驟s208。
步驟s208,判斷所有抖動(dòng)緩存是否全部存儲(chǔ)滿,如果是,則轉(zhuǎn)步驟s209; 否則轉(zhuǎn)步驟s206。
步驟s209,丟棄剩余的數(shù)據(jù)包。
步驟s210,判斷優(yōu)先級(jí)高的抖動(dòng)緩存存儲(chǔ)的序號(hào)標(biāo)識(shí)最大的數(shù)據(jù)包的序 號(hào)標(biāo)識(shí)是否小于優(yōu)先級(jí)低的抖動(dòng)緩存存儲(chǔ)的序號(hào)標(biāo)識(shí)最小的數(shù)據(jù)包的序號(hào)標(biāo) 識(shí),如果是,則轉(zhuǎn)步驟s212;否則轉(zhuǎn)步驟s211。
步驟s211,交換所述數(shù)據(jù)包,并轉(zhuǎn)步驟s210。
步驟s212,優(yōu)先級(jí)最高的抖動(dòng)緩存發(fā)送所存儲(chǔ)的數(shù)據(jù)包到解碼器。
下面結(jié)合實(shí)施例,對(duì)本發(fā)明的具體實(shí)施方式
作進(jìn)一步詳細(xì)描述
實(shí)施例一,本實(shí)施例中采用具有3級(jí)抖動(dòng)緩存的抖動(dòng)緩存裝置,其中1 級(jí)抖動(dòng)緩存的優(yōu)先級(jí)最高,每個(gè)抖動(dòng)緩存長(zhǎng)度都為40ms,抖動(dòng)延遲時(shí)間為 40ms; —種RTP (Realtime Transfer Protocol,實(shí)時(shí)傳輸協(xié)議)數(shù)據(jù)包的到達(dá) 序列如圖3所示,其中每個(gè)RTP數(shù)據(jù)包的長(zhǎng)度為20ms。
參照?qǐng)D3,第一個(gè)RTP數(shù)據(jù)包到達(dá)抖動(dòng)緩存裝置的時(shí)間為120ms,其序號(hào) 標(biāo)識(shí)為l;第二個(gè)RTP數(shù)據(jù)包到達(dá)抖動(dòng)緩存裝置的時(shí)間為145ms,其序號(hào)標(biāo)識(shí) 為2;第三個(gè)RTP數(shù)據(jù)包到達(dá)抖動(dòng)緩存裝置的時(shí)間為170ms,其序號(hào)標(biāo)識(shí)為3; 第四個(gè)RTP數(shù)據(jù)包到達(dá)抖動(dòng)緩存裝置的時(shí)間為205ms,其序號(hào)標(biāo)識(shí)為4;第五 個(gè)RTP數(shù)據(jù)包到達(dá)抖動(dòng)緩存裝置的時(shí)間為215ms,其序號(hào)標(biāo)識(shí)為5;第六個(gè)RTP 數(shù)據(jù)包到達(dá)抖動(dòng)緩存裝置的時(shí)間為230ms,其序號(hào)標(biāo)識(shí)為6;第七個(gè)RTP數(shù)據(jù) 包到達(dá)抖動(dòng)緩存裝置的時(shí)間為250ms,其序號(hào)標(biāo)識(shí)為7。
因?yàn)榈?一個(gè)RTP數(shù)據(jù)包到達(dá)抖動(dòng)緩存裝置的時(shí)間為120ms,抖動(dòng)緩存長(zhǎng)度 為40ms,抖動(dòng)延遲時(shí)間為40ms,所以l級(jí)抖動(dòng)緩存分別于160ms、 200 ms、 240 ms、 280ms等時(shí)間將所存儲(chǔ)的數(shù)據(jù)包發(fā)送到解碼器;又因?yàn)閿?shù)據(jù)包的長(zhǎng)度 為20ms,所以每個(gè)抖動(dòng)緩存能夠存儲(chǔ)兩個(gè)數(shù)據(jù)包。
當(dāng)本實(shí)施例采用圖2所示抖動(dòng)緩存管理方法時(shí),RTP數(shù)據(jù)包的傳輸過(guò)程如下
1. 在120ms到160ms期間,序號(hào)標(biāo)識(shí)為1和2的RTP數(shù)據(jù)包到達(dá)抖動(dòng)緩存裝 置,參照?qǐng)D2,其傳輸過(guò)程包括以下步驟
步驟s201 ,抖動(dòng)緩存裝置接收序號(hào)標(biāo)識(shí)為1和2的RTP數(shù)據(jù)包。 步驟s202,將所述數(shù)據(jù)包存儲(chǔ)入1級(jí)抖動(dòng)緩存。
步驟s203,判斷1級(jí)抖動(dòng)緩存是否存儲(chǔ)滿,如果是,則轉(zhuǎn)步驟s206;否 則轉(zhuǎn)步驟s204。本實(shí)施例中1級(jí)抖動(dòng)緩存存儲(chǔ)了 2個(gè)數(shù)據(jù)包,已存儲(chǔ)滿,所 以轉(zhuǎn)步驟s206。
步驟s206,將剩余的數(shù)據(jù)包存儲(chǔ)入下一級(jí)抖動(dòng)緩存。本實(shí)施例中沒(méi)有剩 余的數(shù)據(jù)包。
步驟s207,判斷所述數(shù)據(jù)包是否全部存儲(chǔ)完成,如果是,則轉(zhuǎn)步驟s210; 否則轉(zhuǎn)步驟s208。本實(shí)施例中數(shù)據(jù)包已全部存儲(chǔ)完成,所以轉(zhuǎn)步驟s210。
步驟s210,判斷優(yōu)先級(jí)高的抖動(dòng)緩存存儲(chǔ)的序號(hào)標(biāo)識(shí)最大的數(shù)據(jù)包的序 號(hào)標(biāo)識(shí)是否小于優(yōu)先級(jí)低的抖動(dòng)緩存存儲(chǔ)的序號(hào)標(biāo)識(shí)最小的數(shù)據(jù)包的序號(hào)標(biāo) 識(shí),如果是,則轉(zhuǎn)步驟s212;否則轉(zhuǎn)步驟s211。本實(shí)施例中2級(jí)抖動(dòng)緩存沒(méi) 有存儲(chǔ)數(shù)據(jù)包,所以轉(zhuǎn)步驟s212。
步驟s212, l級(jí)抖動(dòng)緩存在160ms時(shí),發(fā)送序號(hào)標(biāo)識(shí)為1和2的RTP數(shù)據(jù)包到 解碼器。
2. 在160ms到200ms期間,只有序號(hào)標(biāo)識(shí)為3的RTP數(shù)據(jù)包到達(dá)抖動(dòng)緩存 裝置,參照?qǐng)D2,其傳輸過(guò)程包括以下步驟
步驟s201,抖動(dòng)緩存裝置接收序號(hào)標(biāo)識(shí)為3的RTP數(shù)據(jù)包。 步驟s202,將所述數(shù)據(jù)包存儲(chǔ)入1級(jí)抖動(dòng)緩存。
步驟s203,判斷l(xiāng)級(jí)抖動(dòng)緩存是否存儲(chǔ)滿,如果是,則轉(zhuǎn)步驟s206;否則 轉(zhuǎn)步驟s204。本實(shí)施例中l(wèi)級(jí)抖動(dòng)緩存存儲(chǔ)了l個(gè)數(shù)據(jù)包,沒(méi)有存儲(chǔ)滿,所以轉(zhuǎn) 步驟s204。
步驟s204,判斷其下一級(jí)抖動(dòng)緩存是否有可用的數(shù)據(jù)包;如果有,則轉(zhuǎn) 步驟s205;否則轉(zhuǎn)步驟s210。本實(shí)施例中2級(jí)抖動(dòng)緩存沒(méi)有可用的數(shù)據(jù)包, 所以轉(zhuǎn)步驟s210。步驟s210,判斷優(yōu)先級(jí)高的抖動(dòng)緩存存儲(chǔ)的序號(hào)標(biāo)識(shí)最大的數(shù)據(jù)包的序 號(hào)標(biāo)識(shí)是否小于優(yōu)先級(jí)低的抖動(dòng)緩存存儲(chǔ)的序號(hào)標(biāo)識(shí)最小的數(shù)據(jù)包的序號(hào)標(biāo) 識(shí),如果是,則轉(zhuǎn)步驟s212;否則轉(zhuǎn)步驟s211。本實(shí)施例中2級(jí)抖動(dòng)緩存沒(méi) 有存儲(chǔ)數(shù)據(jù)包,所以轉(zhuǎn)步驟s212。
步驟s212, 1級(jí)抖動(dòng)緩存在200ms時(shí),發(fā)送標(biāo)識(shí)為3的RTP數(shù)據(jù)包到解碼器。
3.在200ms到240ms期間,序號(hào)標(biāo)識(shí)為4、 6和5的RTP數(shù)據(jù)包依次到達(dá)抖動(dòng) 緩存裝置,參照?qǐng)D2,其傳輸過(guò)程包括以下步驟
步驟s201,抖動(dòng)緩存裝置依次接收序號(hào)標(biāo)識(shí)為4、 6和5的RTP數(shù)據(jù)包。 步驟s202,將所述數(shù)據(jù)包存儲(chǔ)入1級(jí)抖動(dòng)緩存。因?yàn)?級(jí)抖動(dòng)緩存只能 存儲(chǔ)2個(gè)RTP數(shù)據(jù)包,所以序號(hào)標(biāo)識(shí)為4和6的RTP數(shù)據(jù)包存儲(chǔ)入1級(jí)抖動(dòng) 緩存。
步驟s203,判斷1級(jí)抖動(dòng)緩存是否存儲(chǔ)滿,如果是,則轉(zhuǎn)步驟s206;否 則轉(zhuǎn)步驟s204。本實(shí)施例中1級(jí)抖動(dòng)緩存存儲(chǔ)了 2個(gè)數(shù)據(jù)包,已存儲(chǔ)滿,所 以轉(zhuǎn)步驟s206。
步驟s206,將剩余的數(shù)據(jù)包存儲(chǔ)入下一級(jí)抖動(dòng)緩存。本實(shí)施例中將序號(hào) 標(biāo)識(shí)為5的RTP數(shù)據(jù)包存儲(chǔ)入2級(jí)抖動(dòng)緩存。
步驟s207,判斷所述數(shù)據(jù)包是否全部存儲(chǔ)完成,如果是,則轉(zhuǎn)步驟s210; 否則轉(zhuǎn)步驟s208。本實(shí)施例中數(shù)據(jù)包已全部存儲(chǔ)完成,所以轉(zhuǎn)步驟s210。
步驟s210,判斷優(yōu)先級(jí)高的抖動(dòng)緩存存儲(chǔ)的序號(hào)標(biāo)識(shí)最大的數(shù)據(jù)包的序 號(hào)標(biāo)識(shí)是否小于優(yōu)先級(jí)低的抖動(dòng)緩存存儲(chǔ)的序號(hào)標(biāo)識(shí)最小的數(shù)據(jù)包的序號(hào)標(biāo) 識(shí),如果是,則轉(zhuǎn)步驟s212;否則轉(zhuǎn)步驟s211。本實(shí)施例中l(wèi)級(jí)抖動(dòng)緩存存 儲(chǔ)的序號(hào)標(biāo)識(shí)為6的數(shù)據(jù)包的序號(hào)標(biāo)識(shí)大于2級(jí)抖動(dòng)緩存存儲(chǔ)的序號(hào)標(biāo)識(shí)為5 的數(shù)據(jù)包的序號(hào)標(biāo)識(shí),所以轉(zhuǎn)步驟s211。
步驟s211,交換序號(hào)標(biāo)識(shí)為6和序號(hào)標(biāo)識(shí)為5的數(shù)據(jù)包,并轉(zhuǎn)步驟s210。 此時(shí),1級(jí)抖動(dòng)緩存存儲(chǔ)有序號(hào)標(biāo)識(shí)為4和5的RTP數(shù)據(jù)包,2級(jí)抖動(dòng)緩存存 儲(chǔ)有序號(hào)標(biāo)識(shí)為6的RTP數(shù)據(jù)包。
步驟s210,判斷優(yōu)先級(jí)高的抖動(dòng)緩存存儲(chǔ)的序號(hào)標(biāo)識(shí)最大的數(shù)據(jù)包的序 號(hào)標(biāo)識(shí)是否小于優(yōu)先級(jí)低的抖動(dòng)緩存存儲(chǔ)的序號(hào)標(biāo)識(shí)最小的數(shù)據(jù)包的序號(hào)標(biāo)識(shí),如果是,則轉(zhuǎn)步驟s212;否則轉(zhuǎn)步驟s211。本實(shí)施例中1級(jí)抖動(dòng)緩存存 儲(chǔ)的序號(hào)標(biāo)識(shí)為5的數(shù)據(jù)包的序號(hào)標(biāo)識(shí)小于2級(jí)抖動(dòng)緩存存儲(chǔ)的序號(hào)標(biāo)識(shí)為6 的數(shù)據(jù)包的序號(hào)標(biāo)識(shí),所以轉(zhuǎn)步驟s212。
步驟s212, l級(jí)抖動(dòng)緩存在240ms時(shí),發(fā)送序號(hào)標(biāo)識(shí)為4和5的RTP數(shù)據(jù)包到 解碼器。
4.在240ms到280ms期間,只有序號(hào)標(biāo)識(shí)為7的RTP數(shù)據(jù)包到達(dá)抖動(dòng)緩存 裝置,參照?qǐng)D2,其傳輸過(guò)程包括以下步驟
步驟s201,抖動(dòng)緩存裝置接收序號(hào)標(biāo)識(shí)為7的RTP數(shù)據(jù)包。 步驟s202,將所述數(shù)據(jù)包存儲(chǔ)入1級(jí)抖動(dòng)緩存。
步驟s203,判斷l(xiāng)級(jí)抖動(dòng)緩存是否存儲(chǔ)滿,如果是,則轉(zhuǎn)步驟s206;否則 轉(zhuǎn)步驟s204。本實(shí)施例中l(wèi)級(jí)抖動(dòng)緩存存儲(chǔ)了l個(gè)數(shù)據(jù)包,沒(méi)有存儲(chǔ)滿,所以轉(zhuǎn) 步驟s204。
步驟s204,判斷其下一級(jí)抖動(dòng)緩存是否有可用的數(shù)據(jù)包;如果有,則轉(zhuǎn)步
驟s205;否則轉(zhuǎn)步驟s210。本實(shí)施例中2級(jí)抖動(dòng)緩存有序號(hào)標(biāo)識(shí)為6的RTP數(shù)據(jù)
包可用,所以轉(zhuǎn)步驟s205。
步驟s205,移動(dòng)序號(hào)標(biāo)識(shí)為6的RTP數(shù)據(jù)包到1級(jí)抖動(dòng)緩存,并轉(zhuǎn)步驟s203。 步驟s203,判斷1級(jí)抖動(dòng)緩存是否存儲(chǔ)滿,如果是,則轉(zhuǎn)步驟s206;否
則轉(zhuǎn)步驟s204。本實(shí)施例中1級(jí)抖動(dòng)緩存存儲(chǔ)了 2個(gè)數(shù)據(jù)包,已存儲(chǔ)滿,所
以轉(zhuǎn)步驟s206。
步驟s206,將剩余的數(shù)據(jù)包存儲(chǔ)入下一級(jí)抖動(dòng)緩存。本實(shí)施例中沒(méi)有剩 余的數(shù)據(jù)包。
步驟s207,判斷所迷數(shù)據(jù)包是否全部存儲(chǔ)完成,如果是,則轉(zhuǎn)步驟s210; 否則轉(zhuǎn)步驟s208。本實(shí)施例中數(shù)據(jù)包已全部存儲(chǔ)完成,所以轉(zhuǎn)步驟s210。
步驟s210,判斷優(yōu)先級(jí)高的抖動(dòng)緩存存儲(chǔ)的序號(hào)標(biāo)識(shí)最大的數(shù)據(jù)包的序 號(hào)標(biāo)識(shí)是否小于優(yōu)先級(jí)低的抖動(dòng)緩存存儲(chǔ)的序號(hào)標(biāo)識(shí)最小的數(shù)據(jù)包的序號(hào)標(biāo) 識(shí),如果是,則轉(zhuǎn)步驟s212;否則轉(zhuǎn)步驟s211。本實(shí)施例中2級(jí)抖動(dòng)緩存沒(méi) 有存儲(chǔ)數(shù)據(jù)包,所以轉(zhuǎn)步驟s212。
步驟s212, l級(jí)抖動(dòng)緩存在280ms時(shí),發(fā)送序號(hào)標(biāo)識(shí)為6和7的RTP數(shù)據(jù)包到解碼器。
上述實(shí)施例采用3個(gè)抖動(dòng)緩存相并聯(lián),每個(gè)抖動(dòng)緩存可以存儲(chǔ)2個(gè)數(shù)據(jù) 包,因此能夠同時(shí)存儲(chǔ)6個(gè)數(shù)據(jù)包,增加了抖動(dòng)緩存的存儲(chǔ)量,減少了上溢 情況的發(fā)生。并且,在240ms到280ms期間,本實(shí)施例通過(guò)移動(dòng)2級(jí)4牛動(dòng)緩 存接收到的數(shù)據(jù)包,補(bǔ)充l級(jí)抖動(dòng)緩存的存儲(chǔ)空間,減少了下溢情況的發(fā)生。 另外,本實(shí)施例沒(méi)有對(duì)數(shù)據(jù)包進(jìn)行時(shí)間壓縮或時(shí)間拉伸,不會(huì)產(chǎn)生聲音變 形,不會(huì)增加總的延遲時(shí)間。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普 通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn) 飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1、一種抖動(dòng)緩存裝置,其特征在于,包括具有不同優(yōu)先級(jí)的多個(gè)抖動(dòng)緩存,所述多個(gè)抖動(dòng)緩存相并聯(lián),用于存儲(chǔ)接收到的數(shù)據(jù)包;優(yōu)先級(jí)最高的抖動(dòng)緩存還用于發(fā)送所存儲(chǔ)的數(shù)據(jù)包。
2、 如權(quán)利要求1所述抖動(dòng)緩存裝置,其特征在于,優(yōu)先級(jí)高的抖動(dòng)緩存 存儲(chǔ)滿后,所述接收到的數(shù)據(jù)包存儲(chǔ)入優(yōu)先級(jí)低的抖動(dòng)緩存。
3、 如權(quán)利要求1所述抖動(dòng)緩存裝置,其特征在于,優(yōu)先級(jí)高的抖動(dòng)緩存 未存儲(chǔ)滿時(shí),其下一級(jí)抖動(dòng)緩存移動(dòng)所存儲(chǔ)的數(shù)據(jù)包到所述優(yōu)先級(jí)高的抖動(dòng) 緩存。
4、 如權(quán)利要求1所述抖動(dòng)緩存裝置,其特征在于,優(yōu)先級(jí)高的抖動(dòng)緩存 存儲(chǔ)的數(shù)據(jù)包的序號(hào)標(biāo)識(shí)大于優(yōu)先級(jí)低的抖動(dòng)緩存存儲(chǔ)的數(shù)據(jù)包的序號(hào)標(biāo)識(shí) 時(shí),交換所述數(shù)據(jù)包。
5、 如權(quán)利要求1至4任一項(xiàng)所述抖動(dòng)緩存裝置,其特征在于,每個(gè)抖動(dòng) 緩存長(zhǎng)度相同。
6、 一種抖動(dòng)緩存管理方法,其特征在于,包括以下步驟 多個(gè)抖動(dòng)緩存按照優(yōu)先級(jí)依次接收數(shù)據(jù)包;優(yōu)先級(jí)最高的抖動(dòng)緩存按照數(shù)據(jù)包的序號(hào)標(biāo)識(shí)發(fā)送所存儲(chǔ)的數(shù)據(jù)包。
7、 如權(quán)利要求6所述抖動(dòng)緩存管理方法,其特征在于,所述多個(gè)抖動(dòng)緩. 存接收數(shù)據(jù)包具體為優(yōu)先級(jí)高的抖動(dòng)緩存接收所述數(shù)據(jù)包;所述優(yōu)先級(jí)高的抖動(dòng)緩存存儲(chǔ)滿后,優(yōu)先級(jí)低的抖動(dòng)緩存接收所述數(shù)據(jù)包;判斷所有抖動(dòng)緩存是否全部存儲(chǔ)滿,如果是,則丟棄剩余的數(shù)據(jù)包。
8、 如權(quán)利要求6所述抖動(dòng)緩存管理方法,其特征在于,在接收到數(shù)據(jù)包 之后,還包括移動(dòng)所述接收到的數(shù)據(jù)包,具體為判斷優(yōu)先級(jí)高的抖動(dòng)緩存是否存儲(chǔ)滿,如果未存儲(chǔ)滿,則判斷其下一級(jí)抖動(dòng)緩存是否有可用的數(shù)據(jù)包;如果有,則移動(dòng)所述可用的數(shù)據(jù)包到所述優(yōu)先級(jí)高的抖動(dòng)緩存。
9、如權(quán)利要求6所述抖動(dòng)緩存管理方法,其特征在于,在發(fā)送數(shù)據(jù)包之 前還包括對(duì)所迷接收到的數(shù)據(jù)包進(jìn)行排序,具體為判斷優(yōu)先級(jí)高的抖動(dòng)緩存存儲(chǔ)的序號(hào)標(biāo)識(shí)最大的數(shù)據(jù)包的序號(hào)標(biāo)識(shí)是否 小于優(yōu)先級(jí)低的抖動(dòng)緩存存儲(chǔ)的序號(hào)標(biāo)識(shí)最小的數(shù)據(jù)包的序號(hào)標(biāo)識(shí);如果否,則交換所述數(shù)據(jù)包。
全文摘要
本發(fā)明公開(kāi)了一種抖動(dòng)緩存裝置,包括具有不同優(yōu)先級(jí)的多個(gè)抖動(dòng)緩存,所述多個(gè)抖動(dòng)緩存相并聯(lián),用于存儲(chǔ)接收到的數(shù)據(jù)包;優(yōu)先級(jí)最高的抖動(dòng)緩存還用于發(fā)送所存儲(chǔ)的數(shù)據(jù)包。本發(fā)明還公開(kāi)了一種抖動(dòng)緩存管理方法,首先多個(gè)抖動(dòng)緩存按照優(yōu)先級(jí)依次接收數(shù)據(jù)包,然后優(yōu)先級(jí)最高的抖動(dòng)緩存按照數(shù)據(jù)包的序號(hào)標(biāo)識(shí)發(fā)送所存儲(chǔ)的數(shù)據(jù)包。本發(fā)明通過(guò)多個(gè)抖動(dòng)緩存相并聯(lián),增加了抖動(dòng)緩存的存儲(chǔ)量,減少了上溢情況的發(fā)生;通過(guò)移動(dòng)各級(jí)抖動(dòng)緩存接收到的數(shù)據(jù)包,補(bǔ)充優(yōu)先級(jí)高的抖動(dòng)緩存的存儲(chǔ)空間,減少了下溢情況的發(fā)生;并且,本發(fā)明沒(méi)有對(duì)數(shù)據(jù)包進(jìn)行時(shí)間壓縮或時(shí)間拉伸,不會(huì)產(chǎn)生聲音變形,不會(huì)增加總的延遲時(shí)間。
文檔編號(hào)H04M1/253GK101175104SQ200610150449
公開(kāi)日2008年5月7日 申請(qǐng)日期2006年10月31日 優(yōu)先權(quán)日2006年10月31日
發(fā)明者鄭志猛 申請(qǐng)人:華為技術(shù)有限公司