專利名稱::解碼調(diào)度方法和裝置的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及網(wǎng)絡(luò)電話領(lǐng)域,特別涉及解碼調(diào)度方法和裝置。技術(shù)背景網(wǎng)絡(luò)電話(VoIP,VoiceOverIP)是把話音或傳真轉(zhuǎn)換成數(shù)據(jù),在IP網(wǎng)絡(luò)中傳輸?shù)募夹g(shù)。隨著VoIP的發(fā)展,由于其具有帶寬利用率高,接入成本小,可以和數(shù)據(jù)業(yè)務(wù)很好地結(jié)合等特點(diǎn),正在成為語(yǔ)音通話領(lǐng)域當(dāng)中的一支潛在力量。在VoIP系統(tǒng)中,每個(gè)語(yǔ)音封包到達(dá)目的端的時(shí)間會(huì)因?yàn)榫W(wǎng)絡(luò)延遲(NetworkDelay)的變化而產(chǎn)生抖動(dòng)(Jitter)。因此在目的端通常會(huì)使用抖動(dòng)緩存(JB,JitterBuffer)來(lái)調(diào)整封包的順序,并調(diào)整語(yǔ)音播放延遲的時(shí)間,來(lái)提高語(yǔ)音的質(zhì)量。對(duì)于語(yǔ)音質(zhì)量而言,播放延遲的長(zhǎng)短是個(gè)相當(dāng)關(guān)鍵的因素。如圖1所示,是現(xiàn)有技術(shù)對(duì)收到的數(shù)據(jù)包進(jìn)行JB處理和解碼處理的裝置示意圖,其中收包緩沖區(qū)、JB數(shù)據(jù)空間、TDM(TimeDivisionMultiplex,時(shí)分復(fù)用)數(shù)據(jù)輸出空間三大部分表示了所用到的數(shù)據(jù)緩存空間,而收包功能模塊、JB處理模塊、解碼功能模塊為執(zhí)行單元。VoIP處理流程包括從網(wǎng)絡(luò)端收包,對(duì)收到的數(shù)據(jù)包進(jìn)行JB處理和解碼處理,然后到TDM端播放。JB處理模塊和解碼功能模塊各自按照自己的調(diào)度順序去執(zhí)行,總延時(shí)依賴于各模塊的調(diào)度程序。解碼功能模塊和JB處理模塊的關(guān)系可以是同步的也可以是異步的。當(dāng)前VoIP大部分的解碼算法都是以10mS作為最小幀長(zhǎng)的,所有解碼功能模塊都是采用以10ms為調(diào)度粒度的,即10ms調(diào)度一次。解碼時(shí)所有的報(bào)文在10ms中會(huì)根據(jù)解碼函數(shù)自己的調(diào)度順序做一次解碼,因而現(xiàn)有技術(shù)中解碼的時(shí)間不完全受JB處理模塊控制,而是由調(diào)度算法本身決定。如圖2所示,是現(xiàn)有技術(shù)的10ms調(diào)度粒度的解碼情況示意圖。以在某兩個(gè)通道分別在.2ms時(shí)和8ms時(shí)收到包1和包2為例,假設(shè)當(dāng)前通道JB判斷兩個(gè)數(shù)據(jù)包都需要至少延時(shí)3ms再播放,這樣包1和包2實(shí)際要求數(shù)據(jù)被解碼的時(shí)間分別為5ms和llms。但是由于解碼函數(shù)被調(diào)用的時(shí)間是根據(jù)自身調(diào)度時(shí)刻進(jìn)行解碼的,即解碼函數(shù)只在10ms、20ms、30ms等時(shí)刻被調(diào)用,這樣必然導(dǎo)致解碼時(shí)間要等到距5ms和11ms最近的一次10ms或其倍數(shù)處對(duì)齊,這時(shí)解碼程序才能被調(diào)度。在本例中,包1和包2的實(shí)際解碼時(shí)間分別是10ms、20ms。在對(duì)現(xiàn)有技術(shù)進(jìn)行分析后,發(fā)明人發(fā)現(xiàn)上述現(xiàn)有技術(shù)的JB處理和解碼調(diào)度方法造成即使JB處理模塊能計(jì)算出精確到ms級(jí)的延時(shí),但由于解碼調(diào)度的時(shí)間粒度為10ms,實(shí)際延時(shí)還是以10ms作為調(diào)整單位,造成從收包到數(shù)據(jù)解碼的延時(shí)比較大。
發(fā)明內(nèi)容為了解決VoIP接收端延時(shí)較大的問(wèn)題,保證電話鏈路端到端的延時(shí),本發(fā)明實(shí)施例提供了解碼調(diào)度方法和裝置,所述技術(shù)方案如下-一方面,提供了一種解碼調(diào)度方法,包括以下步驟-接收多個(gè)數(shù)據(jù)包;獲得所述多個(gè)數(shù)據(jù)包的每個(gè)數(shù)據(jù)包的解碼時(shí)刻,所述解碼時(shí)刻包括廣域時(shí)間和小粒度時(shí)間;根據(jù)所述廣域時(shí)間將所述多個(gè)數(shù)據(jù)包保存于抖動(dòng)緩存中的相應(yīng)的時(shí)間域中;.讀取所述抖動(dòng)緩存,提取到時(shí)的數(shù)據(jù)包,其中,所述到時(shí)的數(shù)據(jù)包是指保存于所述抖動(dòng)緩存中的時(shí)間已經(jīng)達(dá)到所述解碼時(shí)刻的數(shù)據(jù)包;對(duì)所述到時(shí)的數(shù)據(jù)包進(jìn)行解碼。另一方面,提供了一種解碼調(diào)度裝置,包括-接收模塊,用于接收多個(gè)數(shù)據(jù)包;獲取模塊,用于獲得所述接收模塊接收到的多個(gè)數(shù)據(jù)包的每個(gè)數(shù)據(jù)包的解碼時(shí)刻,所述解碼時(shí)刻包括廣域時(shí)間和小粒度時(shí)間;保存模塊,根據(jù)所述廣域時(shí)間將所述多個(gè)數(shù)據(jù)包保存于抖動(dòng)緩存中的相應(yīng)的時(shí)間域中;讀取模塊,用于讀取所述抖動(dòng)緩存,提取到時(shí)的數(shù)據(jù)包,其中,所述到時(shí)的數(shù)據(jù)包是指保存于所述抖動(dòng)緩存中的時(shí)間已經(jīng)達(dá)到所述解碼時(shí)刻的數(shù)據(jù)包;'解碼模塊,用于對(duì)所述讀取模塊讀取的到時(shí)的數(shù)據(jù)包進(jìn)行解碼。本發(fā)明實(shí)施例提供的技術(shù)方案的有益效果是通過(guò)引入小粒度時(shí)間和廣域時(shí)間,減小了接收端接收處理帶來(lái)的調(diào)度時(shí)間延時(shí),改善了語(yǔ)音傳送整個(gè)鏈路的端到端延時(shí)。'圖1是現(xiàn)有技術(shù)提供的JB處理和解碼處理的裝置示意圖;圖2是現(xiàn)有技術(shù)提供的10ms調(diào)度粒度的解碼情況示意圖;圖3是本發(fā)明實(shí)施例1提供的解碼調(diào)度方法流程圖;圖4是本發(fā)明實(shí)施例1提供的單通道JB存儲(chǔ)空間示意圖;圖5是本發(fā)明實(shí)施例1提供的小時(shí)間粒度播放表的示意圖;圖6是本發(fā)明實(shí)施例1提供的實(shí)現(xiàn)解碼調(diào)度方法的裝置結(jié)構(gòu)示意圖;'圖7是本發(fā)明實(shí)施例2提供的改進(jìn)的解碼調(diào)度方法流程圖;圖8是本發(fā)明實(shí)施例2提供的向后調(diào)整示意圖;圖9是本發(fā)明實(shí)施例2提供的優(yōu)化的小時(shí)間粒度播放表示意圖;圖10是本發(fā)明實(shí)施例2提供的JB深度變換的調(diào)整示意圖;圖11是本發(fā)明實(shí)施例3提供的解碼調(diào)度裝置的示意圖;圖12是本發(fā)明實(shí)施例3提供的解碼調(diào)度裝置的詳細(xì)示意圖。具體實(shí)施方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn)一歩地詳細(xì)描述。為了減小接收端接收處理帶來(lái)的調(diào)度時(shí)間延時(shí),改善語(yǔ)音傳送整個(gè)鏈路的端到端延時(shí),本發(fā)明實(shí)施例提供了一種解碼調(diào)度方法,該方法內(nèi)容如下接收多個(gè)數(shù)據(jù)包;獲得多個(gè)數(shù)據(jù)包的每個(gè)數(shù)據(jù)包的解碼時(shí)刻,其中,解碼時(shí)刻包括廣域時(shí)間和小粒度時(shí)間;撣據(jù)廣域時(shí)間將多個(gè)數(shù)據(jù)包保存于抖動(dòng)緩存中的相應(yīng)的時(shí)間域中;讀取抖動(dòng)緩存,提取到時(shí)的數(shù)據(jù)包,其中,到時(shí)的數(shù)據(jù)包是指保存于抖動(dòng)緩存中的時(shí)間已經(jīng)達(dá)到解碼時(shí)刻的數(shù)據(jù)包;對(duì)到時(shí)的數(shù)據(jù)包進(jìn)行解碼。為了對(duì)本發(fā)明實(shí)施例提供的解碼調(diào)度方法進(jìn)行詳細(xì)說(shuō)明,請(qǐng)參見(jiàn)下述實(shí)施例實(shí)施例1參見(jiàn)圖3,本發(fā)明實(shí)施例提供了一種解碼調(diào)度方法,該方法內(nèi)容如下101:獲取當(dāng)前數(shù)據(jù)包的解碼時(shí)刻。當(dāng)處理從網(wǎng)絡(luò)端收到的數(shù)據(jù)包包文時(shí),需要將包文根據(jù)其所攜帶的時(shí)間信息放置到JitterBuffer當(dāng)中相應(yīng)的存儲(chǔ)單元當(dāng)中,JB對(duì)收到的數(shù)據(jù)包按時(shí)間順序進(jìn)行排序,同時(shí)計(jì)算出每個(gè)數(shù)據(jù)包解碼需要的延時(shí),根據(jù)數(shù)據(jù)包的收包時(shí)刻和該數(shù)據(jù)包的要求M延遲時(shí)間信息,獲取到該數(shù)據(jù)包的解碼時(shí)刻,例如,假設(shè)在第16ms時(shí)刻接收到一個(gè)數(shù)據(jù)包X,從JB中讀出其要求被延時(shí)8ms,可以獲知,該數(shù)據(jù)包X的解碼的時(shí)刻為第24ms,即在第24ras開(kāi)始對(duì)該數(shù)據(jù)包X執(zhí)行解碼操作。102:根據(jù)解碼時(shí)刻,獲取數(shù)據(jù)包的廣域時(shí)間和小粒度時(shí)間。其中,由于在處理同種業(yè)務(wù)時(shí),VoIP的解碼算法是以固定時(shí)長(zhǎng)為調(diào)度粒度的,本發(fā)明實(shí)施例不限制調(diào)度粒度的具體取值,可以根據(jù)具體的需要設(shè)定該調(diào)度粒度的取值大小,為了便于說(shuō)明,本發(fā)明實(shí)施例中以調(diào)度粒度為10ms為例進(jìn)行說(shuō)明,也就是說(shuō)解碼的時(shí)間間隔為10ms,相應(yīng)地,在本發(fā)明實(shí)施例中,將JB存儲(chǔ)空間以10ms數(shù)據(jù)為單元均勻劃分。一般一個(gè)數(shù)據(jù)包都是一段10ms長(zhǎng)度的數(shù)據(jù),假設(shè)這里接收到的一段語(yǔ)音信息是連貫的,那么數(shù)據(jù)包與上述劃分得到JB存儲(chǔ)空間的數(shù)據(jù)單元就是一一映射的關(guān)系。其中,為了使解碼的調(diào)度時(shí)間更為精確,比如說(shuō)精確到lms,根據(jù)解碼Bt刻需要計(jì)算獲取兩個(gè)值一個(gè)是該數(shù)據(jù)包的廣域時(shí)間,另一個(gè)是在廣域時(shí)間下的小粒度時(shí)間(即廣域時(shí)間內(nèi)具體的解碼時(shí)間點(diǎn))。其中,通過(guò)如下方式,獲取上述數(shù)據(jù)包的廣域時(shí)間和小粒度時(shí)間首先,獲取數(shù)據(jù)包的解碼時(shí)刻信息和廣域時(shí)間的劃分單位;然后,將解碼時(shí)刻信息和廣域時(shí)間的劃分單位相除得到的商值和余數(shù)值;其中,得到的商值即為獲取到的該數(shù)據(jù)包的廣域時(shí)間的取值,余數(shù)值即為獲取到的該數(shù)據(jù)包的解碼時(shí)刻的小粒度時(shí)間。.在描述小粒度時(shí)間時(shí),引入小時(shí)間粒度播放表,該小時(shí)間粒度播放表精確描述了需要做解碼的時(shí)刻,例如,仍以上述解碼時(shí)刻信息為24ms的數(shù)據(jù)包X為例,需要將被解碼的凈核放置到20ms空間當(dāng)中,并將小時(shí)間粒度播放表中代表第4ms時(shí)刻取包的標(biāo)志置為有效,具體實(shí)現(xiàn)內(nèi)容如下'參見(jiàn)圖4,如圖所示該JB的以10ms為廣域時(shí)間的劃分單位,其中,該JB的深度為N*10ras,首先,將上述數(shù)據(jù)包X的解碼時(shí)刻信息24ms除以該劃分單位10ms得到商值整數(shù)2,余數(shù)為4;然后,根據(jù)該商值得到該數(shù)據(jù)包的廣域時(shí)間的取值,如圖4陰影所示,將該數(shù)據(jù)包X放置到JB的20ms單元當(dāng)中保存;根據(jù)該余數(shù)值,得到該數(shù)據(jù)包的廣域時(shí)間的小粒度時(shí)間,即余數(shù)值4就是在該廣域時(shí)間下的具體的解碼時(shí)刻時(shí)間點(diǎn)。如圖5提供的小時(shí)間粒度播放表所示的,將該表中對(duì)應(yīng)的4ms位置處設(shè)置為有效,從而辯示出數(shù)據(jù)包在一個(gè)廣域時(shí)間內(nèi)具體的解碼時(shí)間點(diǎn)。103:根據(jù)獲取的數(shù)據(jù)包的廣域時(shí)間和小粒度時(shí)間,對(duì)數(shù)據(jù)包進(jìn)行解碼調(diào)度。參見(jiàn)圖6,提供了實(shí)現(xiàn)本發(fā)明實(shí)施例提供的解碼調(diào)度方法的裝置示意圖,解碼模塊以時(shí)間順序按照廣域時(shí)間劃分單位依次從JB存儲(chǔ)空間的廣域時(shí)間的數(shù)據(jù)單元(即時(shí)間域)中提取數(shù)據(jù),特別需要注意的是,在每一個(gè)廣域時(shí)間劃分單元內(nèi)提取數(shù)據(jù)時(shí),提取的具體時(shí)刻需要參考其對(duì)應(yīng)的小粒度時(shí)間的有效標(biāo)識(shí)來(lái)確定,從而實(shí)現(xiàn)達(dá)到更小時(shí)間單位讀取數(shù)據(jù)的控制目的。例如,解碼模塊以10ms的時(shí)間間隔,依次從JB存儲(chǔ)空間時(shí)間域0ms,10ms,20ms…數(shù)據(jù)單元當(dāng)中取出數(shù)據(jù),每一個(gè)lOms當(dāng)中具體取出數(shù)據(jù)的時(shí)間需要根據(jù)小時(shí)間粒度播放表當(dāng)中的有效標(biāo)識(shí)來(lái)決定,以小粒度時(shí)間設(shè)置的最小時(shí)間間隔為lms為例,解碼模塊在每個(gè)時(shí)間域10ms中的每lms都去搜索小時(shí)間粒度播放表,判斷其當(dāng)前l(fā)ms的標(biāo)識(shí)是否有效,如果有效,則從當(dāng)前JB的10ms存儲(chǔ)單元中取出數(shù)據(jù);否則,如果為無(wú)效,則認(rèn)為當(dāng)前l(fā)ms不需要取數(shù)據(jù)。其中,上述lras的觸發(fā)可以通過(guò)硬件或者軟件定時(shí)器的方式實(shí)現(xiàn)。綜上所述,本發(fā)明實(shí)施例提供的解碼調(diào)度方法,通過(guò)引入廣域時(shí)間和小粒度時(shí)間,提高了解碼調(diào)度的時(shí)間的精度(例如,由現(xiàn)有的10ms精確到了lms),大幅度地減小了接收端接收處理帶來(lái)的調(diào)度時(shí)間延時(shí),對(duì)于語(yǔ)音傳送整個(gè)鏈路的端到端延時(shí)都有非常可觀的改善,本發(fā)明實(shí)施例提供的方法還可以解決在解碼持續(xù)進(jìn)行的時(shí)候,解碼初期存在的不合理延時(shí)的問(wèn)題。綜上論述了如何通過(guò)引入的小粒度時(shí)間實(shí)現(xiàn)解碼調(diào)度方法,發(fā)明人在實(shí)現(xiàn)本發(fā)明時(shí)還發(fā)現(xiàn),當(dāng)小粒度時(shí)間出現(xiàn)了調(diào)整,會(huì)導(dǎo)致調(diào)整時(shí)的語(yǔ)音質(zhì)量受到影響,因此,為了更有效地判斷是否出現(xiàn)了小粒度時(shí)間的調(diào)整,進(jìn)而保證調(diào)整時(shí)的語(yǔ)音質(zhì)量,參見(jiàn)實(shí)施例2,本發(fā)明實(shí)施例2'還提供了一種解碼調(diào)度方法,詳見(jiàn)下文實(shí)施例2參見(jiàn)圖7,本發(fā)明實(shí)施例提供了一種解碼調(diào)度方法,通過(guò)在小時(shí)間粒度播放表的基礎(chǔ)上,引入歷史播放表,從而更有效地判斷是否出現(xiàn)了小粒度時(shí)間的調(diào)整,進(jìn)而保證調(diào)整時(shí)的語(yǔ)音質(zhì)量,該方法內(nèi)容如下201:獲取當(dāng)前數(shù)據(jù)包的解碼時(shí)刻。202:根據(jù)解碼時(shí)刻,計(jì)算數(shù)據(jù)包的廣域時(shí)間和小粒度時(shí)間。203:根據(jù)獲取的數(shù)據(jù)包的廣域時(shí)間和小粒度時(shí)間,對(duì)數(shù)據(jù)包進(jìn)行解碼。其中,上述201至203具體的實(shí)現(xiàn)可以參照實(shí)施例1中所涉及到101至103所述內(nèi)容,不再贅述。204:根據(jù)歷史播放表和小時(shí)間粒度播放表,執(zhí)行相應(yīng)的刪減/補(bǔ)償處理。具體內(nèi)容如下由于前后兩個(gè)被解碼的數(shù)據(jù)包的播放時(shí)間不一定連貫,也就是說(shuō),它們擇放的時(shí)間可能會(huì)有重疊或者是中間留有空白,所以為了更有效保證數(shù)據(jù)包播放時(shí)的語(yǔ)音質(zhì)量,還需要在播放之前,通過(guò)刪減/補(bǔ)償處理,以實(shí)現(xiàn)達(dá)到平滑斷開(kāi)的數(shù)據(jù)流或填補(bǔ)數(shù)據(jù)流中的空缺的目的。為了對(duì)比前后兩個(gè)被解碼的數(shù)據(jù)包的播放時(shí)間之間的關(guān)系,本發(fā)明實(shí)施例提供了一種歷史播放表,其中,該歷史播放表用于存儲(chǔ)當(dāng)前通道上一次被解碼的數(shù)據(jù)包的小粒度時(shí)間播放表的播放時(shí)刻。解碼模塊每一次在小時(shí)間粒度播放表當(dāng)中搜索有效位時(shí),需要參照歷史播放表當(dāng)中的此時(shí)刻的情況。具體情況如下-如果歷史播放表和小時(shí)間粒度播放表中,同一個(gè)時(shí)刻均為"無(wú)效",則不需要從JB取數(shù)據(jù)解碼;.如果歷史播放表和小時(shí)間粒度播放表中,同一個(gè)時(shí)刻均為"有效",則表示需要從JB取數(shù)據(jù),并且,說(shuō)明了小粒度時(shí)間播放表沒(méi)有出現(xiàn)過(guò)調(diào)整;如果歷史播放表和小時(shí)間粒度播放表中,同一個(gè)時(shí)刻出現(xiàn)小時(shí)間粒度播放表當(dāng)中為"有效",但是歷史播放表中為"無(wú)效",則表示出現(xiàn)了小粒度時(shí)間的調(diào)整,此時(shí)需要取出數(shù)據(jù)進(jìn)行解包,并且根據(jù)小粒度時(shí)間播放表更新歷史播放表。例如針對(duì)解碼時(shí)刻信息為24ms的數(shù)據(jù)包X而言,該數(shù)據(jù)包X之前最近一個(gè)被解碼的數(shù)據(jù)包是數(shù)據(jù)包Y,數(shù)據(jù)包Y的解碼時(shí)刻為16ms,即數(shù)據(jù)包Y保存于廣域時(shí)間為10ms-20ms的數(shù)據(jù)單元中,數(shù)據(jù)包Y在小粒度時(shí)間播放表中的有效位是6ms,其中,對(duì)于數(shù)據(jù)包X而言為數(shù)據(jù)包Y的小時(shí)間粒度播放表即為數(shù)據(jù)包X的歷史播放表,由于對(duì)于數(shù)據(jù)包而言通常攜帶10ms長(zhǎng)度的播放數(shù)據(jù),換言之,數(shù)據(jù)包Y的實(shí)際播放時(shí)間為16ms到26ms。而數(shù)據(jù)包X要求播放的時(shí)間是24ms到34ms(假設(shè)對(duì)于一個(gè)數(shù)據(jù)包而言,其解碼和播放之間不存在延遲),所以在24ms時(shí)刻數(shù)據(jù)包Y尚未播放完畢,而數(shù)據(jù)包X需要進(jìn)行解碼播放,導(dǎo)致出現(xiàn)數(shù)據(jù)重疊,影響語(yǔ)音質(zhì)量,這時(shí)的處理辦法是對(duì)數(shù)據(jù)包X進(jìn)行刪減處理,減去2ms長(zhǎng)度的數(shù)據(jù),使得數(shù)據(jù)包X在26ms時(shí)刻到34ms時(shí)刻之間進(jìn)行播放,以避免出現(xiàn)的數(shù)據(jù)重疊的問(wèn)題,從而保證語(yǔ)音質(zhì)同理,假設(shè)針對(duì)解碼時(shí)刻信息為24ms的數(shù)據(jù)包X而言,其之前最近一個(gè)被解碼的數(shù)據(jù)包是數(shù)據(jù)包Z,數(shù)據(jù)包Z的解碼時(shí)刻為12ms,即數(shù)據(jù)包Z保存于廣域時(shí)間為10ms-20ms的數(shù)據(jù)單元中,數(shù)據(jù)包Z在小時(shí)間粒度播放表中的有效位是2ms,也就是說(shuō)數(shù)據(jù)包Z的實(shí)際播放時(shí)間為12ms到22ms,而數(shù)據(jù)包X要求播放的時(shí)間是24ms到34ms,顯而易見(jiàn),在數(shù)據(jù)包Z播放完畢的22ms時(shí)刻和數(shù)據(jù)包X開(kāi)始播放時(shí)刻24ms之間,存在2ms的空白時(shí)間段,即出現(xiàn)了數(shù)據(jù)的播放間斷,這時(shí)的處理辦法是對(duì)數(shù)據(jù)包X進(jìn)行補(bǔ)償處理,增加2ms長(zhǎng)度的數(shù)據(jù),以填補(bǔ)在22ms時(shí)刻到24ms時(shí)刻的空白,避免出現(xiàn)的數(shù)據(jù)間斷的問(wèn)題,從而保證語(yǔ)音質(zhì)量。參見(jiàn)圖8,提供了小粒度時(shí)間范圍向后調(diào)整示意圖,JB出現(xiàn)小時(shí)間粒度雍圍內(nèi)向后調(diào)整的情況下,如圖所示,陰影部分為利用mS級(jí)精度的補(bǔ)償處理增加的數(shù)據(jù),其中,該圖中每一次解碼數(shù)據(jù)具體為10ms長(zhǎng)度數(shù)據(jù),且該圖示意了解碼和播放之間存在系統(tǒng)固定延遲(以2ms為例)的情況,具體說(shuō)明如下12ms處收到包1,且包1需要延遲時(shí)間JB=4ms,即該包1在16ms處進(jìn)行解碼,且解碼和播放之間需要固定2ms延遲,則該包1真正在18ms處被播放,由于該包1的播放長(zhǎng)度為10ms,,所以如圖所示,18ms至28ms為該包1的真實(shí)播放時(shí)間;同理可知,包2的真實(shí)播放時(shí)間為28ms至38ms;由于對(duì)于在32ms收到包3而言,其延長(zhǎng)時(shí)間JB由4ms調(diào)整為7ms,則其被解碼時(shí)刻為39ms,由于解碼開(kāi)始和播放開(kāi)始之間需要的2ms延遲,所以對(duì)于該包3而言,其被真實(shí)播放時(shí)間為41ms至51ms,即出現(xiàn)了當(dāng)播放時(shí)刻向后調(diào)整情況下,顯而易見(jiàn),包2播放完畢和包3開(kāi)始播放之間存在3ms數(shù)據(jù)空白,因此利用上述本發(fā)明實(shí)施例提供的補(bǔ)償處理,通過(guò)對(duì)包3添加3ms長(zhǎng)度數(shù)據(jù),以填補(bǔ)在38ms時(shí)刻到41ms時(shí)刻的空白,從而避免數(shù)據(jù)間斷,平滑輸出的數(shù)據(jù)。,上述示例論述了播放時(shí)刻向后調(diào)整情況下的補(bǔ)償數(shù)據(jù)示意圖,同理,本領(lǐng)域技術(shù)人員可以獲知,當(dāng)播放時(shí)刻向前調(diào)整情況下,刪除數(shù)據(jù)的處理情況與之類似,不再贅述。由于人類聽(tīng)覺(jué)能力的限制,對(duì)上述毫秒級(jí)的語(yǔ)音數(shù)據(jù)的刪減或補(bǔ)償幾乎感覺(jué)不出來(lái)。綜上,本發(fā)明實(shí)施例通過(guò)引入小粒度時(shí)間播放表,使解碼調(diào)度的時(shí)間由現(xiàn)有的10ms精確到了lms,大幅度地減小了接收端接收處理帶來(lái)的調(diào)度時(shí)間延時(shí),對(duì)于語(yǔ)音傳送整個(gè)鏈路的端到端延時(shí)都有非??捎^的改善。本發(fā)明實(shí)施例還引入歷史播放表,實(shí)現(xiàn)當(dāng)小時(shí)間粒度播放表出現(xiàn)調(diào)整時(shí),參照歷史播放表,通過(guò)對(duì)數(shù)據(jù)包執(zhí)行刪減、補(bǔ)償處理操作,保證輸出的數(shù)據(jù)更為平滑順暢,語(yǔ)音效果質(zhì)量更好。進(jìn)一步地,上述本實(shí)施例提供的方法中的小時(shí)間粒度播放表和歷史播放表也可以合二為一,優(yōu)化上述小時(shí)間粒度播放表,參見(jiàn)圖9,提供了優(yōu)化的小時(shí)間粒度播放表的示意圖。該優(yōu)化的小時(shí)間粒度播放表,包含如下兩類信息(1)廣域時(shí)間下的小粒度時(shí)間(即當(dāng)前具體的播放時(shí)刻);(2)是刪減補(bǔ)償處理需要調(diào)整的時(shí)間。其中,上述兩個(gè)信息都是直接寫入實(shí)現(xiàn),由于JB本身會(huì)維護(hù)歷史播放信息,該表利用從JB得到的歷史播放信息和當(dāng)前播放信息,可以計(jì)算出一個(gè)時(shí)間差值,這個(gè)時(shí)間差值就是刪減補(bǔ)償處理需要調(diào)整的時(shí)間。具體為如果當(dāng)前值減去歷史值為負(fù)時(shí),即當(dāng)前收到的數(shù)據(jù)包的小粒度時(shí)間小于該數(shù)據(jù)包之前最近收到數(shù)據(jù)包的小粒度時(shí)間時(shí),則對(duì)該當(dāng)前數(shù)據(jù)包進(jìn)行刪減處理;如果當(dāng)前值減去歷史值為正時(shí),即當(dāng)前收到的數(shù)據(jù)包的小粒度時(shí)間大于該數(shù)據(jù)包之前最近收到的數(shù)據(jù)包的小粒度時(shí)間時(shí),則對(duì)該當(dāng)前數(shù)據(jù)包進(jìn)行補(bǔ)償處理。具體實(shí)現(xiàn)總結(jié)如下在抖動(dòng)緩存JB的相鄰時(shí)間域中依次提取第一數(shù)據(jù)包和第二數(shù)據(jù)包,依次對(duì)所述第一數(shù)據(jù)包和所述第二數(shù)據(jù)包進(jìn)行解碼,其中,該第二數(shù)據(jù)包即為當(dāng)前數(shù)據(jù)包,第一數(shù)據(jù)包即為該當(dāng)前數(shù)據(jù)包之間的最近收到的數(shù)據(jù)包其中,如果第一數(shù)據(jù)包的小粒度時(shí)間大于第二數(shù)據(jù)包的小粒度時(shí)間,且差值為t個(gè)時(shí)間單位(假如為tms),則對(duì)所述第二數(shù)據(jù)包進(jìn)行刪減處理,即刪除第二數(shù)據(jù)包t個(gè)時(shí)間單位長(zhǎng)度的數(shù)據(jù)。如果第一數(shù)據(jù)包的小粒度時(shí)間小于第二數(shù)據(jù)包的小粒度時(shí)間,且差值為t個(gè)時(shí)間單位,則對(duì)所述第二數(shù)據(jù)包進(jìn)行補(bǔ)償處理,即補(bǔ)償?shù)诙?shù)據(jù)包t個(gè)時(shí)間單位長(zhǎng)度的數(shù)據(jù)。參見(jiàn)圖10,其中,N表示第N個(gè)報(bào)文進(jìn)行解碼后的數(shù)據(jù),當(dāng)前JB深度在lms精度下為5ms(即.需要延遲的時(shí)間為5ms),其中,數(shù)據(jù)正常播放的情況如圖中最后一行所示,'此時(shí),報(bào)文N、N+l、N+2連續(xù)播放;深度提前的情況如圖中中間一行所示,如果JB深度由5ms調(diào)整到2ms,則在該通道的優(yōu)化的小時(shí)間粒度播放表中指示標(biāo)志改為2,此時(shí)可以通過(guò)將調(diào)整的時(shí)間通知解碼器實(shí)現(xiàn)數(shù)據(jù)截?cái)?,如中間一行陰影所示,數(shù)據(jù)播放同樣是每幀10ms數(shù)據(jù),但是播放時(shí)刻已經(jīng)提前到了2ms時(shí)刻;深度延后的情況如圖中第一行所示,第一行指示了JB深度由5ms調(diào)整到8ms,則可以由ms級(jí)精度的補(bǔ)償算法,產(chǎn)生3ms的填充數(shù)據(jù),這樣最終可以延長(zhǎng)播放時(shí)間,使以后每次解碼播放時(shí)刻到達(dá)8ms時(shí)刻。本發(fā)明實(shí)施例解碼的時(shí)間精度是lms,在小時(shí)間粒度播放表的設(shè)計(jì)當(dāng)中,以lms為最小粒度,本領(lǐng)域技術(shù)人員可以獲知,在具體實(shí)現(xiàn)時(shí);所述最小粒度還可以選擇其他的數(shù)值,但要保證選取的數(shù)值小于廣域時(shí)間的劃分單位。針對(duì)本實(shí)施例,該最小粒度要保證小于10ms,可以選擇0.5ms、2ms、2.5ms等,相應(yīng)地,從JB取數(shù)據(jù)的時(shí)間間隔需要改成當(dāng)前設(shè)計(jì)的最小時(shí)間粒度。'綜上所述,本發(fā)明實(shí)施例提供的解碼調(diào)度方法,通過(guò)在小時(shí)間粒度播放表的基礎(chǔ)上,引入歷史播放表,從而更有效地判斷是否出現(xiàn)了小粒度時(shí)間的調(diào)整,進(jìn)而保證調(diào)整時(shí)的語(yǔ)音質(zhì)量。本發(fā)明實(shí)施例不僅適用于IP網(wǎng)絡(luò),只要是分組交換的網(wǎng)絡(luò)或者說(shuō)以包為形式傳輸?shù)木W(wǎng)絡(luò)上都適用。實(shí)施例三參見(jiàn)圖11,本發(fā)明實(shí)施例提供了一種解碼調(diào)度裝置,該裝置包括:接收模塊301,用于接收多個(gè)數(shù)據(jù)包;獲取模塊302,用于獲得接收模塊301接取到的多個(gè)數(shù)據(jù)包的每個(gè)數(shù)據(jù)包的解碼時(shí)刻,解碼時(shí)刻包括廣域時(shí)間和小粒度時(shí)間;保存模塊303,根據(jù)廣域時(shí)間將多個(gè)數(shù)據(jù)包保存于抖動(dòng)緩存中的相應(yīng)的時(shí)間域中;讀取模塊304,用于讀取抖動(dòng)緩存,提取到時(shí)的數(shù)據(jù)包,其中,到時(shí)的數(shù)據(jù)包是指保存于抖動(dòng)緩存中的時(shí)間已經(jīng)達(dá)到解碼時(shí)刻的數(shù)據(jù)包;解碼模塊305,用于對(duì)讀取模塊304讀取的到時(shí)的數(shù)據(jù)包進(jìn)行解碼。進(jìn)一步地,讀取模塊304還包括提取單元3041,用于在抖動(dòng)緩存的相鄰時(shí)間域中依次提取第一數(shù)據(jù)包和第二數(shù)據(jù)包;相應(yīng)地,解碼模塊305,為解碼單元3051,用于依次對(duì)提取單元3041提取的第一數(shù)據(jù)包和第二數(shù)據(jù)包進(jìn)行解碼;裝置還包括調(diào)整模塊306,用于當(dāng)解碼單元3051解碼時(shí),如果第一數(shù)據(jù)包的小粒度時(shí)間小于第二數(shù)據(jù)包的小粒度時(shí)間,則執(zhí)行補(bǔ)償處理;如果第一數(shù)據(jù)包的小粒度時(shí)間大于第二數(shù)據(jù)包的小粒度時(shí)間,則執(zhí)行刪減處理。其中,調(diào)整模塊306具體包括補(bǔ)償單元3061和刪減單元3062;補(bǔ)償單元3061,用于當(dāng)解碼單元3051解碼時(shí),如果第一數(shù)據(jù)包的小粒度時(shí)間小于第二數(shù)據(jù)包的小粒度時(shí)間,且差值為t個(gè)時(shí)間單位,則在第一數(shù)據(jù)包和第二數(shù)據(jù)包之間,補(bǔ)償t個(gè)時(shí)間單位長(zhǎng)度的填充數(shù)據(jù)。刪減單元3062,用于當(dāng)解碼單元3051解碼時(shí),如果第一數(shù)據(jù)包的小粒度時(shí)間大于第二數(shù)據(jù)'包的小粒度時(shí)間,且差值為t個(gè)時(shí)間單位.,則將第二數(shù)據(jù)包截?cái)啵瑢?duì)第二數(shù)據(jù)包刪減t個(gè)時(shí)間單位長(zhǎng)度的數(shù)據(jù)。本發(fā)明實(shí)施例提供的解碼調(diào)度裝置,通引入小粒度時(shí)間,減小了接收端接收處理帶來(lái)的調(diào)度時(shí)間延時(shí)、改善了語(yǔ)音傳送整個(gè)鏈路的端到端延時(shí),保證了語(yǔ)音質(zhì)量。進(jìn)一步地,通過(guò)在小粒度時(shí)間的基礎(chǔ)上,引入調(diào)整模塊,從而更有效地判斷是否出瑰了小粒度時(shí)間的調(diào)整,進(jìn)而保證調(diào)整時(shí)的語(yǔ)音質(zhì)量。綜上所述,本發(fā)明實(shí)施例提供的技術(shù)方案,有效地減小了VoIP中接收端的延時(shí)問(wèn)題,從而減小了整個(gè)話路端到端的延時(shí)。以本發(fā)明中所舉的兩個(gè)包文為例,通過(guò)表1,提供了解碼時(shí)間節(jié)省情況比較表。表1解碼時(shí)間節(jié)省情況比較表<table>tableseeoriginaldocumentpage13</column></row><table>通過(guò)上表,可以獲知本發(fā)明實(shí)施例提供的技術(shù)方案,帶來(lái)的時(shí)間節(jié)約情況是非常顯著的。本領(lǐng)域技術(shù)人員可以獲知本發(fā)明實(shí)施例不僅適用于IP網(wǎng)絡(luò),只要是分組交換的網(wǎng)絡(luò)或以包為形式傳輸?shù)木W(wǎng)絡(luò)上都適用。本發(fā)明實(shí)施例中的"接收"一詞可以理解為主動(dòng)從其他模塊獲取也可以是接收其他模塊發(fā)送來(lái)的信息。,本領(lǐng)域技術(shù)人員可以理解附圖只是一個(gè)優(yōu)選實(shí)施例的示意圖,附圖中的模塊或流程并不一定是實(shí)施本發(fā)明所必須的。本領(lǐng)域技術(shù)人員可以理解實(shí)施例中的裝置中的模塊可以按照實(shí)施例描述分布于實(shí)施例的裝置中,也可以進(jìn)行相應(yīng)變化位于不同于本實(shí)施例的一個(gè)或多個(gè)裝置中。上述實(shí)施例的模塊可以合并為一個(gè)模塊,也可以進(jìn)一步拆分成多個(gè)子模塊。上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。本發(fā)明實(shí)施例中的部分步驟,可以利用軟件實(shí)現(xiàn),相應(yīng)的軟件程序可以存儲(chǔ)在可讀取的存儲(chǔ)介質(zhì)中,如光盤或硬盤等。以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。權(quán)利要求1、一種解碼調(diào)度方法,其特征在于,所述解碼調(diào)度方法包括如下步驟接收多個(gè)數(shù)據(jù)包;獲得所述多個(gè)數(shù)據(jù)包的每個(gè)數(shù)據(jù)包的解碼時(shí)刻,所述解碼時(shí)刻包括廣域時(shí)間和小粒度時(shí)間;根據(jù)所述廣域時(shí)間將所述多個(gè)數(shù)據(jù)包保存于抖動(dòng)緩存中的相應(yīng)的時(shí)間域中,并記錄所述多個(gè)數(shù)據(jù)包的小粒度時(shí)間;讀取所述抖動(dòng)緩存,提取到時(shí)的數(shù)據(jù)包,其中,所述到時(shí)的數(shù)據(jù)包是指保存于所述抖動(dòng)緩存中的時(shí)間已經(jīng)達(dá)到所述解碼時(shí)刻的數(shù)據(jù)包;對(duì)所述到時(shí)的數(shù)據(jù)包進(jìn)行解碼。2、如權(quán)利要求1所述的解碼調(diào)度方法,其特征在于,步驟"獲得每個(gè)數(shù)據(jù)包的解碼時(shí)刻"具體包括根據(jù)當(dāng)前數(shù)據(jù)包的收包時(shí)間和延遲時(shí)間,獲取所述當(dāng)前數(shù)據(jù)包的解碼時(shí)刻。3、如權(quán)利要求1所述的解碼調(diào)度方法,其特征在于,步驟"讀取所述抖動(dòng)緩存,提取到時(shí)的數(shù)據(jù)包"還包括在所述抖動(dòng)緩存的相鄰時(shí)間域中依次提取第一數(shù)據(jù)包和第二數(shù)據(jù)包;依次對(duì)所述第一數(shù)據(jù)包和所述第二數(shù)據(jù)包進(jìn)行解碼,其中,如果第一數(shù)據(jù)包的小粒度時(shí)間小于第二數(shù)據(jù)包的小粒度時(shí)間,則執(zhí)行補(bǔ)償處理;如果第一數(shù)據(jù)包的小粒度時(shí)間大于第二數(shù)據(jù)包的小粒度時(shí)間,則對(duì)執(zhí)行刪減處理。4、如權(quán)利要求3所述的解碼調(diào)度方法,其特征在于,所述補(bǔ)償處理具體為如果所述第一數(shù)據(jù)包的小粒度時(shí)間小于所述第一數(shù)據(jù)包的小粒度時(shí)間,且差值為t個(gè)時(shí)間單位,則在所述第一數(shù)據(jù)包和所述第二數(shù)據(jù)包之間,補(bǔ)償所述t個(gè)時(shí)間單位長(zhǎng)度的填充數(shù)據(jù);所述刪減處理具體為如果所述第一數(shù)據(jù)包的小粒度時(shí)間大于所述第二數(shù)據(jù)包的小粒度時(shí)間,且差值為t個(gè)時(shí)間單位,則將所述第二數(shù)據(jù)包截?cái)啵瑢?duì)所述第二數(shù)據(jù)包刪減所述t個(gè)時(shí)間單位長(zhǎng)度的數(shù)據(jù)。5、如權(quán)利要求4所述的解碼調(diào)度方法,其特征在于,所述t個(gè)時(shí)間單位的取值具體為0至廣域時(shí)間中任一數(shù)值。6、一種解碼調(diào)度裝置,其特征在于,所述解碼調(diào)度裝置包括接收模塊,用于接收多個(gè)數(shù)據(jù)包;獲取模塊,用于獲得所述接收模塊接收到的多個(gè)數(shù)據(jù)包的每個(gè)數(shù)據(jù)包的解碼時(shí)刻,所述解碼時(shí)刻包括廣域時(shí)間和小粒度時(shí)間;保存模塊,根據(jù)所述廣域時(shí)間將所述多個(gè)數(shù)據(jù)包保存于抖動(dòng)緩存中的相應(yīng)的時(shí)間域中;讀取模塊,用于讀取所述抖動(dòng)緩存,提取到時(shí)的數(shù)據(jù)包,其中,所述到時(shí)的數(shù)據(jù)包是指保存于所述抖動(dòng)緩存中的時(shí)間已經(jīng)達(dá)到所述解碼時(shí)刻的數(shù)據(jù)包;'解碼模塊,用于對(duì)所述讀取模塊讀取的到時(shí)的數(shù)據(jù)包進(jìn)行解碼。7、如權(quán)利要求6所述的解碼調(diào)度裝置,其特征在于,所述讀取模塊還包括-提取單元,用于在所述抖動(dòng)緩存的相鄰時(shí)間域中依次提取第一數(shù)據(jù)包和第二數(shù)據(jù)包;相應(yīng)地,所述解碼模塊,為解碼單元,用于依次對(duì)所述提取單元提取的第一數(shù)據(jù)包和所述第二數(shù)據(jù)包進(jìn)行解碼;所述裝置還包括調(diào)整模塊,用于當(dāng)所述解碼單元解碼時(shí),如果第一數(shù)據(jù)包的小粒度時(shí)間小于第二數(shù)據(jù)包的小粒度時(shí)間,則執(zhí)行補(bǔ)償處理;如果第一數(shù)據(jù)包的小粒度時(shí)間大于第二數(shù)據(jù)包的小粒度時(shí)間,則執(zhí)行刪減處理。8、如權(quán)利要求7所述的解碼調(diào)度裝置,其特征在于,所述調(diào)整模塊具體包括補(bǔ)償單元和刪減單元;所述補(bǔ)償單元,用于當(dāng)所述解碼單元解碼時(shí),如果所述第一數(shù)據(jù)包的小粒度時(shí)間小于所述第二數(shù)據(jù)包的小粒度時(shí)間,且差值為t個(gè)時(shí)間單位,則在所述第一數(shù)據(jù)包和所述第二數(shù)據(jù)包之間,補(bǔ)償所述t個(gè)時(shí)間單位長(zhǎng)度的填充數(shù)據(jù)。.所述刪減單元,用于當(dāng)所述解碼單元解碼時(shí),如果所述第一數(shù)據(jù)包的小粒度時(shí)間大于所述第二數(shù)據(jù)包的小粒度時(shí)間,且差值為t個(gè)時(shí)間單位,則將所述第二數(shù)據(jù)包截?cái)?,?duì)所述第二數(shù)據(jù)包刪減所述t個(gè)時(shí)間單位長(zhǎng)度的數(shù)據(jù)。全文摘要本發(fā)明公開(kāi)了解碼調(diào)度方法和裝置,屬于網(wǎng)絡(luò)電話領(lǐng)域。該方法包括接收多個(gè)數(shù)據(jù)包;獲得所述多個(gè)數(shù)據(jù)包的每個(gè)數(shù)據(jù)包的解碼時(shí)刻,所述解碼時(shí)刻包括廣域時(shí)間和小粒度時(shí)間;根據(jù)所述廣域時(shí)間將所述多個(gè)數(shù)據(jù)包保存于抖動(dòng)緩存中的相應(yīng)的時(shí)間域中;讀取所述抖動(dòng)緩存,提取到時(shí)的數(shù)據(jù)包,其中,所述到時(shí)的數(shù)據(jù)包是指保存于所述抖動(dòng)緩存中的時(shí)間已經(jīng)達(dá)到所述解碼時(shí)刻的數(shù)據(jù)包;對(duì)所述到時(shí)的數(shù)據(jù)包進(jìn)行解碼。該裝置包括接收模塊、獲取模塊、保存模塊、讀取模塊和解碼模塊。通過(guò)引入小粒度時(shí)間,減小了接收端接收處理帶來(lái)的調(diào)度時(shí)間延時(shí)、改善了語(yǔ)音傳送整個(gè)鏈路的端到端延時(shí),保證了語(yǔ)音質(zhì)量。文檔編號(hào)H04L12/56GK101335796SQ20081013326公開(kāi)日2008年12月31日申請(qǐng)日期2008年7月25日優(yōu)先權(quán)日2008年7月25日發(fā)明者凡余,超邱申請(qǐng)人:華為技術(shù)有限公司