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