專利名稱:適配網(wǎng)絡(luò)尖峰的動(dòng)態(tài)抖動(dòng)緩存的實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,尤其涉及一種適配網(wǎng)絡(luò)尖峰的動(dòng)態(tài)抖動(dòng)緩存的實(shí)現(xiàn)方法。
背景技術(shù):
隨著Internet(互聯(lián)網(wǎng))技術(shù)的不斷成熟,使得傳統(tǒng)的語音信息承載在Internet上傳輸成為可能,因此,VOIP(基于互聯(lián)網(wǎng)協(xié)議的語音)的各項(xiàng)技術(shù)也就應(yīng)運(yùn)而生。其中Jitter Buffer(抖動(dòng)緩存,簡稱JB)技術(shù)正是VOIP的核心技術(shù)之一,JB技術(shù)直接影響到VOIP的語音質(zhì)量,特別在網(wǎng)絡(luò)質(zhì)量狀況較差的情況下。
JB技術(shù)主要分為兩類靜態(tài)JB技術(shù)和動(dòng)態(tài)JB技術(shù)。目前Internet網(wǎng)絡(luò)中固有的延時(shí)、抖動(dòng)、丟包、亂序已經(jīng)證明靜態(tài)JB技術(shù)不能很好地起到抗抖動(dòng)的效果,因此,針對(duì)不斷變化的網(wǎng)絡(luò)質(zhì)量狀況,只有通過動(dòng)態(tài)改變JB深度才能有效地去除網(wǎng)絡(luò)抖動(dòng),達(dá)到低延時(shí)、低丟包率的效果。所述的動(dòng)態(tài)JB是指JB深度可以根據(jù)網(wǎng)絡(luò)系統(tǒng)的狀況進(jìn)行動(dòng)態(tài)調(diào)整,以適應(yīng)千變?nèi)f化的傳輸網(wǎng)絡(luò),例如根據(jù)網(wǎng)絡(luò)中的延時(shí)和抖動(dòng)對(duì)JB進(jìn)行動(dòng)態(tài)調(diào)整等。
現(xiàn)有的動(dòng)態(tài)JB算法主要是一種基于平均延時(shí)和平均抖動(dòng)的動(dòng)態(tài)JB方案。對(duì)于每個(gè)到達(dá)接收網(wǎng)關(guān)的數(shù)據(jù)包,均采用下述的算式1、2和算式3進(jìn)行平均延時(shí)和平均抖動(dòng)的統(tǒng)計(jì),然后,根據(jù)所述的平均延時(shí)和平均抖動(dòng)進(jìn)行當(dāng)前數(shù)據(jù)包播放時(shí)間的計(jì)算,并根據(jù)計(jì)算結(jié)果及當(dāng)前數(shù)據(jù)包的實(shí)際播放時(shí)對(duì)所述的JB深度進(jìn)行動(dòng)態(tài)調(diào)整,計(jì)算過程中依據(jù)的各算式如下
ni=ai-tsi→(算式1)di=α×di-1+(1-α)×ni→(算式2)vi=α×vi-1+(1-α)×|di-ni|→(算式3) (0≤α≤1)其中ni為第i個(gè)包在網(wǎng)絡(luò)中的延時(shí),di為平均延時(shí),vi為平均抖動(dòng),α為可調(diào)的權(quán)植因子。通過α的調(diào)整可以設(shè)置本次數(shù)據(jù)包的計(jì)算值對(duì)平均值的影響程度,其值可根據(jù)實(shí)際網(wǎng)絡(luò)狀況選擇最優(yōu)的權(quán)值;且如圖1所示,tsi為發(fā)送第i個(gè)包的時(shí)間,來自發(fā)送網(wǎng)關(guān)的DSP(數(shù)字信號(hào)處理)采樣時(shí)間;a為第i個(gè)包到達(dá)接收網(wǎng)關(guān)的時(shí)間,來自接收網(wǎng)關(guān)的系統(tǒng)時(shí)間;pi為第i個(gè)包在接收網(wǎng)關(guān)被播放的時(shí)間;ni為第i個(gè)包在網(wǎng)絡(luò)中的總延時(shí);在計(jì)算當(dāng)前數(shù)據(jù)包的播放時(shí)間時(shí)間,則按如下算式pi=tsi+di+γ×vi→(算式4)pj=pi+tsj-tsi→(算式5)其中i為語音段第一個(gè)數(shù)據(jù)包,j為語音段的后續(xù)數(shù)據(jù)包。γ表示對(duì)平均抖動(dòng)的放大輩數(shù),可在實(shí)現(xiàn)中根據(jù)實(shí)際網(wǎng)絡(luò)狀況選擇最優(yōu)的放大輩數(shù)。
目前還有另一種動(dòng)態(tài)JB的實(shí)現(xiàn)方法為基于最小延時(shí)和平均抖動(dòng)的動(dòng)態(tài)調(diào)整JB的深度。即對(duì)每個(gè)到達(dá)接收網(wǎng)關(guān)的數(shù)據(jù)包,都進(jìn)行最小延時(shí)和平均抖動(dòng)的統(tǒng)計(jì),具體采用如下算式進(jìn)行相應(yīng)的計(jì)算ni=ai-tsi→(算式6)dmin=min(dmin,ni)→(算式7)vi=α×v^i-1+(1-α)×(ni-dmin)→]]>(算式8)其中ni為第i個(gè)包在網(wǎng)絡(luò)中的延時(shí),dmin為最小延時(shí),記錄最小的網(wǎng)絡(luò)延時(shí)。vi為平均抖動(dòng),和前一種方法不同的是計(jì)算第i個(gè)包的抖動(dòng),只要把第i個(gè)包的網(wǎng)絡(luò)延時(shí)減去最小延時(shí)即可,而不必再進(jìn)行取絕對(duì)值操作了。α仍然是可調(diào)的權(quán)植因子。
對(duì)于當(dāng)前數(shù)據(jù)包的播放時(shí)間時(shí),則按如下算式計(jì)算
pi=tsi+di+×γvi-(算式9);pj=pi+tsj-tsi-(算式10)其中i為語音段第一個(gè)數(shù)據(jù)包,j為語音段的后續(xù)數(shù)據(jù)包。γ表示對(duì)平均抖動(dòng)的放大輩數(shù)。與前一種方法不同的是,在計(jì)算pi時(shí),不再使用平均延時(shí),而是使用最小延時(shí)和平均抖動(dòng)。
經(jīng)過上述計(jì)算獲得了相應(yīng)的當(dāng)前數(shù)據(jù)包的播放時(shí)間后,便可以根據(jù)當(dāng)前數(shù)據(jù)包的實(shí)際播放時(shí)間(根據(jù)當(dāng)前系統(tǒng)時(shí)間計(jì)算獲得)與計(jì)算獲得的當(dāng)前數(shù)據(jù)包的播放時(shí)間間的差值進(jìn)行JB深度值的調(diào)整。
上述兩種動(dòng)態(tài)JB實(shí)現(xiàn)方法在運(yùn)行穩(wěn)定的網(wǎng)絡(luò)中可以有效地降低丟包率,保證網(wǎng)絡(luò)中傳輸?shù)恼Z音業(yè)務(wù)的質(zhì)量。然而,在中國現(xiàn)有的廣域網(wǎng)上,網(wǎng)絡(luò)尖峰情況頻繁發(fā)生,因此,動(dòng)態(tài)JB還需要在網(wǎng)絡(luò)尖峰出現(xiàn)時(shí),同樣可以降低丟包率,保證語音質(zhì)量。
所述的網(wǎng)絡(luò)尖峰是指網(wǎng)絡(luò)在瞬間出現(xiàn)延時(shí)的驟然增大,這種延時(shí)的驟然增大在持續(xù)一段時(shí)間后又恢復(fù)到正常的延時(shí),這一段時(shí)間便稱為網(wǎng)絡(luò)尖峰。如圖2所示,圖中的點(diǎn)表示連續(xù)一段時(shí)間內(nèi)的所有數(shù)據(jù)包。網(wǎng)絡(luò)處于正常情況時(shí),所有的點(diǎn)應(yīng)該排成一直線,網(wǎng)絡(luò)延時(shí)為0.2秒左右;而當(dāng)網(wǎng)絡(luò)出現(xiàn)尖峰時(shí),網(wǎng)絡(luò)延時(shí)在瞬間劇增到1.2秒左右,持續(xù)一段時(shí)間后又恢復(fù)到正常狀態(tài),如圖2中的斜線所示。例如,在網(wǎng)絡(luò)中,如果某個(gè)路由器由于網(wǎng)絡(luò)擁塞使得接收端口緩沖區(qū)溢出阻塞,則所有到達(dá)此端口的數(shù)據(jù)包都堵塞在緩沖區(qū)內(nèi)持續(xù)一段時(shí)間,而等到網(wǎng)絡(luò)擁塞結(jié)束時(shí),在瞬間內(nèi)把所有的數(shù)據(jù)包全部發(fā)送,這時(shí),在接收網(wǎng)關(guān)中就會(huì)出現(xiàn)如圖1的尖峰情況。另外,多臺(tái)路由器的堆疊放置也將頻繁出現(xiàn)網(wǎng)絡(luò)尖峰情況。
可以看出,上述基于平均延時(shí)或最小延時(shí)和平均抖動(dòng)的動(dòng)態(tài)JB調(diào)整方法只能適應(yīng)于比較穩(wěn)定的網(wǎng)絡(luò),而不能適應(yīng)網(wǎng)絡(luò)尖峰情況。原因是當(dāng)網(wǎng)絡(luò)出現(xiàn)尖峰時(shí),如果按照上述算法,平均延時(shí)無法快速增長以反映網(wǎng)絡(luò)的現(xiàn)實(shí)情況;相反,當(dāng)尖峰結(jié)束時(shí),算法中的平均延時(shí)同樣無法快速減小。這樣,在尖峰期間,通過平均延時(shí)和平均抖動(dòng)計(jì)算出來的pi必然不是真實(shí)反映當(dāng)前的網(wǎng)絡(luò)質(zhì)量狀況,因此根據(jù)pi值來進(jìn)行動(dòng)態(tài)JB深度調(diào)整也是不正確的。最終結(jié)果是當(dāng)出現(xiàn)網(wǎng)絡(luò)尖峰時(shí),由于JB深度的不正確調(diào)整導(dǎo)致在一段時(shí)間內(nèi)連續(xù)丟包,嚴(yán)重影響VOIP的語音質(zhì)量。
網(wǎng)絡(luò)尖峰對(duì)VOIP業(yè)務(wù)質(zhì)量所產(chǎn)生的影響是不可忽視的,動(dòng)態(tài)JB如果不能有效正確地適配這種網(wǎng)絡(luò)尖峰,則在通話接收端將出現(xiàn)一段時(shí)間內(nèi)幾乎所有的數(shù)據(jù)包均丟失的情況。也就是說,如果動(dòng)態(tài)JB的深度無法適配隨時(shí)出現(xiàn)的網(wǎng)絡(luò)尖峰,則對(duì)于可能頻繁出現(xiàn)網(wǎng)絡(luò)尖峰的網(wǎng)絡(luò)來說便無法提供網(wǎng)絡(luò)用戶可以接受的語音服務(wù)。
發(fā)明內(nèi)容
鑒于上述現(xiàn)有技術(shù)所存在的缺點(diǎn),本發(fā)明的目的是提供一種適配網(wǎng)絡(luò)尖峰的動(dòng)態(tài)抖動(dòng)緩存的實(shí)現(xiàn)方法,使抖動(dòng)緩存的深度可以在網(wǎng)絡(luò)處于網(wǎng)絡(luò)尖峰時(shí)進(jìn)行適應(yīng)性調(diào)整,從而保證網(wǎng)絡(luò)處于網(wǎng)絡(luò)尖峰期間的語音質(zhì)量。
本發(fā)明的目的是通過以下技術(shù)方案實(shí)現(xiàn)的本發(fā)明所述的一種適配網(wǎng)絡(luò)尖峰的動(dòng)態(tài)抖動(dòng)緩存的實(shí)現(xiàn)方法,包括A、確定網(wǎng)絡(luò)尖峰的開始點(diǎn);B、計(jì)算網(wǎng)絡(luò)尖峰時(shí)的延時(shí)值及網(wǎng)絡(luò)中的抖動(dòng)值;C、根據(jù)網(wǎng)絡(luò)的抖動(dòng)值及網(wǎng)絡(luò)尖峰狀態(tài)的延時(shí)值對(duì)抖動(dòng)緩存的深度進(jìn)行調(diào)整。
所述的步驟A包括當(dāng)相鄰的兩個(gè)數(shù)據(jù)包的網(wǎng)絡(luò)延時(shí)超過設(shè)定的門限值時(shí),確定為網(wǎng)絡(luò)尖峰開始點(diǎn)。
本發(fā)明中,步驟A所述的門限值為根據(jù)網(wǎng)絡(luò)中的平均抖動(dòng)以及網(wǎng)絡(luò)中的網(wǎng)絡(luò)尖峰期間的延時(shí)值確定。
所述的步驟B包括根據(jù)網(wǎng)絡(luò)的平均延時(shí)和當(dāng)前網(wǎng)絡(luò)的相鄰兩個(gè)數(shù)據(jù)包的延時(shí)確定網(wǎng)絡(luò)尖峰時(shí)的網(wǎng)絡(luò)延時(shí)差值,并計(jì)算當(dāng)前網(wǎng)絡(luò)中的平均抖動(dòng)值。
所述的步驟B進(jìn)一步包括B1、確定基于前一個(gè)數(shù)據(jù)包的網(wǎng)絡(luò)中的平均延時(shí)值,以及當(dāng)前數(shù)據(jù)包與前一個(gè)數(shù)據(jù)包的網(wǎng)絡(luò)延時(shí)差值,并確定所述的網(wǎng)絡(luò)尖峰時(shí)的平均延時(shí)值,具體包括兩種情況在網(wǎng)絡(luò)尖峰的開始點(diǎn),依據(jù)網(wǎng)絡(luò)正常狀態(tài)下的平均延時(shí)計(jì)算公式計(jì)算所述的基于前一個(gè)數(shù)據(jù)包的網(wǎng)絡(luò)中的平均延時(shí)值di-1為di-1=α×di-2+(1-α)×ni-1,ni-1為第i-1個(gè)語音數(shù)據(jù)包在網(wǎng)絡(luò)中的延時(shí),α為通過測(cè)試獲得的權(quán)值因子,且0≤α≤1,i為語音數(shù)據(jù)包的序號(hào),所述的網(wǎng)絡(luò)延時(shí)差值為ni-ni-1,ni為第i個(gè)語音數(shù)據(jù)包在網(wǎng)絡(luò)中的延時(shí);此時(shí),所述的網(wǎng)絡(luò)尖峰時(shí)的平均延時(shí)值等于所述的平均延時(shí)值與所述的差值的和,即di=di-1+ni-ni-1;在網(wǎng)絡(luò)尖峰期間,依據(jù)網(wǎng)絡(luò)尖峰狀態(tài)下的平均延時(shí)值計(jì)算公式計(jì)算基于前一個(gè)數(shù)據(jù)包的網(wǎng)絡(luò)中的平均延時(shí)值di-1di-1=di-2+ni-1-ni-2,同樣,所述的網(wǎng)絡(luò)延時(shí)差值為ni-ni-1;此時(shí),所述的網(wǎng)絡(luò)尖峰時(shí)的延時(shí)值仍等于所述的平均延時(shí)值與所述的差值的和,即di=di-1+ni-ni-1;B2、令網(wǎng)絡(luò)中的抖動(dòng)值為平均抖動(dòng)值,且所述的平均抖動(dòng)值vi為vi=α×vi-1+(1-α)|di-ni|。
所述的步驟C包括C1、確定當(dāng)前語音數(shù)據(jù)包的實(shí)際播放時(shí)間,定義為舊播放時(shí)間,并根據(jù)網(wǎng)絡(luò)的平均抖動(dòng)值及網(wǎng)絡(luò)尖峰時(shí)的延時(shí)值計(jì)算當(dāng)前語音數(shù)據(jù)包的播放時(shí)間,稱為新播放時(shí)間;C2、根據(jù)所述的舊播放時(shí)間和所述的新播放時(shí)間,實(shí)時(shí)對(duì)接收端的抖動(dòng)緩存隊(duì)列進(jìn)行深度的調(diào)整。
所述的步驟C1包括根據(jù)當(dāng)前的系統(tǒng)時(shí)間確定當(dāng)前語音包的舊播放時(shí)間;確定當(dāng)前語音數(shù)據(jù)包的新播放時(shí)間,所述的當(dāng)前語音數(shù)據(jù)包的新播放時(shí)間為pi=tsi+di+γ×vi,pj=pi+tsj-tsi,所述的i為語音段的第一個(gè)數(shù)據(jù)包、j為語音段后續(xù)的數(shù)據(jù)包的序號(hào),所述的γ為對(duì)平均抖動(dòng)的放大倍數(shù),所述的tsi和tsj分別為發(fā)送端發(fā)送第i個(gè)和第j個(gè)語音數(shù)據(jù)包的時(shí)間。
所述的步驟C2還包括接收網(wǎng)絡(luò)尖峰開始時(shí)的第一個(gè)數(shù)據(jù)包時(shí),將動(dòng)態(tài)緩存隊(duì)列清空,并將動(dòng)態(tài)緩存隊(duì)列的出隊(duì)指針調(diào)整到網(wǎng)絡(luò)尖峰開始時(shí)的第一個(gè)數(shù)據(jù)包。
所述的適配網(wǎng)絡(luò)尖峰的動(dòng)態(tài)抖動(dòng)緩存的實(shí)現(xiàn)方法還包括D、根據(jù)相鄰的數(shù)據(jù)包的網(wǎng)絡(luò)延時(shí)確定網(wǎng)絡(luò)尖峰的結(jié)束點(diǎn);E、根據(jù)當(dāng)前網(wǎng)絡(luò)的平均延時(shí)和平均抖動(dòng)值或最小延時(shí)和平均抖動(dòng)值對(duì)動(dòng)態(tài)抖動(dòng)緩存的深度進(jìn)行調(diào)整。
所述的步驟D包括根據(jù)相鄰的數(shù)據(jù)包到達(dá)接收網(wǎng)關(guān)的時(shí)間點(diǎn)確定的尖峰斜線的斜率是否小于設(shè)定的門限值,如果小于,則確定為網(wǎng)絡(luò)尖峰的結(jié)束點(diǎn),否則,仍處于網(wǎng)絡(luò)尖峰期間。
本發(fā)明中,步驟D所述的門限值slope為slope=slope÷2+|(ni-ni-1)+(ni-ni-2)|÷8其中,ni、ni-1、ni-2為相鄰三個(gè)數(shù)據(jù)包的網(wǎng)絡(luò)延時(shí)。
所述的步驟E包括僅在靜音段對(duì)抖動(dòng)緩存的深度進(jìn)行縮短調(diào)整,且當(dāng)調(diào)整過程遇到語音數(shù)據(jù)包時(shí),立即停止所述的縮短調(diào)整過程。
由上述本發(fā)明提供的技術(shù)方案可以看出,本發(fā)明可以準(zhǔn)確地判斷出網(wǎng)絡(luò)尖峰期的開始點(diǎn)和結(jié)束點(diǎn),并在網(wǎng)絡(luò)中出現(xiàn)由網(wǎng)絡(luò)尖峰現(xiàn)象導(dǎo)致的延時(shí)時(shí),使用相應(yīng)的算法對(duì)JB的深度進(jìn)行調(diào)整,以適配所述的網(wǎng)絡(luò)尖峰狀態(tài),使得網(wǎng)絡(luò)處于尖峰期間時(shí),不會(huì)出現(xiàn)因尖峰期間的連續(xù)丟包而導(dǎo)致VOIP語音質(zhì)量下降的情況。因此,本發(fā)明可以較好地保證網(wǎng)絡(luò)尖峰現(xiàn)象頻繁出現(xiàn)的網(wǎng)絡(luò)中的語音傳輸?shù)馁|(zhì)量。
圖1為動(dòng)態(tài)JB實(shí)現(xiàn)方案中涉及的各個(gè)變量的含義的示意圖;圖2為網(wǎng)絡(luò)中出現(xiàn)網(wǎng)絡(luò)尖峰現(xiàn)象時(shí)的延時(shí)示意圖;圖3為本發(fā)明所述的入隊(duì)處理過程的流程圖;圖4為本發(fā)明所述的JB深度調(diào)整處理過程的流程圖。
具體實(shí)施例方式
本發(fā)明所述的適配網(wǎng)絡(luò)尖峰的動(dòng)態(tài)抖動(dòng)緩存的實(shí)現(xiàn)方法的核心是在網(wǎng)絡(luò)尖峰開始后可以及時(shí)地調(diào)整動(dòng)態(tài)緩存的深度,以適應(yīng)網(wǎng)絡(luò)尖峰期間的數(shù)據(jù)包的緩存處理,從而降低網(wǎng)絡(luò)中網(wǎng)絡(luò)尖峰期間的丟包率,提高網(wǎng)絡(luò)中傳輸?shù)恼Z音質(zhì)量。
在本發(fā)明的實(shí)現(xiàn)過程中對(duì)于網(wǎng)絡(luò)中的網(wǎng)絡(luò)尖峰狀況的開始點(diǎn)和結(jié)束點(diǎn)的識(shí)別是主要需要解決的技術(shù)問題。對(duì)于整個(gè)網(wǎng)絡(luò)來說,可以分為兩種狀態(tài),一種是正常狀態(tài),所謂正常狀態(tài),指網(wǎng)絡(luò)處于比較穩(wěn)定的狀態(tài),另一種是網(wǎng)絡(luò)尖峰狀態(tài)。網(wǎng)絡(luò)的初始狀態(tài)設(shè)置為正常狀態(tài),并實(shí)時(shí)地檢測(cè)網(wǎng)絡(luò)中是否出現(xiàn)的網(wǎng)絡(luò)尖峰現(xiàn)象,且當(dāng)檢測(cè)到網(wǎng)絡(luò)尖峰開始點(diǎn)時(shí),開始基于網(wǎng)絡(luò)尖峰狀態(tài)進(jìn)行動(dòng)態(tài)抖動(dòng)緩存的深度的調(diào)整;當(dāng)檢測(cè)到尖峰結(jié)束點(diǎn)時(shí),則將基于網(wǎng)絡(luò)尖峰狀態(tài)的動(dòng)態(tài)抖動(dòng)緩存的深度調(diào)整到正常狀態(tài)時(shí)的動(dòng)態(tài)抖動(dòng)緩存深度,并可以基于現(xiàn)有的動(dòng)態(tài)抖動(dòng)緩存的實(shí)現(xiàn)方法進(jìn)行相應(yīng)的深度的調(diào)整,即基于平均延時(shí)或最小延時(shí)和平均抖動(dòng)實(shí)現(xiàn)動(dòng)態(tài)JB的方法。
現(xiàn)對(duì)本發(fā)明所述的方法的核心部分的實(shí)現(xiàn)方式作進(jìn)一步的詳細(xì)說明,具體包括以下步驟步驟1根據(jù)網(wǎng)絡(luò)尖峰的特點(diǎn)在網(wǎng)絡(luò)中進(jìn)行實(shí)時(shí)檢測(cè),以確定網(wǎng)絡(luò)尖峰的開始點(diǎn);通常為實(shí)時(shí)檢測(cè)相鄰的兩個(gè)數(shù)據(jù)包的網(wǎng)絡(luò)延時(shí)是否達(dá)到網(wǎng)絡(luò)尖峰的延時(shí)時(shí)長,如果達(dá)到則確定為網(wǎng)絡(luò)尖峰開始,此時(shí)網(wǎng)絡(luò)處于網(wǎng)絡(luò)尖峰狀態(tài),否則,網(wǎng)絡(luò)處于正常狀態(tài);具體檢測(cè)網(wǎng)絡(luò)尖峰開始點(diǎn)可以采用當(dāng)相鄰兩個(gè)數(shù)據(jù)包的網(wǎng)絡(luò)延時(shí)變化超過設(shè)定的門限值threshold時(shí),確定為網(wǎng)絡(luò)尖峰的開始點(diǎn),例如,根據(jù)中國現(xiàn)有的IP(互聯(lián)網(wǎng)協(xié)議)網(wǎng)絡(luò)狀況和實(shí)際測(cè)試出的數(shù)據(jù),所述的門限值定義為threshold=vi×2+500其中,vi為第i個(gè)數(shù)據(jù)包到達(dá)時(shí)計(jì)算得出網(wǎng)絡(luò)中的平均抖動(dòng)值,當(dāng)相鄰兩個(gè)數(shù)據(jù)包的網(wǎng)絡(luò)延時(shí)等于或大于兩倍的平均抖動(dòng)值再加上500毫秒時(shí),則為網(wǎng)絡(luò)尖峰的開始點(diǎn);當(dāng)然,所述的門限值也可以采用其他方法確定的相應(yīng)值,如根據(jù)網(wǎng)絡(luò)狀況直接確定一個(gè)具體的門限值。
步驟2計(jì)算網(wǎng)絡(luò)尖峰時(shí)的延時(shí)值及網(wǎng)絡(luò)中的抖動(dòng)值;例如,可以根據(jù)網(wǎng)絡(luò)的平均延時(shí)和當(dāng)前網(wǎng)絡(luò)的相鄰兩個(gè)數(shù)據(jù)包的延時(shí)確定網(wǎng)絡(luò)尖峰時(shí)的延時(shí)值,并計(jì)算當(dāng)前網(wǎng)絡(luò)中的平均抖動(dòng)值,具體方法如下首先確定基于前一個(gè)數(shù)據(jù)包的網(wǎng)絡(luò)中的平均延時(shí)值,以及當(dāng)前數(shù)據(jù)包與前一個(gè)數(shù)據(jù)包的網(wǎng)絡(luò)延時(shí)差值,然后,根據(jù)所述的平均延時(shí)值和所述的網(wǎng)絡(luò)延時(shí)差值確定當(dāng)前網(wǎng)絡(luò)中的平均抖動(dòng)值,由于其中所述的前一個(gè)數(shù)據(jù)包的平均延時(shí)值di-1的計(jì)算包括兩種情況,所以具體的計(jì)算便包括下述兩種情況
第一種情況為如果當(dāng)前網(wǎng)絡(luò)處于網(wǎng)絡(luò)尖峰開始點(diǎn),則依據(jù)網(wǎng)絡(luò)正常狀態(tài)下的平均延時(shí)值計(jì)算公式計(jì)算基于前一個(gè)數(shù)據(jù)包的網(wǎng)絡(luò)中的平均延時(shí)值di- 1di-1=α×di-2+(1-α)×ni-1,ni-1為第i-1個(gè)語音數(shù)據(jù)包在網(wǎng)絡(luò)中的延時(shí),α為通過測(cè)試獲得的權(quán)值因子,且0≤α≤1,i為語音數(shù)據(jù)包的序號(hào),所述的網(wǎng)絡(luò)延時(shí)差值為ni-ni-1;此時(shí),所述的網(wǎng)絡(luò)尖峰時(shí)的延時(shí)值等于所述的平均延時(shí)值與所述的網(wǎng)絡(luò)延時(shí)差值的和,即等于di-1+ni-ni-1;第二種情況為如果當(dāng)前網(wǎng)絡(luò)處于網(wǎng)絡(luò)尖峰期間,則依據(jù)網(wǎng)絡(luò)尖峰狀態(tài)下的平均延時(shí)值計(jì)算公式計(jì)算基于前一個(gè)數(shù)據(jù)包的網(wǎng)絡(luò)中的平均延時(shí)值di-1di-1=di-2+ni-1-ni-2,同樣,所述的網(wǎng)絡(luò)延時(shí)差值仍為ni-ni-1;此時(shí),所述的網(wǎng)絡(luò)尖峰時(shí)的延時(shí)值仍等于所述的平均延時(shí)值與所述的網(wǎng)絡(luò)延時(shí)差值的和,即等于di-1+ni-ni-1;依據(jù)背景技術(shù)的描述,網(wǎng)絡(luò)中的抖動(dòng)值可以采用平均抖動(dòng)值,且所述的平均抖動(dòng)值vi為vi=α×vi-1+(1-α)|di-ni|,通常對(duì)于采用動(dòng)態(tài)JB方案的網(wǎng)絡(luò)中,應(yīng)該已經(jīng)存在實(shí)時(shí)計(jì)算出的平均抖動(dòng)值,在本發(fā)明中直接獲取并用于計(jì)算即可,而且,在本發(fā)明中,計(jì)算需要調(diào)整的JB深度的處理過程也同樣可以采用網(wǎng)絡(luò)中已經(jīng)存在的相應(yīng)的計(jì)算處理過程。
步驟3確定當(dāng)前語音數(shù)據(jù)包的實(shí)際播放時(shí)間,定義為舊播放時(shí)間,并根據(jù)網(wǎng)絡(luò)的平均抖動(dòng)值及網(wǎng)絡(luò)尖峰時(shí)的延時(shí)值計(jì)算當(dāng)前語音數(shù)據(jù)包的播放時(shí)間,稱為新播放時(shí)間;所述的步驟3具體為根據(jù)當(dāng)前的系統(tǒng)時(shí)間確定當(dāng)前語音包的舊播放時(shí)間,即舊播放時(shí)間=系統(tǒng)當(dāng)前時(shí)間×?xí)r間轉(zhuǎn)換變量,所述的時(shí)間轉(zhuǎn)換變量為將毫秒轉(zhuǎn)換為系統(tǒng)的計(jì)時(shí)單位1/8毫秒;確定當(dāng)前語音數(shù)據(jù)包的新播放時(shí)間,所述的當(dāng)前語音數(shù)據(jù)包的新播放時(shí)間為pi=tsi+di+γ×vi,pj=pi+tsj-tsi,所述的i為語音段的第一個(gè)數(shù)據(jù)包、j為語音段后續(xù)的數(shù)據(jù)包的序號(hào),所述的γ為對(duì)平均抖動(dòng)的放大倍數(shù),所述的tsi和tsj分別為發(fā)送端發(fā)送第i個(gè)和第j個(gè)語音數(shù)據(jù)包的時(shí)間。
步驟4根據(jù)所述的舊播放時(shí)間和所述的新播放時(shí)間,實(shí)時(shí)對(duì)接收端的抖動(dòng)緩存隊(duì)列進(jìn)行深度的調(diào)整,即當(dāng)出現(xiàn)網(wǎng)絡(luò)尖峰現(xiàn)象時(shí),立即根據(jù)相應(yīng)的計(jì)算結(jié)果對(duì)JB深度進(jìn)行調(diào)整;在執(zhí)行步驟4的過程中,還包括當(dāng)接收到網(wǎng)絡(luò)尖峰期間的第一個(gè)語音數(shù)據(jù)包時(shí)將動(dòng)態(tài)緩存隊(duì)列清空,并將動(dòng)態(tài)緩存隊(duì)列的出隊(duì)指針調(diào)整到網(wǎng)絡(luò)尖峰時(shí)的第一個(gè)數(shù)據(jù)包,即將網(wǎng)絡(luò)尖峰開始后收到的第一個(gè)數(shù)據(jù)包立即播放,以避免接收網(wǎng)關(guān)在網(wǎng)絡(luò)尖峰期間增加不必要的抖動(dòng)緩存隊(duì)列的緩存延時(shí),從而保證語音的質(zhì)量;對(duì)抖動(dòng)緩存進(jìn)行深度進(jìn)行調(diào)整具體為計(jì)算新播放時(shí)間和舊播放時(shí)間之差,即為抖動(dòng)緩存深度需要調(diào)整的幅度,為便于進(jìn)行調(diào)整還需要將所得的差值除以抖動(dòng)緩存的元素長度值,獲得最終的抖動(dòng)緩存深度需要調(diào)整的幅度值,并依據(jù)需要調(diào)整的幅度值通過調(diào)整抖動(dòng)緩存的出隊(duì)指針進(jìn)行抖動(dòng)緩存深度的調(diào)整。抖動(dòng)緩存隊(duì)列的每個(gè)元素長度代表不同編解碼打包時(shí)長的基本單位,如G.711為10ms、G.729為10ms、G.723為30ms。
經(jīng)過上述過程,本發(fā)明實(shí)現(xiàn)了可以在網(wǎng)絡(luò)尖峰現(xiàn)象出現(xiàn)時(shí)對(duì)抖動(dòng)緩存的深度進(jìn)行調(diào)整,以適應(yīng)網(wǎng)絡(luò)尖峰時(shí)期的數(shù)據(jù)包的緩存處理,同時(shí),在上述過程中還包括實(shí)時(shí)檢測(cè)網(wǎng)絡(luò)中的網(wǎng)絡(luò)尖峰現(xiàn)象是否結(jié)束,并在網(wǎng)絡(luò)尖峰結(jié)束時(shí),將抖動(dòng)緩存的深度恢復(fù)到正常狀態(tài)時(shí)的深度,也就是說,本發(fā)明所述的方法中還包括以下處理過程(1)實(shí)時(shí)檢測(cè)網(wǎng)絡(luò)中的網(wǎng)絡(luò)尖峰的結(jié)束點(diǎn);尖峰期間的顯著特點(diǎn)是大量數(shù)據(jù)包幾乎在同一時(shí)間到達(dá)接收網(wǎng)關(guān)。我們把出現(xiàn)在尖峰期間的各個(gè)數(shù)據(jù)包到達(dá)的時(shí)間點(diǎn)連成的斜線稱為尖峰斜線,如圖2所示,這樣便可以通過計(jì)算得到相鄰三個(gè)數(shù)據(jù)包到達(dá)的時(shí)間點(diǎn)所連成的斜線的近似斜率值slope確定網(wǎng)絡(luò)尖峰是否結(jié)束,即將相鄰三點(diǎn)斜線的斜率值變化作為網(wǎng)絡(luò)尖峰的結(jié)束點(diǎn)的判斷依據(jù);近似斜率計(jì)算如下slope=slope÷2+|(ni-ni-1)+(ni-ni-2)|÷8其中,ni、ni-1、ni-2為相鄰三個(gè)數(shù)據(jù)包的網(wǎng)絡(luò)延時(shí),如圖2和上述算式可以看出,在持續(xù)的網(wǎng)絡(luò)尖峰期間,斜率值的變化是逐漸由大到小,因此,我們可以定義當(dāng)斜率值小于某個(gè)特定的值時(shí),確定為網(wǎng)絡(luò)尖峰的結(jié)束點(diǎn),例如,當(dāng)確定的特定的值為63時(shí),則可以通過如下語句進(jìn)行網(wǎng)絡(luò)尖峰期間是否結(jié)束的判斷if(slope≤63) then 網(wǎng)絡(luò)尖峰結(jié)束;(2)確定網(wǎng)絡(luò)尖峰的結(jié)束點(diǎn)后,則根據(jù)實(shí)時(shí)統(tǒng)計(jì)的網(wǎng)絡(luò)正常狀態(tài)時(shí)的平均延時(shí)值和平均抖動(dòng)進(jìn)行抖動(dòng)緩存的深度的調(diào)整,從而使得抖動(dòng)緩存調(diào)整所依據(jù)的平均延時(shí)值能夠真實(shí)反映網(wǎng)絡(luò)的實(shí)際質(zhì)量狀況。
通常當(dāng)收到數(shù)據(jù)包時(shí)需要進(jìn)行的處理包括進(jìn)入抖動(dòng)緩存隊(duì)列的處理過程和出抖動(dòng)緩存隊(duì)列的處理過程。本發(fā)明主要是在數(shù)據(jù)包進(jìn)入抖動(dòng)緩存隊(duì)列的處理過程中進(jìn)行了相應(yīng)的改進(jìn),本發(fā)明針對(duì)數(shù)據(jù)包進(jìn)入抖動(dòng)緩存隊(duì)列的處理過程的具體的實(shí)現(xiàn)流程如圖3所示,具體包括以下步驟步驟31在語音傳輸過程中實(shí)時(shí)統(tǒng)計(jì)計(jì)算當(dāng)前數(shù)據(jù)包的網(wǎng)絡(luò)延時(shí)值ni,以便于利用該值進(jìn)行后續(xù)的計(jì)算;步驟32判斷當(dāng)前網(wǎng)絡(luò)是處于正常狀態(tài)還是處于網(wǎng)絡(luò)尖峰狀態(tài),如果處于正常狀態(tài),則執(zhí)行步驟33,否則,執(zhí)行步驟310;判斷網(wǎng)絡(luò)所處于的狀態(tài)可以依據(jù)相應(yīng)的標(biāo)志位進(jìn)行,例如,當(dāng)確定網(wǎng)絡(luò)進(jìn)入網(wǎng)絡(luò)尖峰狀態(tài)時(shí),則將網(wǎng)絡(luò)尖峰狀態(tài)的標(biāo)志位設(shè)置為有效,或?qū)⒕W(wǎng)絡(luò)狀態(tài)標(biāo)志設(shè)置為網(wǎng)絡(luò)尖峰狀態(tài),這樣,該步驟中便可以很容易地判斷出當(dāng)前網(wǎng)絡(luò)所處于的狀態(tài);步驟33計(jì)算當(dāng)前數(shù)據(jù)包的網(wǎng)絡(luò)延時(shí)值ni與保存的前一個(gè)數(shù)據(jù)包的網(wǎng)絡(luò)延時(shí)值ni-1的差值,以便于根據(jù)該差值判斷網(wǎng)絡(luò)是否進(jìn)入網(wǎng)絡(luò)尖峰狀態(tài),該步驟和步驟34的作用可以認(rèn)為是實(shí)時(shí)監(jiān)測(cè)網(wǎng)絡(luò)中的網(wǎng)絡(luò)尖峰開始點(diǎn);步驟34判斷所述的差值是否大于設(shè)定的網(wǎng)絡(luò)尖峰開始的門限值,如果大于,則執(zhí)行步驟35,否則,執(zhí)行步驟36;步驟35令尖峰斜線的斜率為0,且確定進(jìn)入網(wǎng)絡(luò)尖峰期間,并調(diào)整抖動(dòng)緩存隊(duì)列的出隊(duì)指針,使其指向當(dāng)前數(shù)據(jù)包的位置,并執(zhí)行步驟36;步驟36判斷當(dāng)前網(wǎng)絡(luò)是處于正常狀態(tài)還是處于網(wǎng)絡(luò)尖峰狀態(tài),并根據(jù)步驟2所述的各個(gè)算式進(jìn)行相應(yīng)的計(jì)算,如果處于正常狀態(tài),則執(zhí)行步驟37,否則,執(zhí)行步驟38;步驟37采用網(wǎng)絡(luò)正常狀態(tài)時(shí)的平均延時(shí)計(jì)算算式計(jì)算網(wǎng)絡(luò)中的平均延時(shí)值,可以利用背景技術(shù)中的算式2進(jìn)行網(wǎng)絡(luò)中的平均延時(shí)的計(jì)算;步驟38采用網(wǎng)絡(luò)尖峰狀態(tài)時(shí)的平均延時(shí)計(jì)算算式計(jì)算網(wǎng)絡(luò)中的平均延時(shí),參見前面所述的步驟2中的網(wǎng)絡(luò)尖峰時(shí)的延時(shí)值計(jì)算過程;步驟39采用前面所述的步驟2所述的方法計(jì)算網(wǎng)絡(luò)中的平均抖動(dòng)值。
步驟310根據(jù)連續(xù)收到的相鄰的三個(gè)數(shù)據(jù)包的網(wǎng)絡(luò)延時(shí)值更新所述的斜率值,即采用下述算式進(jìn)行新的斜率值的計(jì)算slope=slope÷2+|(ni-ni-1)+(ni-ni-2)|÷8;因此,在對(duì)語音數(shù)據(jù)包進(jìn)行入隊(duì)處理過程中,還需要實(shí)時(shí)記錄連續(xù)三個(gè)數(shù)據(jù)包的延時(shí)值ni、ni-1、ni-2,以便于步驟310根據(jù)保存的連續(xù)三個(gè)數(shù)據(jù)包的延時(shí)值更新所述的尖峰斜線的斜率值;具體采用的方法為實(shí)時(shí)保存著最新的連續(xù)兩個(gè)數(shù)據(jù)包的延時(shí)值,當(dāng)一個(gè)新的數(shù)據(jù)包到來時(shí),便可以根據(jù)新的數(shù)據(jù)包的延時(shí)值ni和保存的兩個(gè)數(shù)據(jù)包的延時(shí)值ni-1、ni-2進(jìn)行尖峰斜線的斜率值的更新,之后,再將ni-1原來保存的值賦給ni-2,將ni值賦給ni-1,從而使得系統(tǒng)中一直保存著最新的連續(xù)兩個(gè)數(shù)據(jù)包的延時(shí)值,同時(shí)該保存的延時(shí)值還用于步驟33中計(jì)算相鄰的兩個(gè)數(shù)據(jù)包的延時(shí)值的差值;
步驟311判斷更新后的斜率值是否小于設(shè)定的斜率門限值,如果小于,則執(zhí)行步驟312,令當(dāng)前網(wǎng)絡(luò)狀態(tài)為正常狀態(tài),之后執(zhí)行步驟36,否則,直接執(zhí)行步驟36。
通過上述步驟31至步驟312的描述可以看出,當(dāng)收到語音數(shù)據(jù)包并進(jìn)行入抖動(dòng)緩存隊(duì)列的處理時(shí),為實(shí)現(xiàn)本發(fā)明,還需要根據(jù)當(dāng)前的網(wǎng)絡(luò)狀態(tài)基于當(dāng)前的數(shù)據(jù)包計(jì)算相應(yīng)的平均延時(shí)和平均抖動(dòng)值,并保存連續(xù)兩個(gè)數(shù)據(jù)包的延時(shí)值,以便于根據(jù)所述的平均延時(shí)和平均抖動(dòng)進(jìn)行抖動(dòng)緩存深度的調(diào)整,并可根據(jù)保存的數(shù)據(jù)包的延時(shí)值確定網(wǎng)絡(luò)是處于正常狀態(tài)還是處于網(wǎng)絡(luò)尖峰狀態(tài)。
經(jīng)過了上述的語音數(shù)據(jù)包的入抖動(dòng)緩存隊(duì)列的處理過程后,則可以在數(shù)據(jù)包出隊(duì)的過程中根據(jù)入抖動(dòng)緩存隊(duì)列處理過程獲得的計(jì)算結(jié)果進(jìn)行進(jìn)一步的計(jì)算,再對(duì)JB的深度進(jìn)行相應(yīng)的調(diào)整,對(duì)于因網(wǎng)絡(luò)尖峰出現(xiàn)導(dǎo)致需要對(duì)JB深度進(jìn)行調(diào)整時(shí),通常為對(duì)JB深度進(jìn)行增長處理,具體的JB深度調(diào)整點(diǎn)選擇在網(wǎng)絡(luò)尖峰開始點(diǎn)即可,而對(duì)于因網(wǎng)絡(luò)尖峰狀態(tài)結(jié)束或其他原因?qū)е滦枰獙?duì)JB深度進(jìn)行調(diào)整時(shí),則相應(yīng)的調(diào)整點(diǎn)通常選擇在每個(gè)靜音段的開始點(diǎn),尤其是對(duì)JB深度進(jìn)行縮短調(diào)整時(shí)更應(yīng)當(dāng)選擇在靜音段進(jìn)行,以避免在語音段開始點(diǎn)進(jìn)行縮短JB深度的調(diào)整,導(dǎo)致丟棄該語音段的前面若干語音包,造成語音質(zhì)量下降的現(xiàn)象出現(xiàn);對(duì)JB深度進(jìn)行調(diào)整的具體的處理過程參見圖4,包括以下步驟步驟41首先需要計(jì)算當(dāng)前靜音包的實(shí)際播放時(shí)間,定義為舊播放時(shí)間,所述的舊播放時(shí)間為根據(jù)當(dāng)前的系統(tǒng)時(shí)間確定,即舊播放時(shí)間=系統(tǒng)當(dāng)前時(shí)間×?xí)r間轉(zhuǎn)換變量,通過所述的時(shí)間轉(zhuǎn)換變量可以將毫秒轉(zhuǎn)換為系統(tǒng)的計(jì)時(shí)單位1/8毫秒;步驟42根據(jù)背景技術(shù)所述的算式9或算式10,以及上述步驟31至步驟312獲得的結(jié)果,計(jì)算出當(dāng)前靜音包的播放時(shí)間,定義為新播放時(shí)間,新播放時(shí)間就是符合當(dāng)前網(wǎng)絡(luò)抖動(dòng)狀況的播放時(shí)間;步驟43計(jì)算新播放時(shí)間和舊播放時(shí)間之差,即為JB深度需要調(diào)整的幅度,為便于進(jìn)行調(diào)整還需要將所得的差值除以JB的元素長度值(即打包時(shí)長的基本單位),獲得最終的JB深度需要調(diào)整的幅度值,如果所得的差值為“0”,則不需要進(jìn)行調(diào)整;獲得所述的需要調(diào)整的幅度值后,對(duì)于針對(duì)網(wǎng)絡(luò)尖峰期間進(jìn)行的JB深度調(diào)整,直接執(zhí)行步驟47,以保證當(dāng)網(wǎng)絡(luò)尖峰開始時(shí),可以快速地通過遞減出隊(duì)指針增長JB深度以適應(yīng)網(wǎng)絡(luò)尖峰狀態(tài)下數(shù)據(jù)包的緩存處理,而對(duì)于其他情況下的JB深度調(diào)整,則執(zhí)行步驟44;步驟44比較確定所述的幅度值的絕對(duì)值與設(shè)定的允許的一次最大調(diào)整的幅度值中較小的一個(gè),作為實(shí)際針對(duì)JB調(diào)整的幅度值;所述的允許的一次最大調(diào)整的幅度值即為調(diào)整幅度控制因子,通過實(shí)際網(wǎng)或模擬實(shí)際網(wǎng)上測(cè)試,取值可以為10,單位為JB隊(duì)列單元格所對(duì)應(yīng)的時(shí)間(即基本單位),例如編解碼為G.711時(shí),動(dòng)態(tài)JB一次調(diào)整的幅度范圍允許為增長或縮短JB深度(10×10)毫秒;步驟45判斷所述的計(jì)算獲得的幅度值是否小于“0”,如果是執(zhí)行步驟46,否則,執(zhí)行步驟47;步驟46對(duì)JB進(jìn)行深度縮短的調(diào)整,具體為步驟461建立循環(huán)變量,并令其初始值為“0”;步驟462判斷循環(huán)變量是否小于實(shí)際針對(duì)JB調(diào)整的幅度值,如果是,則執(zhí)行步驟463,否則,執(zhí)行步驟48;步驟463判斷當(dāng)前數(shù)據(jù)包是否為語音包,如果是語音包,則執(zhí)行步驟48,否則,執(zhí)行步驟464;即在進(jìn)行JB深度縮短操作時(shí),只要遇到語音包就立刻停止縮短調(diào)整,以保證JB深度調(diào)整時(shí)不刪除任何語音包,避免由于JB深度動(dòng)態(tài)調(diào)整造成的語音質(zhì)量下降;
步驟464將當(dāng)前數(shù)據(jù)包類型置為空包,并將出隊(duì)指針遞增1,循環(huán)變量加1,執(zhí)行步驟462;步驟47對(duì)JB進(jìn)行深度增長調(diào)整,具體為步驟471建立循環(huán)變量,并令其初始值為“0”;步驟472判斷循環(huán)變量是否小于實(shí)際需要針對(duì)JB調(diào)整的幅度值,如果是,則執(zhí)行步驟473,否則,執(zhí)行步驟48;步驟473將出隊(duì)指針遞減1,并將當(dāng)前數(shù)據(jù)包類型置為空包,循環(huán)變量加1,執(zhí)行步驟472;步驟48根據(jù)調(diào)整的結(jié)果更新JB的深度值,過程結(jié)束。
由上述針對(duì)本發(fā)明的詳細(xì)的描述可以看出,本發(fā)明能根據(jù)不斷變化的網(wǎng)絡(luò)狀況進(jìn)行動(dòng)態(tài)JB深度的實(shí)時(shí)調(diào)整,使得接收網(wǎng)關(guān)的抗抖動(dòng)機(jī)制能夠動(dòng)態(tài)地適配變化的IP網(wǎng)絡(luò),本發(fā)明尤其可以很好地適應(yīng)網(wǎng)絡(luò)中的網(wǎng)絡(luò)尖峰狀態(tài)時(shí)對(duì)JB深度的要求。
以上所述,僅為本發(fā)明較佳的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求書的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種適配網(wǎng)絡(luò)尖峰的動(dòng)態(tài)抖動(dòng)緩存的實(shí)現(xiàn)方法,其特征在于包括A、確定網(wǎng)絡(luò)尖峰的開始點(diǎn);B、計(jì)算網(wǎng)絡(luò)尖峰時(shí)的延時(shí)值及網(wǎng)絡(luò)中的抖動(dòng)值;C、根據(jù)網(wǎng)絡(luò)的抖動(dòng)值及網(wǎng)絡(luò)尖峰狀態(tài)的延時(shí)值對(duì)抖動(dòng)緩存的深度進(jìn)行調(diào)整。
2.根據(jù)權(quán)利要求1所述的適配網(wǎng)絡(luò)尖峰的動(dòng)態(tài)抖動(dòng)緩存的實(shí)現(xiàn)方法,其特征在于所述的步驟A包括當(dāng)相鄰的兩個(gè)數(shù)據(jù)包的網(wǎng)絡(luò)延時(shí)超過設(shè)定的門限值時(shí),確定為網(wǎng)絡(luò)尖峰開始點(diǎn)。
3.根據(jù)權(quán)利要求2所述的適配網(wǎng)絡(luò)尖峰的動(dòng)態(tài)抖動(dòng)緩存的實(shí)現(xiàn)方法,其特征在于步驟A所述的門限值為根據(jù)網(wǎng)絡(luò)中的平均抖動(dòng)以及網(wǎng)絡(luò)中的網(wǎng)絡(luò)尖峰期間的延時(shí)值確定。
4.根據(jù)權(quán)利要求1所述的適配網(wǎng)絡(luò)尖峰的動(dòng)態(tài)抖動(dòng)緩存的實(shí)現(xiàn)方法,其特征在于所述的步驟B包括根據(jù)網(wǎng)絡(luò)的平均延時(shí)和當(dāng)前網(wǎng)絡(luò)的相鄰兩個(gè)數(shù)據(jù)包的延時(shí)確定網(wǎng)絡(luò)尖峰時(shí)的網(wǎng)絡(luò)延時(shí)差值,并計(jì)算當(dāng)前網(wǎng)絡(luò)中的平均抖動(dòng)值。
5.根據(jù)權(quán)利要求4所述的適配網(wǎng)絡(luò)尖峰的動(dòng)態(tài)抖動(dòng)緩存的實(shí)現(xiàn)方法,其特征在于所述的步驟B進(jìn)一步包括B1、確定基于前一個(gè)數(shù)據(jù)包的網(wǎng)絡(luò)中的平均延時(shí)值,以及當(dāng)前數(shù)據(jù)包與前一個(gè)數(shù)據(jù)包的網(wǎng)絡(luò)延時(shí)差值,并確定所述的網(wǎng)絡(luò)尖峰時(shí)的平均延時(shí)值,具體包括兩種情況在網(wǎng)絡(luò)尖峰的開始點(diǎn),依據(jù)網(wǎng)絡(luò)正常狀態(tài)下的平均延時(shí)計(jì)算公式計(jì)算所述的基于前一個(gè)數(shù)據(jù)包的網(wǎng)絡(luò)中的平均延時(shí)值di-1為di-1=α×di-2+(1-α)×ni-1,ni-1為第i-1個(gè)語音數(shù)據(jù)包在網(wǎng)絡(luò)中的延時(shí),α為通過測(cè)試獲得的權(quán)值因子,且0≤α≤1,i為語音數(shù)據(jù)包的序號(hào),所述的網(wǎng)絡(luò)延時(shí)差值為ni-ni-1,ni為第i個(gè)語音數(shù)據(jù)包在網(wǎng)絡(luò)中的延時(shí);此時(shí),所述的網(wǎng)絡(luò)尖峰時(shí)的平均延時(shí)值等于所述的平均延時(shí)值與所述的差值的和,即di=di-1+ni-ni-1;在網(wǎng)絡(luò)尖峰期間,依據(jù)網(wǎng)絡(luò)尖峰狀態(tài)下的平均延時(shí)值計(jì)算公式計(jì)算基于前一個(gè)數(shù)據(jù)包的網(wǎng)絡(luò)中的平均延時(shí)值di-1di-1=di-2+ni-1-ni-2,同樣,所述的網(wǎng)絡(luò)延時(shí)差值為ni-ni-1;此時(shí),所述的網(wǎng)絡(luò)尖峰時(shí)的延時(shí)值仍等于所述的平均延時(shí)值與所述的差值的和,即di=di-1+ni-ni-1;B2、令網(wǎng)絡(luò)中的抖動(dòng)值為平均抖動(dòng)值,且所述的平均抖動(dòng)值vi為vi=α×vi-1+(1-α)|di-ni|。
6.根據(jù)權(quán)利要求1、4或5所述的適配網(wǎng)絡(luò)尖峰的動(dòng)態(tài)抖動(dòng)緩存的實(shí)現(xiàn)方法,其特征在于所述的步驟C包括C1、確定當(dāng)前語音數(shù)據(jù)包的實(shí)際播放時(shí)間,定義為舊播放時(shí)間,并根據(jù)網(wǎng)絡(luò)的平均抖動(dòng)值及網(wǎng)絡(luò)尖峰時(shí)的延時(shí)值計(jì)算當(dāng)前語音數(shù)據(jù)包的播放時(shí)間,稱為新播放時(shí)間;C2、根據(jù)所述的舊播放時(shí)間和所述的新播放時(shí)間,實(shí)時(shí)對(duì)接收端的抖動(dòng)緩存隊(duì)列進(jìn)行深度的調(diào)整。
7.根據(jù)權(quán)利要求6所述的適配網(wǎng)絡(luò)尖峰的動(dòng)態(tài)抖動(dòng)緩存的實(shí)現(xiàn)方法,其特征在于所述的步驟C1包括根據(jù)當(dāng)前的系統(tǒng)時(shí)間確定當(dāng)前語音包的舊播放時(shí)間;確定當(dāng)前語音數(shù)據(jù)包的新播放時(shí)間,所述的當(dāng)前語音數(shù)據(jù)包的新播放時(shí)間為pi=tsi+di+γ×vi,pj=pi+tsj-tsi,所述的i為語音段的第一個(gè)數(shù)據(jù)包、j為語音段后續(xù)的數(shù)據(jù)包的序號(hào),所述的γ為對(duì)平均抖動(dòng)的放大倍數(shù),所述的tsi和tsj分別為發(fā)送端發(fā)送第i個(gè)和第j個(gè)語音數(shù)據(jù)包的時(shí)間。
8.根據(jù)權(quán)利要求6所述的適配網(wǎng)絡(luò)尖峰的動(dòng)態(tài)抖動(dòng)緩存的實(shí)現(xiàn)方法,其特征在于所述的步驟C2還包括接收網(wǎng)絡(luò)尖峰開始時(shí)的第一個(gè)數(shù)據(jù)包時(shí),將動(dòng)態(tài)緩存隊(duì)列清空,并將動(dòng)態(tài)緩存隊(duì)列的出隊(duì)指針調(diào)整到網(wǎng)絡(luò)尖峰開始時(shí)的第一個(gè)數(shù)據(jù)包。
9.根據(jù)權(quán)利要求1所述的適配網(wǎng)絡(luò)尖峰的動(dòng)態(tài)抖動(dòng)緩存的實(shí)現(xiàn)方法,其特征在于該方法還包括D、根據(jù)相鄰的數(shù)據(jù)包的網(wǎng)絡(luò)延時(shí)確定網(wǎng)絡(luò)尖峰的結(jié)束點(diǎn);E、根據(jù)當(dāng)前網(wǎng)絡(luò)的平均延時(shí)和平均抖動(dòng)值或最小延時(shí)和平均抖動(dòng)值對(duì)動(dòng)態(tài)抖動(dòng)緩存的深度進(jìn)行調(diào)整。
10.根據(jù)權(quán)利要求9所述的適配網(wǎng)絡(luò)尖峰的動(dòng)態(tài)抖動(dòng)緩存的實(shí)現(xiàn)方法,其特征在于所述的步驟D包括根據(jù)相鄰的數(shù)據(jù)包到達(dá)接收網(wǎng)關(guān)的時(shí)間點(diǎn)確定的尖峰斜線的斜率是否小于設(shè)定的門限值,如果小于,則確定為網(wǎng)絡(luò)尖峰的結(jié)束點(diǎn),否則,仍處于網(wǎng)絡(luò)尖峰期間。
11.根據(jù)權(quán)利要求10所述的適配網(wǎng)絡(luò)尖峰的動(dòng)態(tài)抖動(dòng)緩存的實(shí)現(xiàn)方法,其特征在于步驟D所述的門限值slope為slope=slope÷2+|(ni-ni-1)+(ni-ni-2)|÷8其中,ni、ni-1、ni-2為相鄰三個(gè)數(shù)據(jù)包的網(wǎng)絡(luò)延時(shí)。
12.根據(jù)權(quán)利要求9所述的適配網(wǎng)絡(luò)尖峰的動(dòng)態(tài)抖動(dòng)緩存的實(shí)現(xiàn)方法,其特征在于所述的步驟E包括僅在靜音段對(duì)抖動(dòng)緩存的深度進(jìn)行縮短調(diào)整,且當(dāng)調(diào)整過程遇到語音數(shù)據(jù)包時(shí),立即停止所述的縮短調(diào)整過程。
全文摘要
本發(fā)明涉及一種適配網(wǎng)絡(luò)尖峰的動(dòng)態(tài)抖動(dòng)緩存的實(shí)現(xiàn)方法。該方法中,當(dāng)確定網(wǎng)絡(luò)尖峰開始時(shí),則計(jì)算網(wǎng)絡(luò)尖峰時(shí)的延時(shí)值及網(wǎng)絡(luò)中的平均抖動(dòng)值,并可根據(jù)相應(yīng)的網(wǎng)絡(luò)的平均抖動(dòng)值及網(wǎng)絡(luò)尖峰狀態(tài)的延時(shí)值對(duì)抖動(dòng)緩存的深度進(jìn)行調(diào)整,以適應(yīng)網(wǎng)絡(luò)尖峰狀態(tài)下對(duì)抖動(dòng)緩存的深度的要求。也就是說,本發(fā)明可以準(zhǔn)確地判斷出網(wǎng)絡(luò)尖峰期的開始點(diǎn)和結(jié)束點(diǎn),并在網(wǎng)絡(luò)中出現(xiàn)由網(wǎng)絡(luò)尖峰現(xiàn)象導(dǎo)致的延時(shí)時(shí),使用相應(yīng)的算法對(duì)JB的深度進(jìn)行調(diào)整,以適配所述的網(wǎng)絡(luò)尖峰狀態(tài),降低丟包率,使得網(wǎng)絡(luò)處于尖峰期間時(shí),不會(huì)出現(xiàn)因尖峰期間的連續(xù)丟包而導(dǎo)致VOIP語音質(zhì)量下降的情況。因此,本發(fā)明可以較好地保證網(wǎng)絡(luò)尖峰現(xiàn)象頻繁出現(xiàn)的網(wǎng)絡(luò)中的語音傳輸?shù)馁|(zhì)量。
文檔編號(hào)H04L12/56GK1677953SQ200410033180
公開日2005年10月5日 申請(qǐng)日期2004年4月2日 優(yōu)先權(quán)日2004年4月2日
發(fā)明者陳久松, 王麒 申請(qǐng)人:華為技術(shù)有限公司