專(zhuān)利名稱(chēng):一種基于實(shí)時(shí)傳輸協(xié)議的多媒體數(shù)據(jù)傳輸控制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種分組包交換網(wǎng)絡(luò)中的多媒體數(shù)據(jù)傳輸控制方法,尤其涉及一種基于RTP (Real-time Transport Protocol,實(shí)時(shí)傳輸協(xié)議)的多媒體數(shù) 據(jù)傳輸控制方法。
背景技術(shù):
隨著網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展和全球信息化程度的加深,多媒體實(shí)時(shí)通信已 成為網(wǎng)絡(luò)通信中的一個(gè)非常重要的業(yè)務(wù),這些業(yè)務(wù)主要包括視頻點(diǎn)播、可視電話、會(huì)議電視、遠(yuǎn)程教育、流媒體等,這些應(yīng)用中的關(guān)鍵技術(shù)是數(shù)字視頻 的實(shí)時(shí)采集和傳輸。實(shí)時(shí)傳輸協(xié)議是在多媒體實(shí)時(shí)通信領(lǐng)域被廣泛采用的一種傳輸協(xié)議。 RTP被定義在一對(duì)一或一對(duì)多的傳輸情況下工作。RTP通常使用UDP來(lái) 傳送數(shù)據(jù),但RTP也可以在TCP或ATM等其他協(xié)議下工作。RFC( Request for Comments,請(qǐng)求注解)標(biāo)準(zhǔn)集對(duì)不同視頻壓縮格式定義了不同的數(shù)據(jù)包 并設(shè)計(jì)了相應(yīng)的傳輸控制方法。對(duì)于H.263格式視頻數(shù)據(jù)的RTP傳輸,RFC 2190中在RTP頭信息中定 義的負(fù)載(paylaod)信息,包括解碼需要的編碼數(shù)據(jù)類(lèi)型,編碼特性和數(shù) 據(jù)包前后關(guān)系,發(fā)出的時(shí)間信息以及數(shù)據(jù)包分割方法。對(duì)于11.263+格式視頻數(shù)據(jù)的RTP傳輸,RFC 2429中定義了視頻流的開(kāi) 始、結(jié)束,以及各種幀數(shù)據(jù)的同步幀數(shù)據(jù)關(guān)系,可以用于指導(dǎo)解碼前如何進(jìn) 行組包。對(duì)于H.264格式視頻數(shù)據(jù)的RTP傳輸,RFC 3984中利用MIME (Multipurpose Internet Mail Extensions,多用途網(wǎng)際郵件擴(kuò)充協(xié)議)來(lái)控制 初始順序,最大到達(dá)時(shí)間差異等,有利于組包的靈活控制。RFC 3640中定 義了音頻視頻數(shù)據(jù)碼流的負(fù)載格式。此外RFC 3640中還允許數(shù)據(jù)包以交疊 (Interleave)方式傳輸,增大了網(wǎng)絡(luò)傳輸?shù)娜蒎e(cuò)能力。但是,上述各種與RTP傳輸相關(guān)的協(xié)議都沒(méi)有從數(shù)據(jù)封裝格式方面為 接收端提供預(yù)見(jiàn)數(shù)據(jù)到達(dá)的能力;并且,由于經(jīng)過(guò)包交換網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)會(huì) 產(chǎn)生亂序、丟失等問(wèn)題,接收端在收到經(jīng)過(guò)網(wǎng)絡(luò)發(fā)送的數(shù)據(jù)包后,還需要對(duì) 其進(jìn)行重新排序,數(shù)據(jù)包的存儲(chǔ)也通常需要以鏈表形式進(jìn)行保存,加重了接 收端的處理負(fù)荷,降低了接收端的處理能力。發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問(wèn)題是,克服現(xiàn)有技術(shù)中基于RTP的多媒體數(shù)據(jù) 傳輸控制方法的不足,提出一種從數(shù)據(jù)封裝格式方面為接收端提供預(yù)見(jiàn)數(shù)據(jù) 到達(dá)的能力,并使接收端能夠以實(shí)時(shí)組包、零拷貝的方式對(duì)音頻視頻數(shù)據(jù)流 進(jìn)行處理的多媒體數(shù)據(jù)傳輸控制方法。為了解決上述問(wèn)題,本發(fā)明提供一種基于實(shí)時(shí)傳輸協(xié)議的多媒體數(shù)據(jù)傳 輸控制方法,包含如下步驟步驟A:發(fā)送端完成一個(gè)AU組的編碼后,在該AU組包含的AU頭信 息中寫(xiě)入該AU在所屬AU組內(nèi)的相對(duì)位置信息;并將該AU組包含的AU 發(fā)送至接收端;步驟B:接收端根據(jù)AU頭信息中包含的該AU在所屬AU組內(nèi)的相對(duì) 位置信息和該AU的AU索引或索引差信息,以解碼順序?qū)⑵浔4嬖谝粋€(gè)可 用的AU組緩存的緩存單元中。此外,所述AU在所屬AU組內(nèi)的相對(duì)位置信息為該AU所屬AU組內(nèi) 的其它AU相對(duì)于該AU的偏移值。此外,所述AU在所屬AU組內(nèi)的相對(duì)位置信息還可以是該AU相對(duì)于 所屬AU組內(nèi)特定AU的偏移值。此外,在所述步驟A之前還包含如下步驟 發(fā)送端和接收端對(duì)AU組參數(shù)進(jìn)行協(xié)商和確定。 此外,在所述步驟B之后還包舍如下步驟步驟C:接收端的接收模塊完成一個(gè)AU組數(shù)據(jù)的接收后,通知相應(yīng)的 AU處理程序進(jìn)行處理,同時(shí)標(biāo)記該AU組對(duì)應(yīng)緩存單元的狀態(tài)為不可用;步驟D: AU處理程序完成對(duì)AU組數(shù)據(jù)的處理后通知接收模塊,接收 模塊標(biāo)記相應(yīng)的緩存單元的狀態(tài)為可用。此外,AU組中包含多于一個(gè)的可有效解碼的數(shù)據(jù)單元。此外,所述AU頭信息中包含可用于標(biāo)記該AU是否為所屬組內(nèi)最后一 個(gè)AU的字段。本發(fā)明針對(duì)各種不同的音頻視頻數(shù)據(jù)格式都可以通過(guò)在RTP包的AU 頭信息中加入?yún)⒖紨?shù)據(jù)塊的相對(duì)位置信息,并在發(fā)送端和接收端的處理流程 上進(jìn)行相應(yīng)的改進(jìn),使得接收端能夠以更為高效的方式對(duì)多媒體數(shù)據(jù)流進(jìn)行對(duì)多媒體數(shù)據(jù)流同步進(jìn)行處理。
圖1是RFC 3640定義的RTP包的負(fù)載格式;圖2是RFC3640定義的RTP包中的AU頭部分的結(jié)構(gòu)示意圖;圖3是RFC 3640定義的AU頭信息的基本結(jié)構(gòu)示意圖;圖4是本發(fā)明增加了 AU在組內(nèi)的相對(duì)位置信息的AU頭信息的結(jié)構(gòu)示 意圖。
具體實(shí)施方式
本發(fā)明的基本思路是,通過(guò)在RTP包的AU頭信息中加入各參考數(shù)據(jù)
塊的相對(duì)位置信息,接收端根據(jù)該相對(duì)位置信息及AU索引信息將該AU以 正確的解碼位置放入緩存中。下面將結(jié)合附圖,并以RFC 3640的RTP封裝格式為例對(duì)本發(fā)明進(jìn)行詳 細(xì)的說(shuō)明。AU( Access Unit,訪問(wèn)單元)作為最小的解碼有效單元,通常是發(fā)送 端和接收端編碼、解碼和傳輸控制的基本單位,如何對(duì)AU進(jìn)行傳輸控制、 存儲(chǔ)和讀取是發(fā)送端和接收端快速高效地進(jìn)行多媒體通訊的關(guān)鍵因素。圖1是RFC 3640定義的RTP包的負(fù)載格式。圖2是RFC 3640定義的RTP包中的AU頭部分的結(jié)構(gòu)示意圖。如圖1和圖2所示,RTP包頭包含RTP頭、AU頭部分、附加數(shù)據(jù)部分 和AU數(shù)據(jù)部分。由于一個(gè)RTP包中可包含多個(gè)AU,所以RTP包的AU頭 部分包含AU頭長(zhǎng)度和多個(gè)AU頭。圖3是RFC3640定義的AU頭信息的基本結(jié)構(gòu)示意圖。如圖3所示,AU頭信息中包含AU的大小、AU索引或索引差、CTS 標(biāo)志、CTS差值、DTS標(biāo)志、DTS差值、RAP標(biāo)志和流狀態(tài)。各字段在 RFC 3640文檔中都有詳細(xì)的定義。為了使接收端在接收到RTP包以及其中包含的AU時(shí),能夠?qū)⑵渲苯?以正確的解碼順序存^t,可將AU進(jìn)行分組,并在AU頭信息中加入該AU 在組內(nèi)的相對(duì)位置信息。AU組中包含AU的數(shù)量由多種因素所決定。首先AU組中包舍AU的 數(shù)量需大于一次編解碼有效的所有AU包/AU片斷數(shù)量的總和。此外,為了 對(duì)以交疊方式傳輸?shù)腁U進(jìn)行正確的處理,AU組包含AU的數(shù)量需大于 maxDisplacement。關(guān)于maxDisplacement的定義以及計(jì)算方法i青參見(jiàn)RFC 3640文檔。此外,AU組中包含AU的數(shù)量需要考慮到接收端上層應(yīng)用的處理能力 以及視頻/音頻數(shù)據(jù)顯示/播放的視覺(jué)/聽(tīng)覺(jué)平滑效果;此外AU組中包含AU
的數(shù)量還與發(fā)送端和接收端能夠提供的緩存大小等因素直接相關(guān)。AU組中 包含AU的數(shù)量還受到發(fā)送方編碼器產(chǎn)生數(shù)據(jù)速度限制。圖4是本發(fā)明增加了 AU在組內(nèi)的相對(duì)位置信息的AU頭信息的結(jié)構(gòu)示 意圖。如圖4所示,"前面第x個(gè)AU的偏移值"表示本AU的前面第x個(gè) AU的第一個(gè)字節(jié)相對(duì)于本AU的笫一個(gè)字節(jié)的偏移值,以字節(jié)表示。"后 面第y個(gè)AU的偏移值,,表示本AU的后面第y個(gè)AU的第一個(gè)字節(jié)相對(duì)于 本AU的第一個(gè)字節(jié)的偏移值,以字節(jié)表示。上述偏移值由發(fā)送端完成對(duì) AU的編碼后,在發(fā)送前分別進(jìn)行設(shè)置。圖4中的"忽略標(biāo)志"可表示該AU是否可忽略,也可作其它用途。當(dāng)然,AU在組內(nèi)的相對(duì)位置信息也可以其它方式表示,例如在AU頭 信息中包含該AU相對(duì)于組內(nèi)第 一個(gè)AU的偏移值。在接收端,在接收到RTP數(shù)據(jù)包后,需要將RTP數(shù)據(jù)包中包含的各AU 的AU數(shù)據(jù)部分才艮據(jù)其所在的AU組和在組內(nèi)的相對(duì)位置信息存儲(chǔ)在相應(yīng)的 AU組緩存中。上述AU組緩存的大小可通過(guò)如下方式確定AU緩存的大小-nx (AU組最大長(zhǎng)度);其中,n表示AU組緩存中可以存儲(chǔ)的AU組的數(shù)量,n>l。AU組最大長(zhǎng)度=(AU組中包含AU數(shù)量的最大值)x (AU最大長(zhǎng)度)。上述"AU組中包含AU數(shù)量的最大值"和"AU最大長(zhǎng)度"可采用如 下方式進(jìn)行估算當(dāng)選定了一種編解碼格式后,根據(jù)數(shù)據(jù)處理能力,發(fā)送方和接收方根據(jù) 所采用的平臺(tái)建立一個(gè)參考測(cè)試環(huán)境,通過(guò)系統(tǒng)一般情況下和系統(tǒng)CPU和 其它資源竟?fàn)幘o張情況下數(shù)據(jù)的接收能力來(lái)確定。此外,估算還需參考如下
因素網(wǎng)卡的處理速度,TCP/IP的數(shù)據(jù)呑吐量,編碼器和解碼器的處理速 度,在多任務(wù)情況下緩沖隊(duì)列處理和數(shù)據(jù)搬移速度等。另外發(fā)送方和接收方 在有多個(gè)傳輸通路并行處理時(shí)還需要考慮每個(gè)通路的平均數(shù)據(jù)處理速度。上述AU組緩存中可以存儲(chǔ)的AU組的數(shù)量n的取值受到上層應(yīng)用程序 對(duì)數(shù)據(jù)的處理速度的制約,通常n取為大于3的整數(shù)。允許同時(shí)接收多個(gè) AU時(shí),上層可以至少處理一個(gè)AU組。由于網(wǎng)絡(luò)發(fā)送的延遲到達(dá)和數(shù)據(jù)包 到達(dá)順序有可能與解碼順序不一致,因此可以允許有至少兩個(gè)AU組同時(shí)在 接收。上述AU組緩存可分為n個(gè)緩存單元,其中,每個(gè)緩存單元保存一個(gè) AU組,緩存單元大小等于AU組最大長(zhǎng)度。此外,AU組緩存還可采用鏈 表和環(huán)形數(shù)組等方式。由于AU組的接收和對(duì)AU組數(shù)據(jù)的處理可由接收端的接收模塊和上層 應(yīng)用程序同時(shí)進(jìn)行,所以需對(duì)AU組緩存的使用進(jìn)行同步處理。同步處理可 采用全局變量、信號(hào)量、系統(tǒng)消息等方式實(shí)現(xiàn)。例如,當(dāng)AU組接收模塊完 成對(duì)一個(gè)AU組的接收時(shí),發(fā)送系統(tǒng)消息給上層應(yīng)用程序,系統(tǒng)消息中包含 保存該AU組的緩存單元的編號(hào)及起始地址和數(shù)據(jù)長(zhǎng)度等信息,同時(shí)將對(duì)應(yīng) 的AU組緩存單元設(shè)置為不可用狀態(tài);當(dāng)上層應(yīng)用程序?qū)υ揂U組的數(shù)據(jù)處 理完畢后,發(fā)送系統(tǒng)消息給接收模塊,接收模塊將對(duì)應(yīng)的AU組緩存單元設(shè) 置為可用狀態(tài),將接收到的下一個(gè)AU組的數(shù)據(jù)保存在狀態(tài)為可用的AU組 緩存單元中。上述"AU組中包含AU數(shù)量的最大值,,和"AU最大長(zhǎng)度,,等AU組 參數(shù)可以采用靜態(tài)配置的方式在發(fā)送端和接收端分別進(jìn)行配置。但是,為了 增加系統(tǒng)的靈活性,適應(yīng)各種音頻視頻格式的多媒體數(shù)據(jù)的處理,上述各參數(shù)可在發(fā)送前或發(fā)送過(guò)程中進(jìn)行動(dòng)態(tài)配置,參數(shù)的動(dòng)態(tài)配置及發(fā)送接收流程 包含如下步驟
步驟l:發(fā)送端向接收端發(fā)送控制信息; 上述控制信息中包舍AU最大長(zhǎng)度等信息; 上迷控制信息可采用MIME/SDP格式進(jìn)行定義和解析。步驟2:接收端根據(jù)發(fā)送端發(fā)送的控制信息及接收端對(duì)數(shù)據(jù)的處理能力 計(jì)算AU組中包含AU數(shù)量的最大值,并將此信息發(fā)送至發(fā)送端;步驟3:發(fā)送端根據(jù)自身的處理能力和數(shù)據(jù)緩沖的大小,修改并確定 AU組中包含AU數(shù)量的最大值,并將該值發(fā)送至接收端;同時(shí)建立發(fā)送隊(duì) 列及相應(yīng)資源;步驟4:接收端根據(jù)最終確定的AU組中包含AU數(shù)量的最大值、AU 最大長(zhǎng)度等信息分配用于保存AU組數(shù)據(jù)的AU組緩存;步驟5:發(fā)送端開(kāi)始編碼并將編碼后的AU數(shù)據(jù)保存至發(fā)送隊(duì)列中;步驟6:發(fā)送端完成一個(gè)AU組的編碼后,將各AU在AU組內(nèi)的相對(duì) 位置信息寫(xiě)入AU頭信息中,將AU組發(fā)送至接收端;步驟7:接收端根據(jù)AU頭信息中包含的AU在所屬AU組內(nèi)的相對(duì)位 置信息和AU索引或索引差信息,以解碼順序?qū)⒏鰽U保存在一個(gè)可用的 AU組緩存區(qū)中;步驟8:接收端接收到完整的AU組數(shù)據(jù)時(shí),將保存該AU組數(shù)據(jù)的AU 組緩存區(qū)的地址、長(zhǎng)度等信息通知上層應(yīng)用程序進(jìn)行處理;步驟9:上層應(yīng)用程序?qū)υ揂U組處理完畢,通知接收端,接收端標(biāo)志 相應(yīng)AU組緩存區(qū)為可用。此外,當(dāng)AU組發(fā)送延遲過(guò)大時(shí),發(fā)送端可在當(dāng)前AU組尚未發(fā)送完成 時(shí),將組內(nèi)的待發(fā)AU封裝成下一個(gè)AU組的AU進(jìn)行發(fā)送,同時(shí)在該待發(fā) AU的AU頭信息的忽略標(biāo)志中,寫(xiě)入該AU在先前所屬的AU組中的序號(hào)。 接收端對(duì)AU頭信息的忽略標(biāo)志進(jìn)行判斷,當(dāng)忽略標(biāo)志大于0時(shí),根據(jù)該 AU的AU索引和忽略標(biāo)志中的該AU在先前所屬的AU組中的序號(hào)獲知該AU先前所屬的AU組,并停止該先前所屬AU組的后續(xù)AU的接收,當(dāng)該 AU先前所屬AU組中AU索引值小于該AU的組內(nèi)AU接收完畢時(shí),標(biāo)記 該AU組接收完畢,通知上層應(yīng)用程序?qū)υ揂U組進(jìn)行處理。此外,由于AU組中包含的AU數(shù)不一定每次相同,AU頭信息的忽略 標(biāo)志可用于表示當(dāng)前AU為組內(nèi)最后一個(gè)AU。此外,在AU組的接收過(guò)程中可以根據(jù)上述maxDisplacement值對(duì)當(dāng)前 的網(wǎng)絡(luò)的穩(wěn)定性進(jìn)行監(jiān)測(cè),即出現(xiàn)當(dāng)前接收到的AU的AU時(shí)間戳和最早應(yīng) 該出現(xiàn)但是沒(méi)有出現(xiàn)的AU的AU時(shí)間戳的差值大于maxDisplacement時(shí), 可以認(rèn)為網(wǎng)絡(luò)條件不穩(wěn)定,即應(yīng)該接收到的數(shù)據(jù)沒(méi)有到達(dá)。此時(shí)系統(tǒng)應(yīng)進(jìn)行 如下處理如果相應(yīng)的標(biāo)準(zhǔn)中規(guī)定了對(duì)沒(méi)有到達(dá)的非關(guān)鍵AU不可以忽略,則告知 上層應(yīng)用程序,由上層應(yīng)用程序決定是否丟棄該AU組,當(dāng)這種情況頻繁發(fā) 生時(shí),系統(tǒng)可以重新回到接收的初始狀態(tài),發(fā)送方重新開(kāi)始發(fā)送。
權(quán)利要求
1. 一種基于實(shí)時(shí)傳輸協(xié)議的多媒體數(shù)據(jù)傳輸控制方法,包含如下步驟步驟A發(fā)送端完成一個(gè)AU組的編碼后,在該AU組包含的AU頭信息中寫(xiě)入該AU在所屬AU組內(nèi)的相對(duì)位置信息;并將該AU組包含的AU發(fā)送至接收端;步驟B接收端根據(jù)AU頭信息中包含的該AU在所屬AU組內(nèi)的相對(duì)位置信息和該AU的AU索引或索引差信息,以解碼順序?qū)⑵浔4嬖谝粋€(gè)可用的AU組緩存的緩存單元中。
2、 如權(quán)利要求1所述的基于實(shí)時(shí)傳輸協(xié)議的多媒體數(shù)據(jù)傳輸控制方 法,其特征在于,所述AU在所屬AU組內(nèi)的相對(duì)位置信息為該AU所屬 AU組內(nèi)的其它AU相對(duì)于該AU的偏移值。
3、 如權(quán)利要求1所述的基于實(shí)時(shí)傳輸協(xié)議的多媒體數(shù)據(jù)傳輸控制方 法,其特征在于,所述AU在所屬AU組內(nèi)的相對(duì)位置信息為該AU相對(duì)于 所屬AU組內(nèi)特定AU的偏移值。
4、 如權(quán)利要求1所述的基于實(shí)時(shí)傳輸協(xié)議的多媒體數(shù)據(jù)傳輸控制方 法,其特征在于,在所述步驟A之前還包含如下步驟發(fā)送端和接收端對(duì)AU組參數(shù)進(jìn)行協(xié)商和確定。
5、 如權(quán)利要求1所述的基于實(shí)時(shí)傳輸協(xié)議的多媒體數(shù)據(jù)傳輸控制方 法,其特征在于,在所述步驟B之后還包含如下步驟步驟C:接收端的接收模塊完成一個(gè)AU組數(shù)據(jù)的接收后,通知相應(yīng)的 AU處理程序進(jìn)行處理,同時(shí)標(biāo)記該AU組對(duì)應(yīng)緩存單元的狀態(tài)為不可用;步驟D: AU處理程序完成對(duì)AU組數(shù)據(jù)的處理后通知接收模塊,接收 模塊標(biāo)記相應(yīng)的緩存單元的狀態(tài)為可用。
6、 如權(quán)利要求1所述的基于實(shí)時(shí)傳輸協(xié)議的多媒體數(shù)據(jù)傳輸控制方 法,其特征在于,AU組中包含多于一個(gè)的可有效解碼的數(shù)據(jù)單元。
7、如權(quán)利要求1所述的基于實(shí)時(shí)傳輸協(xié)議的多媒體數(shù)據(jù)傳輸控制方法,其特征在于,所述AU頭信息中包含可用于標(biāo)記該AU是否為所屬組內(nèi) 最后一個(gè)AU的字段。
全文摘要
一種基于實(shí)時(shí)傳輸協(xié)議的多媒體數(shù)據(jù)傳輸控制方法,包含如下步驟步驟A發(fā)送端完成一個(gè)AU組的編碼后,在該AU組包含的AU頭信息中寫(xiě)入該AU在所屬AU組內(nèi)的相對(duì)位置信息;并將該AU組包含的AU發(fā)送至接收端;步驟B接收端根據(jù)AU頭信息中包含的該AU在所屬AU組內(nèi)的相對(duì)位置信息和該AU的AU索引或索引差信息,以解碼順序?qū)⑵浔4嬖谝粋€(gè)可用的AU組緩存的緩存單元中。本發(fā)明針對(duì)各種不同的音頻視頻數(shù)據(jù)格式都可以通過(guò)在RTP包的AU頭信息中加入?yún)⒖紨?shù)據(jù)塊的相對(duì)位置信息,并在發(fā)送端和接收端的處理流程上進(jìn)行相應(yīng)的改進(jìn),使得接收端能夠以更為高效的方式對(duì)多媒體數(shù)據(jù)流進(jìn)行處理。
文檔編號(hào)H04L29/06GK101212452SQ200610156209
公開(kāi)日2008年7月2日 申請(qǐng)日期2006年12月31日 優(yōu)先權(quán)日2006年12月31日
發(fā)明者張明華, 朱佐亮, 羅宏宇 申請(qǐng)人:中興通訊股份有限公司