專利名稱:避免丟失分組恢復(fù)中的擁塞的系統(tǒng)和方法
專利說(shuō)明避免丟失分組恢復(fù)中的擁塞的系統(tǒng)和方法
背景技術(shù):
越來(lái)越多的視頻會(huì)議系統(tǒng)開始使用分組-交換網(wǎng)絡(luò),例如互聯(lián)網(wǎng),而不是電路-交換網(wǎng)絡(luò),例如PSTN和ISDN。將分組-交換網(wǎng)絡(luò)用于視頻會(huì)議所帶來(lái)的一個(gè)問題是,所有的分組-交換網(wǎng)絡(luò)都將出現(xiàn)一定程度的丟失分組。即使不多的丟失分組也會(huì)明顯地?fù)p壞視頻質(zhì)量。
丟失分組問題的現(xiàn)有解決方法包括使用多種錯(cuò)誤隱藏技術(shù)和圖片更新機(jī)制。雖然有所幫助,但這些技術(shù)往往存在不足。它們經(jīng)常被集成在特定的視頻編解碼器中,這就使得每當(dāng)編解碼器技術(shù)有所改進(jìn)時(shí)都需要對(duì)該技術(shù)再次進(jìn)行設(shè)計(jì)。
分組-交換網(wǎng)絡(luò)通常具有至少兩種基本類型的丟失分組方式。當(dāng)網(wǎng)絡(luò)的第1層和第2層丟失無(wú)法恢復(fù)的信息時(shí),將發(fā)生物理丟失。這種類型的丟失在有些情況下更加常見,例如,當(dāng)采用無(wú)線鏈接(例如,WiFi網(wǎng)絡(luò),如802.11a,802.11b,802.11g和802.11n)時(shí)。盡管如此,物理層丟失也能夠在有線和光纖鏈接中發(fā)生。第二種類型的分組丟失可以源于網(wǎng)絡(luò)擁塞。
為了克服第二種類型的丟失分組,一些視頻會(huì)議設(shè)備采用了多種避免擁塞的技術(shù)。一種這樣的技術(shù)在美國(guó)專利申請(qǐng)10/305485中被描述,其名稱為“systetmand method for dynamic bandwidth allocation for videoconferencing in lossypacket switched systems”,申請(qǐng)日為2002年11月26日,該申請(qǐng)整體被引入作本申請(qǐng)作為參考。這一技術(shù)可以被稱為“動(dòng)態(tài)帶寬分配”或“DBA”。每當(dāng)這些DBA類型的算法試圖增加帶寬時(shí),它們將固有地產(chǎn)生丟失分組的危險(xiǎn),這將導(dǎo)致媒體被損害的現(xiàn)象。其他類型的避免擁塞的技術(shù)包括VCON’s PacketAssist和其他與丟失分組恢復(fù)或擁塞控制相關(guān)的標(biāo)準(zhǔn)。例如,RFC2733提供了一種用于丟失分組恢復(fù)的方法,其采用了XOR(奇偶)分組。RFC3448提供了一種單播(unicast)擁塞控制的方法,與RFC4340一樣。
另外,數(shù)據(jù)丟失恢復(fù)技術(shù),例如前向擦除校正和前向錯(cuò)誤校正之類,可應(yīng)用于網(wǎng)絡(luò)的第1層1和第2層。這些技術(shù)還可以用于被存儲(chǔ)的媒體,例如RAID盤和CDROM/DVD。3GPP近期已經(jīng)將前向擦除校正標(biāo)準(zhǔn)化。前向錯(cuò)誤校正也可以通過H.320傳輸而提供給視頻流。
迄今為止,還未出現(xiàn)將丟失分組恢復(fù)(例如,使用前向擦除校正)與避免擁塞結(jié)合的實(shí)現(xiàn)方式。這里將要描述的就是包括上述結(jié)合的一種算法。
發(fā)明內(nèi)容
在一方面,本發(fā)明涉及一種方法,用于防止傳輸在可丟失網(wǎng)絡(luò)中的媒體流的中斷。這一方法包括將丟失分組恢復(fù)算法應(yīng)用至媒體流。該丟失分組恢復(fù)機(jī)制可以將冗余信息插入到包括媒體流的傳輸數(shù)據(jù)流中。該冗余信息可以使用前向擦除校正和/或里德-所羅門編碼來(lái)生成。該方法可以進(jìn)一步包括將擁塞避免算法應(yīng)用于傳輸?shù)臄?shù)據(jù)流中。該擁塞避免算法將包括暫時(shí)增加傳輸數(shù)據(jù)流的數(shù)據(jù)速率,以確定該網(wǎng)絡(luò)是否可以支持更高的數(shù)據(jù)速率。該數(shù)據(jù)速率可以通過增加插入到傳輸數(shù)據(jù)流的冗余信息量來(lái)暫時(shí)性地提高。
本發(fā)明還可以涉及從可丟失網(wǎng)絡(luò)接收到的媒體數(shù)據(jù)的恢復(fù)方法,其中該媒體流作為包括了媒體流和冗余信息的數(shù)據(jù)流的一部分而被進(jìn)行傳輸。該恢復(fù)方法包括接收多個(gè)包含媒體流和冗余信息的分組,并根據(jù)該接收到的分組重建該媒體流的丟失部分。
本發(fā)明還涉及用于進(jìn)行上述數(shù)據(jù)恢復(fù)和避免擁塞的視頻會(huì)議設(shè)備。
圖1描述了一種丟失分組恢復(fù)技術(shù),其可以用于避免分組的丟失。
圖2描述了一種丟失分組恢復(fù)技術(shù),其中某些分組被丟失并且數(shù)據(jù)被重建。
圖3描述了一種丟失分組恢復(fù)技術(shù),其中某些分組被丟失并且數(shù)據(jù)被重建。
圖4描述了一丟失分組恢復(fù)編碼器。
圖5-9描述了分組的首標(biāo),其可用于結(jié)合圖1-4所示的丟失分組恢復(fù)技術(shù)和編碼器。
圖10描述了丟失分組恢復(fù)解碼器。
圖11描述了用于擁塞避免算法的狀態(tài)機(jī),其可用于結(jié)合圖1-10所示的丟失分組恢復(fù)技術(shù)、編碼器和解碼器。
圖12描述了采用丟失分組恢復(fù)和擁塞避免的編碼器的數(shù)據(jù)速率,其采用如圖1-10所示的技術(shù)、編碼器、解碼器和算法。
具體實(shí)施例方式 這里所公開的是一種克服網(wǎng)絡(luò)傳輸中丟失分組的影響的技術(shù),其結(jié)合了前向擦除校正和擁塞避免。這些技術(shù)可被稱作為“丟失分組恢復(fù)”或“LPR”。
LPR是一種可伸縮的方法,其用于恢復(fù)丟失的RTP媒體分組。盡管這里所舉的示例中都針對(duì)視頻編解碼器,但其并不針對(duì)特定媒體。這里所描述的LPR技術(shù)還可以用于保護(hù)其他類型的RTP媒體流。LPR使用了里德-所羅門編碼來(lái)提供丟失媒體分組的前向擦除糾錯(cuò),這可以恢復(fù)丟失的媒體分組。
當(dāng)采用LPR時(shí),RTP的有效負(fù)載被再次分組以建立近似相等大小的數(shù)據(jù)分組。該再次分組后的流使用了特定的RTP動(dòng)態(tài)有效負(fù)載類型(其不同于指定的媒體有效負(fù)載數(shù)字),并且完全遵循RTP。一種特定于有效負(fù)載的首標(biāo)包括足夠的信息來(lái)重建原始的RTP分組。LPR假定SSRC和CSRC信息在恢復(fù)集合中沒有改變(如下所述)。時(shí)間戳、序列號(hào)、原始有效負(fù)載類型和標(biāo)記位都完全被恢復(fù),這保證了所恢復(fù)的RTP流可被解密。
然后,恢復(fù)分組被加入這一RTP流中。該恢復(fù)分組也遵循RTP。每一恢復(fù)分組還包括描述被保護(hù)的數(shù)據(jù)分組的有效負(fù)載首標(biāo)。每一分組的RTP有效負(fù)載包括該恢復(fù)信息。所加入的恢復(fù)分組的數(shù)量取決于根據(jù)RTCP接收器報(bào)告估計(jì)的信道損失率。雖然位率的最高值為大約50%,但信道損失率最高達(dá)到大約15%就可被接受。
需要注意到的是,LPR保護(hù)并不被認(rèn)為是全部媒體位率的一部分。僅僅是實(shí)際被壓縮的有效負(fù)載被算在其內(nèi)。盡管如此,總體的位率可被根據(jù)需要減少,以避免網(wǎng)絡(luò)擁塞??梢岳斫獾氖?,網(wǎng)絡(luò)擁塞將帶來(lái)除了分組丟失之外的的不期望的影響。例如,網(wǎng)絡(luò)擁塞將引起媒體延遲的增加和丟失的鏈接(包括信令連接)。因此,該LPR協(xié)議可具有內(nèi)置的信息來(lái)防止擁塞。盡管可以使用多個(gè)擁塞避免算法,但是一種適合的擁塞避免算法將更加詳細(xì)地描述如下。
將LPR應(yīng)用于媒體流的實(shí)例現(xiàn)將結(jié)合附圖1-3進(jìn)行描述。該實(shí)例的細(xì)節(jié),包括位率、分組丟失率、分組大小、數(shù)據(jù)分組與恢復(fù)分組的比率等,都僅僅是實(shí)例并且可根據(jù)實(shí)施細(xì)節(jié)、信道條件等進(jìn)行變化。
對(duì)于一個(gè)300kbps的視頻信道,其分組丟失率為2%。三個(gè)分組101、102和103將被傳輸。LPR的(6+2)模式將被應(yīng)用,這意味著兩個(gè)恢復(fù)分組104、105將被插入到六個(gè)數(shù)據(jù)分組106-111的每一組,每八個(gè)分組創(chuàng)建恢復(fù)集合。該恢復(fù)分組104、105和最大數(shù)據(jù)分組的大小基本相等,但包括一些額外的開銷?;謴?fù)分組允許六個(gè)數(shù)據(jù)分組106-111中任意兩個(gè)重新生成,其更加詳細(xì)地描述如下。
為了保持300kbps信道限制,媒體速率可被減少到大約220kbps,留下80kbps用于恢復(fù)分組。每個(gè)再分組后的數(shù)據(jù)分組的目標(biāo)大小為500字節(jié)。每一恢復(fù)集合因此攜帶了大約32000比特的信息,代表了信道率為300kbps下的107ms的時(shí)間周期。該107ms期間被稱為保護(hù)周期。
每一個(gè)分組(例如,再分組后的數(shù)據(jù)分組106-111和恢復(fù)數(shù)據(jù)分組104、105)包含正常的40字節(jié)的IP+UDP+RTP的首標(biāo)開銷。為了簡(jiǎn)化起見,這一開銷沒有顯示。但是,與LPR自身相關(guān)的開銷被顯示。例如,“3+420”是指在分組中具有三個(gè)開銷字節(jié)加上420字節(jié)的原始數(shù)據(jù)?;謴?fù)分組被100%地作為開銷(overhead)。下面將詳細(xì)介紹開銷的有關(guān)細(xì)節(jié)。
圖2描述了恢復(fù)過程。假定數(shù)據(jù)分組3和5(108,110)丟失。該LPR解碼器根據(jù)所接收到的六個(gè)分組,如,數(shù)據(jù)分組1、2、4和6和恢復(fù)分組1和2,創(chuàng)建再生成分組201和202。并且應(yīng)注意到,這些丟失分組的再生成直到第六個(gè)分組被接收才發(fā)生。再生成之后,原始的RTP分組203-205由數(shù)據(jù)分組而被恢復(fù)。下面將詳細(xì)描述丟失分組再生成的相關(guān)細(xì)節(jié)。
圖3描述了一個(gè)失敗的分組恢復(fù),其中有兩個(gè)以上的分組丟失。在這一實(shí)例中,恢復(fù)分組1和數(shù)據(jù)分組3和5一樣被丟失。由于這一組中僅僅收到5個(gè)分組,不可能進(jìn)行分組再生。LPR解碼器不會(huì)生成部分分組。如果原始分組不能被完全恢復(fù),那么部分分組信息將被丟棄。因此,數(shù)據(jù)分組1和2、301、302都顯示為丟失。
在如圖3所示的,所有原始數(shù)據(jù)分組不能恢復(fù)的情況下,往往將接收解碼器來(lái)請(qǐng)求整個(gè)圖像的快速更新??蛇x地,環(huán)繞(walk-around)更新,例如美國(guó)專利7020203中描述的那樣,其名稱為“Dynamic Intra-coded MacroblockRefresh Interval for Video Error Concealment”,公開于2006年3月28日,其作為參考將被全文引用。在任何情況下,用來(lái)修復(fù)圖像所需的時(shí)間并不是所丟失的分組的數(shù)量的函數(shù),而是在恢復(fù)集合中由于丟失大于預(yù)定數(shù)量的分組(2,在這一實(shí)例中)而引起的失敗間隔的平均時(shí)間。
對(duì)于300kbps和2%分組丟失率的信道的給定示例來(lái)說(shuō),通過覆蓋107ms信道數(shù)據(jù)的六個(gè)數(shù)據(jù)分組和兩個(gè)恢復(fù)數(shù)據(jù)分組所組成的每一保護(hù)集合,該失敗間隔的平均時(shí)間可被計(jì)算為大約258秒。假設(shè)一次快速更新需要大約兩秒,在由給出的LPR實(shí)例所保護(hù)的信道上傳輸?shù)囊曨l將在超過99%的該時(shí)間內(nèi)無(wú)差錯(cuò)。這一保護(hù)將帶來(lái)80kbps的額外開銷,其大約為信道速率的30%。
通過參考附圖4,對(duì)上述LPR實(shí)施例其他方面可以更好的理解,其描述了LPR編碼器的實(shí)現(xiàn)。這一實(shí)施的各種變化都是可能的。視頻編碼器401可以為以或多或少的傳統(tǒng)方式工作的任何一種視頻編碼器。例如,視頻編碼器可根據(jù)H.261,H.263,H.264,MPEG-2,或MPEG-4視頻壓縮標(biāo)準(zhǔn)來(lái)進(jìn)行操作??蛇x地,該視頻編碼器可以根據(jù)多種適合的視頻編碼技術(shù)中的任意一種來(lái)進(jìn)行操作。
視頻編碼器401的輸出可被提供給可選的加密模塊402,其可以是已知類型中的任意一種。該加密的視頻數(shù)據(jù)(或未加密的視頻數(shù)據(jù),若未使用加密)可被提供給RTP發(fā)送器403,其同樣也是常見的。由RTP發(fā)送器403生成的RTP分組接著可被LPR分組器406使用LPR算法進(jìn)行再分組,如在下述內(nèi)容中進(jìn)行詳細(xì)闡述的那樣。LPR恢復(fù)分組生成器407接著可基于從LPR分組器406和視頻編碼器401中接收到的信息來(lái)生成恢復(fù)分組,其將在下述內(nèi)容中進(jìn)行詳細(xì)闡述。而后,該LPR恢復(fù)分組生成器可將LPR數(shù)據(jù)分組和LPR恢復(fù)分組傳輸給接收器(未示出)。
RTCP模塊404可接收分組丟失和其它的信道統(tǒng)計(jì)數(shù)據(jù),并且將這些內(nèi)容提供給LPR模式判定模塊405,其控制了LPR分組器406。LPR模式判定模塊405可判定參與或者不參與LPR保護(hù),同時(shí)也確定所使用的LPR保護(hù)參數(shù)。如果未參與LPR保護(hù),LPR分組器406和LPR恢復(fù)分組生成器407不作改變的傳遞RTP發(fā)送器403生成的RTP分組。
LPR模式判定模塊405可操作如下。首先,該保護(hù)周期(如上所述)可被確定。更長(zhǎng)的保護(hù)周期將提供更加有效的分組再生(例如,更少的恢復(fù)kbps),但是帶來(lái)了更多的延遲。對(duì)于最典型的視頻會(huì)議位率,100ms可能為一個(gè)合適的保護(hù)周期。在位率低于128kbps時(shí),將需要更長(zhǎng)的保護(hù)周期。例如,150ms將適于64Kbps的速率。在位率在1Mbps以上時(shí),更短的保護(hù)周期將有利。例如,50ms將適于2Mbps或更大的速率。在確定保護(hù)周期時(shí),也可以考慮其他參數(shù)。
接下來(lái),可以確定每一保護(hù)周期所有分組的數(shù)量。通常,對(duì)于每一保護(hù)周期具有小數(shù)量的分組可能降低保護(hù)的效率。相反,每一保護(hù)周期具有大數(shù)量的分組可能增加編碼和解碼保護(hù)分組所需的計(jì)算量。因此,對(duì)于大多數(shù)信道而言,每一保護(hù)周期具備大約13或更多的分組被認(rèn)為是合適的。對(duì)于每一保護(hù)周期的分組的數(shù)量的判定還應(yīng)該考慮到用于根據(jù)所需數(shù)據(jù)速率所得到的分組的大小。輸出分組大小(包括IP開銷)應(yīng)該少于1260字節(jié)以通過IPSEC隧道而不出現(xiàn)碎片。
一旦每一保護(hù)周期的分組的數(shù)量被確定,則每一保護(hù)周期的恢復(fù)分組的數(shù)量可被選定?;謴?fù)分組的數(shù)量可被選擇(使用傳統(tǒng)的蓋然論分析技術(shù)),從而保護(hù)失敗的間隔平均時(shí)間等于或超過某一預(yù)定的特定值。另外,所有傳輸視頻信道(包括LPR保護(hù)分組以及RTP消息)的集合可以被選擇,以使其不超過特定的擁塞峰值。
以下表格給出了示例的保護(hù)模式,其用于各種丟失條件下的各種位率。表1給出了適于在分組丟失率為4%條件下所使用的LPR參數(shù),其與擁塞避免算法(如下述)結(jié)合使用,以使得當(dāng)分組丟失率超過3%時(shí)減少數(shù)據(jù)速率。表2給出了分組丟失率為2%條件下的LPR參數(shù),其可以用于擁塞避免算法未使用的情況中。
視頻速率每組的數(shù)數(shù)據(jù)分組有每組的恢復(fù)保護(hù)周期MTBF (k\bs) 據(jù)分組 效負(fù)載大小 分組(ms) (sec) (字節(jié)) 64 13 87 4 141334 12812 1334 100323 25612 2664 100323 38412 4004 100324 51212 5334 100324 76812 8004 100324 1024 16 8005 100757 2048 16 8005 50 379 3072 24 8006 50 338 4096 32 8007 50 378 5120 32 1000 7 50 378 6144 39 1000 8 51 567 表1.分組丟失率為4%時(shí)的固定保護(hù) 視頻速率每組的數(shù)數(shù)據(jù)分組有每組的恢復(fù)保護(hù)周期MTBF (k\bs) 據(jù)分組 效負(fù)載大小分組(ms) (sec) (字節(jié)) 64 13 873 141589 12812 133 3 100545 25612 266 3 100545 38412 400 3 100546 51212 533 3 100546 76812 800 3 100546 1024 16 800 4 1002591 2048 16 800 4 50 1296 3072 24 800 5 50 2444 4096 32 800 5 50 573 5120 32 1000 5 50 573 6144 39 1000 6 51 1704 表2.分組丟失率為2%時(shí)的固定保護(hù) LPR分組器406可操作如下。LPR分組器406將由RTP發(fā)送器403生成的初始媒體分組進(jìn)行細(xì)分,以提高分組再生編碼的效率。LPR數(shù)據(jù)分組包含的信息僅僅來(lái)自一個(gè)源分組。如果媒體信道被加密,可對(duì)已加密的流進(jìn)行LPR再分組裝。通常,LPR流自身是未再加密的,例如,加入到加密分組的LPR封裝字段(首標(biāo))和最新生成的LPR恢復(fù)分組可被毫無(wú)阻礙地發(fā)送。
如果初始源分組被細(xì)分(例如,圖1-3中的分組1101),用于這一源分組的第一個(gè)LPR數(shù)據(jù)分組被稱為初始數(shù)據(jù)分組(例如,圖1-3中的數(shù)據(jù)1106)。后繼數(shù)據(jù)分組(如果有的話)被稱為繼續(xù)數(shù)據(jù)分組(例如,圖1-3中的數(shù)據(jù)2107和數(shù)據(jù)3108)。繼續(xù)數(shù)據(jù)分組的數(shù)量將用信號(hào)通知給初始數(shù)據(jù)分組,因而一旦初始數(shù)據(jù)分組被發(fā)送該數(shù)量就不能改變。繼續(xù)數(shù)據(jù)分組和初始數(shù)據(jù)分組可以屬于不同的LPR保護(hù)組。
除序列號(hào)以外的初始RTP首標(biāo)的所有字段、有效負(fù)載類型和P字段可以無(wú)變化地被每一LPR數(shù)據(jù)分組攜帶。這包括時(shí)間戳、標(biāo)記位和SSRC/CSRC信息。有效負(fù)載的編號(hào)可以被協(xié)商后的LPR有效負(fù)載類型而替代。序列號(hào)將按照通常的方式連續(xù)地指定給LPR媒體流。LPR分組的P字段可被設(shè)至0。LPR分組器406可以將初始RTP序列號(hào)傳輸給LPR恢復(fù)分組生成器407。
如附圖5所示的實(shí)施例,每一初始數(shù)據(jù)分組可包括專用于LPR的7字節(jié)有效負(fù)載首標(biāo)。如附圖6所示的實(shí)例,每一繼續(xù)數(shù)據(jù)分組可包括3字節(jié)有效負(fù)載首標(biāo)。這些有效負(fù)載首標(biāo)可緊跟在RTP首標(biāo)之后,并在視頻(或其它媒體)有效負(fù)載之前。首標(biāo)的大小和每個(gè)字段的大小以及它們的排列僅僅是一種示范,應(yīng)當(dāng)理解也可以為其他排列方式。
恢復(fù)分組字段501,601可以用于指示在恢復(fù)集合中將被連續(xù)發(fā)送的恢復(fù)分組的數(shù)量。恢復(fù)集合中的所有數(shù)據(jù)分組應(yīng)該發(fā)出相同的恢復(fù)分組數(shù)量。所發(fā)出的恢復(fù)分組的數(shù)量可以被設(shè)為0,這意味著將沒有發(fā)送恢復(fù)分組。這一字段可以為6位字段,其允許最多為64個(gè)恢復(fù)分組。類型字段502、602可為2位字段,其可設(shè)置為00或01,以分別指示初始數(shù)據(jù)分組或繼續(xù)數(shù)據(jù)分組。這使得LPR的首標(biāo)類型可通過檢查第一有效負(fù)載字節(jié)來(lái)確定。
數(shù)據(jù)索引字段503、603可為8位字段?;謴?fù)集合中的第一數(shù)據(jù)分組可被分配數(shù)據(jù)索引1。對(duì)于這些集合中的后續(xù)的數(shù)據(jù)分組,該索引可以被遞增。繼續(xù)分組字段504可為8位字段,其用于表示與初始分組相關(guān)的繼續(xù)分組的數(shù)量。該數(shù)據(jù)分組字段604為8位字段,其用于表示包括在恢復(fù)集合中的數(shù)據(jù)分組的數(shù)量。所有的數(shù)據(jù)分組應(yīng)該都應(yīng)該表示相同數(shù)量的數(shù)據(jù)分組。
初始序列字段505是16位字段,其指示初始RTP分組的序列號(hào),該序列號(hào)可以用于重建初始RTP分組。初始p位字段506可為用于攜帶由初始RTP分組傳輸?shù)奶畛湮坏?位字段。初始有效負(fù)載類型字段507可以為7位字段,其用于像初始RTP分組一樣攜帶有效負(fù)載類型。
LPR恢復(fù)分組生成器407可操作如下。LPR恢復(fù)分組生成器407可用LPR數(shù)據(jù)分組中的最終LPR序列號(hào)來(lái)替代初始媒體中的RTP序列號(hào)。LPR恢復(fù)分組生成器407還可以將LPR恢復(fù)分組插至每一恢復(fù)集合的最后。
每一恢復(fù)分組還包括如附圖7所示的9字節(jié)首標(biāo)?;謴?fù)分組的首標(biāo)可緊隨RTP首標(biāo)之后,并且可在視頻(或其他媒體)有效負(fù)載之前。根據(jù)上述的首標(biāo),字段類型和大小為示例性的,也可以采用其他排列方式。
恢復(fù)索引字段701可以為6位字段,其用于指示恢復(fù)集合中的恢復(fù)分組序列。第一恢復(fù)分組可被指定為恢復(fù)索引1,對(duì)于恢復(fù)集合中的后續(xù)恢復(fù)分組,該字段將進(jìn)行增加。類型字段702為設(shè)置為10的2位字段,其表示該分組為恢復(fù)分組。恢復(fù)分組字段可為8位字段,其包括恢復(fù)集合中數(shù)據(jù)分組的數(shù)量。所有的恢復(fù)分組應(yīng)當(dāng)是表示由相應(yīng)數(shù)據(jù)分組發(fā)出的恢復(fù)分組的同樣數(shù)量。數(shù)據(jù)分組字段704為8位字段,其表示恢復(fù)集合中所發(fā)送的數(shù)據(jù)分組的數(shù)量?;謴?fù)分組將指示在相應(yīng)數(shù)據(jù)分組中指示的數(shù)據(jù)分組的同樣數(shù)量。
保護(hù)時(shí)間戳字段705為32位字段,其具有恢復(fù)集合中每一數(shù)據(jù)分組的里德-所羅門編碼RTP時(shí)間戳。這可以結(jié)合使用與恢復(fù)有效負(fù)載自身所使用里德-所羅門編碼一樣的里德-所羅門編碼。這一字段可以再生丟失數(shù)據(jù)分組的RTP時(shí)間戳。該4字節(jié)遵守網(wǎng)絡(luò)秩序(order)。
保護(hù)標(biāo)記、標(biāo)識(shí)和大小字段706(在附圖8中進(jìn)一步描述)可以具有里德-所羅門編碼的RTP標(biāo)記位802、標(biāo)識(shí)值801和數(shù)據(jù)分組大小803。當(dāng)該LPR數(shù)據(jù)分組為初始分組時(shí),標(biāo)識(shí)值為1,當(dāng)LPR數(shù)據(jù)分組為繼續(xù)分組時(shí),標(biāo)識(shí)值設(shè)置為0。該大小包括IP、UDP和RTP首標(biāo)以及LPR首標(biāo)。數(shù)據(jù)分組大小可以遵守網(wǎng)絡(luò)秩序。
保護(hù)字段可以結(jié)合使用與恢復(fù)有效負(fù)載自身所使用里德-所羅門編碼一樣的里德-所羅門編碼。該字段將為那些可恢復(fù)的任意丟失數(shù)據(jù)分組再生LPR首標(biāo)類型、標(biāo)記和數(shù)據(jù)分組大小。
恢復(fù)分組的有效負(fù)載可使用里德-所羅門256(RS256)對(duì)其進(jìn)行編碼。初始數(shù)據(jù)分組中的初始序列505、初始P位506、初始有效負(fù)載類型507和繼續(xù)分組504字段可被作為有效負(fù)載字節(jié)來(lái)進(jìn)行保護(hù)。這使得當(dāng)初始數(shù)據(jù)分組丟失時(shí),這一信息能夠被恢復(fù)。另外,恢復(fù)分組有效負(fù)載首標(biāo)可包括三個(gè)影象數(shù)據(jù)(Phantom Data)字段的編碼,這三個(gè)字段為數(shù)據(jù)分組自身長(zhǎng)度、標(biāo)記位和時(shí)間戳。此外,如果所有用于細(xì)分的RTP分組的數(shù)據(jù)分組丟失,這將允許這一信息得到恢復(fù)。
根據(jù)用于RS256的生成函數(shù),每一數(shù)據(jù)分組中的每一有效負(fù)載字節(jié)可有助于每一恢復(fù)分組中的相關(guān)字節(jié),該生成函數(shù)為 其中Di為第i個(gè)數(shù)據(jù)分組(1≤i≤d);Rj為第j個(gè)恢復(fù)分組(1≤j≤r);Bi為第i個(gè)基系數(shù)(1≤i≤d),其具有如表3中所示的值;并且
∑通過采用如下描述的Galois Field(28)算術(shù)運(yùn)算進(jìn)行計(jì)算。值得注意的是,盡管可以選擇其他數(shù)量的數(shù)據(jù)分組,并且可相應(yīng)地計(jì)算出適合的表格,所給出的基系數(shù)表將恢復(fù)集合中的數(shù)據(jù)分組的最大數(shù)量限定為128。
/* ** RS256_BaseTable{i}用于數(shù)據(jù)分組i-1的基本系數(shù) ** ** 這些項(xiàng)目是為了保證疏散矩陣是可逆的。
** 選擇了每一個(gè)項(xiàng)目b,所以除非x為0或者255,b**x不為1。
*/ #define RS256_BASETABLE_LEN 128 STATIC CONST UINT8 RS256_BaseTable[RS256_BASETABLE_LEN]={ 0x02,0x04,0x06,0x09,0x0D,0x0E,0x10,0x12, 0x13,0x14,0x16,0x18,0x19,0x1B,0x1D,0x1E, 0x1F,0x22,0x23,0x28,0x2A,0x2B,0x30,0x31, 0x32,0x34,0x39,0x3C,0x3F,0x41,0x42,0x43, 0x47,0x48,0x49,0x4A,0x4B,0x4C,0x51,0x52, 0x53,0x54,0x58,0x5A,0x5B,0x5C,0x5D,0x5F, 0x62,0x63,0x68,0x69,0x6D,0x6F,0x70,0x71, 0x76,0x77,0x79,0x7A,0x7B,0x7E,0x80,0x81, 0x83,0x85,0x87,0x88,0x89,0x8C,0x8D,0x8E, 0x90,0x94,0x95,0x97,0x9A,0x9B,0x9D,0x9E, 0x9F,0xA2,0xA3,0xA4,0xA5,0xAA,0xAB,0xAF, 0xB0,0xB1,0xB2,0xB7,0xBB,0xBC,0xBD,0xC0, 0xC2,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC, 0xD1,0xD2,0xD3,0xD4,0xD5,0xD8,0xDA,0xDE, 0xE0,0xE1,0xE3,0xE5,0xE8,0xEA,0xEC,0xEE, 0xF0,0xF3,0xF6,0xF7,0xF8,0xF9,0xFA,0xFE }; 表3.RS256基本系數(shù) Galois Field(28)算術(shù)運(yùn)算可被設(shè)置為使用兩個(gè)幫助表格一個(gè)Galois對(duì)數(shù)函數(shù)(glog)表格,和一個(gè)Galois求冪函數(shù)(gexp)表格。這些表格是 unsigned short glog[256]={ 0x200,0x00,0x01,0x19,0x02,0x32,0x1A,0xC6, /* 0 to 7 */ 0x03,0xDF,0x33,0xEE,0x1B,0x68,0xC7,0x4B, /* 8 to 15 */ 0x04,0x64,0xE0,0x0E,0x34,0x8D,0xEF,0x81, /* 16 to 23 */ 0x1C,0xC1,0x69,0xF8,0xC8,0x08,0x4C,0x71, /* 24 to 31 */ 0x05,0x8A,0x65,0x2F,0xE1,0x24,0x0F,0x21, /* 32 to 39 */ 0x35,0x93,0x8E,0xDA,0xF0,0x12,0x82,0x45, /* 40 to 47 */ 0x1D,0xB5,0xC2,0x7D,0x6A,0x27,0xF9,0xB9, /* 48 to 55 */ 0xC9,0x9A,0x09,0x78,0x4D,0xE4,0x72,0xA6, /* 56 to 63 */ 0x06,0xBF,0x8B,0x62,0x66,0xDD,0x30,0xFD, /* 64 to 71 */ 0xE2,0x98,0x25,0xB3,0x10,0x91,0x22,0x88, /* 72 to 79 */ 0x36,0xD0,0x94,0xCE,0x8F,0x96,0xDB,0xBD, /* 80 to 87 */ 0xF1,0xD2,0x13,0x5C,0x83,0x38,0x46,0x40, /* 88 to 95 */ 0x1E,0x42,0xB6,0xA3,0xC3,0x48,0x7E,0x6E, /* 96 to 103 */ 0x6B,0x3A,0x28,0x54,0xFA,0x85,0xBA,0x3D, /* 104 to 111 */ 0xCA,0x5E,0x9B,0x9F,0x0A,0x15,0x79,0x2B, /* 112 to 119 */ 0x4E,0xD4,0xE5,0xAC,0x73,0xF3,0xA7,0x57, /* 120 to 127 */ 0x07,0x70,0xC0,0xF7,0x8C,0x80,0x63,0x0D, /* 128 to 135 */ 0x67,0x4A,0xDE,0xED,0x31,0xC5,0xFE,0x18, /* 136 to 143 */ 0xE3,0xA5,0x99,0x77,0x26,0xB8,0xB4,0x7C, /* 144 to 151 */ 0x11,0x44,0x92,0xD9,0x23,0x20,0x89,0x2E, /* 152 to 159 */ 0x37,0x3F,0xD1,0x5B,0x95,0xBC,0xCF,0xCD, /* 160 to 167 */ 0x90,0x87,0x97,0xB2,0xDC,0xFC,0xBE,0x61, /* 168 to 175 */ 0xF2,0x56,0xD3,0xAB,0x14,0x2A,0x5D,0x9E, /* 176 to 183 */ 0x84,0x3C,0x39,0x53,0x47,0x6D,0x41,0xA2, /* 184 to 191 */ 0x1F,0x2D,0x43,0xD8,0xB7,0x7B,0xA4,0x76, /* 192 to 199 */ 0xC4,0x17,0x49,0xEC,0x7F,0x0C,0x6F,0xF6, /* 200 to 207 */ 0x6C,0xA1,0x3B,0x52,0x29,0x9D,0x55,0xAA, /* 208 to 215 */ 0xFB,0x60,0x86,0xB1,0xBB,0xCC,0x3E,0x5A, /* 216 to 223 */ 0xCB,0x59,0x5F,0xB0,0x9C,0xA9,0xA0,0x51, /* 224 to 231 */ 0x0B,0xF5,0x16,0xEB,0x7A,0x75,0x2C,0xD7, /* 232 to 239 */ 0x4F,0xAE,0xD5,0xE9,0xE6,0xE7,0xAD,0xE8, /* 240 to 247 */ 0x74,0xD6,0xF4,0xEA,0xA8,0x50,0x58,0xAF /* 248 to 255 */ }; 表4.Galois Log幫助函數(shù) unsigned char gexp[1065]={ 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80, /* 0 to 7 */ 0x1D,0x3A,0x74,0xE8,0xCD,0x87,0x13,0x26, /* 8 to 15 */ 0x4C,0x98,0x2D,0x5A,0xB4,0x75,0xEA,0xC9, /* 16 to 23 */ 0x8F,0x03,0x06,0x0C,0x18,0x30,0x60,0xC0, /* 24 to 31 */ 0x9D,0x27,0x4E,0x9C,0x25,0x4A,0x94,0x35, /* 32 to 39 */ 0x6A,0xD4,0xB5,0x77,0xEE,0xC1,0x9F,0x23, /* 40 to 47 */ 0x46,0x8C,0x05,0x0A,0x14,0x28,0x50,0xA0, /* 48 to 55 */ 0x5D,0xBA,0x69,0xD2,0xB9,0x6F,0xDE,0xA1, /* 56 to 63 */ 0x5F,0xBE,0x61,0xC2,0x99,0x2F,0x5E,0xBC, /* 64 to 71 */ 0x65,0xCA,0x89,0x0F,0x1E,0x3C,0x78,0xF0, /* 72 to 79 */ 0xFD,0xE7,0xD3,0xBB,0x6B,0xD6,0xB1,0x7F, /* 80 to 87 */ 0xFE,0xE1,0xDF,0xA3,0x5B,0xB6,0x71,0xE2, /* 88 to 95 */ 0xD9,0xAF,0x43,0x86,0x11,0x22,0x44,0x88, /* 96 to 103 */ 0x0D,0x1A,0x34,0x68,0xD0,0xBD,0x67,0xCE, /* 104 to 111 */ 0x81,0x1F,0x3E,0x7C,0xF8,0xED,0xC7,0x93, /* 112 to 119 */ 0x3B,0x76,0xEC,0xC5,0x97,0x33,0x66,0xCC, /* 120 to 127 */ 0x85,0x17,0x2E,0x5C,0xB8,0x6D,0xDA,0xA9, /* 128 to 135 */ 0x4F,0x9E,0x21,0x42,0x84,0x15,0x2A,0x54, /* 136 to 143 */ 0xA8,0x4D,0x9A,0x29,0x52,0xA4,0x55,0xAA, /* 144 to 151 */ 0x49,0x92,0x39,0x72,0xE4,0xD5,0xB7,0x73, /* 152 to 159 */ 0xE6,0xD1,0xBF,0x63,0xC6,0x91,0x3F,0x7E, /* 160 to 167 */ 0xFC,0xE5,0xD7,0xB3,0x7B,0xF6,0xF1,0xFF, /* 168 to 175 */ 0xE3,0xDB,0xAB,0x4B,0x96,0x31,0x62,0xC4, /* 176 to 183 */ 0x95,0x37,0x6E,0xDC,0xA5,0x57,0xAE,0x41, /* 184 to 191 */ 0x82,0x19,0x32,0x64,0xC8,0x8D,0x07,0x0E, /* 192 to 199 */ 0x1C,0x38,0x70,0xE0,0xDD,0xA7,0x53,0xA6, /* 200 to 207 */ 0x51,0xA2,0x59,0xB2,0x79,0xF2,0xF9,0xEF, /* 208 to 215 */ 0xC3,0x9B,0x2B,0x56,0xAC,0x45,0x8A,0x09, /* 216 to 223?。? 0x12,0x24,0x48,0x90,0x3D,0x7A,0xF4,0xF5, /* 224 to 231 */ 0xF7,0xF3,0xFB,0xEB,0xCB,0x8B,0x0B,0x16, /* 232 to 239 */ 0x2C,0x58,0xB0,0x7D,0xFA,0xE9,0xCF,0x83, /* 240 to 247?。? 0x1B,0x36,0x6C,0xD8,0xAD,0x47,0x8E,0x01, /* 248 to 255?。? 0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x1D, /* 256 to 263?。? 0x3A,0x74,0xE8,0xCD,0x87,0x13,0x26,0x4C, /* 264 to 271?。? 0x98,0x2D,0x5A,0xB4,0x75,0xEA,0xC9,0x8F, /* 272 to 279?。? 0x03,0x06,0x0C,0x18,0x30,0x60,0xC0,0x9D, /* 280 to 287?。? 0x27,0x4E,0x9C,0x25,0x4A,0x94,0x35,0x6A, /* 288 to 295?。? 0xD4,0xB5,0x77,0xEE,0xC1,0x9F,0x23,0x46, /* 296 to 303?。? 0x8C,0x05,0x0A,0x14,0x28,0x50,0xA0,0x5D, /* 304 to 311?。? 0xBA,0x69,0xD2,0xB9,0x6F,0xDE,0xA1,0x5F, /* 312 to 319?。? 0xBE,0x61,0xC2,0x99,0x2F,0x5E,0xBC,0x65, /* 320 to 327?。? 0xCA,0x89,0x0F,0x1E,0x3C,0x78,0xF0,0xFD, /* 328 to 335 */ 0xE7,0xD3,0xBB,0x6B,0xD6,0xB1,0x7F,0xFE, /* 336 to 343?。? 0xE1,0xDF,0xA3,0x5B,0xB6,0x71,0xE2,0xD9, /* 344 to 351?。? 0xAF,0x43,0x86,0x11,0x22,0x44,0x88,0x0D, /* 352 to 359?。? 0x1A,0x34,0x68,0xD0,0xBD,0x67,0xCE,0x81, /* 360 to 367 */ 0x1F,0x3E,0x7C,0xF8,0xED,0xC7,0x93,0x3B, /* 368 to 375?。? 0x76,0xEC,0xC5,0x97,0x33,0x66,0xCC,0x85, /* 376 to 383?。? 0x17,0x2E,0x5C,0xB8,0x6D,0xDA,0xA9,0x4F, /* 384 to 391?。? 0x9E,0x21,0x42,0x84,0x15,0x2A,0x54,0xA8, /* 392 to 399?。? 0x4D,0x9A,0x29,0x52,0xA4,0x55,0xAA,0x49, /* 400 to 407 */ 0x92,0x39,0x72,0xE4,0xD5,0xB7,0x73,0xE6, /* 408 to 415?。? 0xD1,0xBF,0x63,0xC6,0x91,0x3F,0x7E,0xFC, /* 416 to 423?。? 0xE5,0xD7,0xB3,0x7B,0xF6,0xF1,0xFF,0xE3, /* 424 to 431 */ 0xDB,0xAB,0x4B,0x96,0x31,0x62,0xC4,0x95, /* 432 to 439?。? 0x37,0x6E,0xDC,0xA5,0x57,0xAE,0x41,0x82, /* 440 to 447?。? 0x19,0x32,0x64,0xC8,0x8D,0x07,0x0E,0x1C, /* 448 to 455 */ 0x38,0x70,0xE0,0xDD,0xA7,0x53,0xA6,0x51, /* 456 to 63 */ 0xA2,0x59,0xB2,0x79,0xF2,0xF9,0xEF,0xC3, /* 464 to 471 */ 0x9B,0x2B,0x56,0xAC,0x45,0x8A,0x09,0x12, /* 472 to 479 */ 0x24,0x48,0x90,0x3D,0x7A,0xF4,0xF5,0xF7, /* 480 to 487 */ 0xF3,0xFB,0xEB,0xCB,0x8B,0x0B,0x16,0x2C, /* 488 to 495 */ 0x58,0xB0,0x7D,0xFA,0xE9,0xCF,0x83,0x1B, /* 496 to 503 */ 0x36,0x6C,0xD8,0xAD,0x47,0x8E,0x00,0x00, /* 504 to 511 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros fof fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* zeros for fast multlply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* zeros for fast multiply */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00/* zeros for fast multiply*/ }; 表5.Galois取冪幫助函數(shù) 這些表格可以如上述的那樣用于計(jì)算各種算術(shù)運(yùn)算。
Galois Field(28)中的加法和減法是同樣的運(yùn)算,其操作如下 a-b=a∧b 其中的∧為邏輯異或(exclusive)或(XOR)操作符。像普通的算術(shù)中一樣, Galois Field(28)中的乘法
操作如下 其中+為一普通的加法運(yùn)算符。像普通的運(yùn)算一樣,并且, Galois Field(28)中的除法(a÷b)操作如下 a÷b=gexp[glog[a]-glog[b]+255] 其中+是普通的加法運(yùn)算符,并且-是普通的減法運(yùn)算符。像普通運(yùn)算一樣,a÷1=a。同樣地,b必須不為零。
冪函數(shù)(ab)在Galois Field(28)中的操作如下 ab=gexp[(glog[a]*b)%0xFF] 其中+為普通的加法符號(hào),-為普通的減法符號(hào),*為普通的乘法符號(hào),和%為普通的取模函數(shù)。如在普通的算術(shù)中,對(duì)于非零a,a0=1。在RS256的參考代碼,0從未升級(jí)到冪。
如上所述,LPR組大小(在分組中)可被設(shè)置以達(dá)到以所需的保護(hù)周期(毫秒)。若視頻多媒體編解碼器未使用整個(gè)信道的位率,那么該LPR組將導(dǎo)致更長(zhǎng)的延遲時(shí)間。例如,在光運(yùn)動(dòng)的期間,通常運(yùn)行在1.5Mbps的視頻信道將降低到750Kbps。這將導(dǎo)致保護(hù)周期是期望的兩倍長(zhǎng)。這樣的情況可以導(dǎo)致所選擇的LPR模式繼續(xù)滿足預(yù)定的MTBF,其中在該實(shí)施例中被因子2所超過。
在一些實(shí)例中,可以允許這種延長(zhǎng)的保護(hù)周期。然而,這將導(dǎo)致分組丟失時(shí)產(chǎn)生更長(zhǎng)的時(shí)間延遲。因而,在一些實(shí)例中,需要讓發(fā)送器根據(jù)實(shí)際的視頻率的變化來(lái)調(diào)整其LPR模式。下面將描述三種這樣的調(diào)整,當(dāng)然其它調(diào)整也是可能的。
一種可以做出的調(diào)整是保護(hù)組的大小。在一些實(shí)施例中,這一設(shè)置可以在每個(gè)保護(hù)組的邊界改變。因此,發(fā)送器可以監(jiān)控LPR輸出分組率和動(dòng)態(tài)的適應(yīng)每一組的分組的數(shù)量。當(dāng)采用了這種調(diào)整,LPR保護(hù)開銷將隨著數(shù)據(jù)速率的下降而增加。然而,因?yàn)檫@一實(shí)例中的數(shù)據(jù)速率通常將低于正常極限值,變化后的LPR模式通常將仍然保持在預(yù)定的擁塞最大值之下。
另一種可做出的調(diào)整是發(fā)送器根據(jù)初始數(shù)據(jù)分組的傳輸來(lái)改變其輸出分組的大小。通常地,由于繼續(xù)分組的數(shù)量通常將在初始數(shù)據(jù)分組中被發(fā)出,在發(fā)送繼續(xù)分組時(shí)發(fā)送器不應(yīng)該再改變輸出分組的大小。因此,發(fā)送器可以監(jiān)控LPR輸出分組率和輸出數(shù)據(jù)速率,并且為維持每一保護(hù)周期的分組的數(shù)量而動(dòng)態(tài)地調(diào)整分組的大小。
另一種可做出的調(diào)整是發(fā)送器為了完成部分恢復(fù)集合而發(fā)送空數(shù)據(jù)分組。一個(gè)空數(shù)據(jù)分組可包括上述的初始數(shù)據(jù)分組首標(biāo)。其他通常位于分組中的其他信息,例如序列號(hào)負(fù)載類型,繼續(xù)分組的數(shù)量等,都被設(shè)置為零。由于空數(shù)據(jù)分組是保護(hù)組的一部分,上述的恢復(fù)分組編碼可包括這些分組,并且它們也可以通過解碼過程來(lái)恢復(fù)。此外,為了防止空數(shù)據(jù)分組出現(xiàn)在輸出媒體分組流中,空數(shù)據(jù)分組可被LPR解碼器丟棄(參照下述內(nèi)容)。
填充分組也可被用于維持預(yù)定數(shù)據(jù)速率。這些填充分組可被接收器丟棄。附圖9中描述了填充分組的一個(gè)示例。該填充分組包括了6位的擴(kuò)展類型字段901,其值為1,并且2位的類型字段902的值為11。該填充分組可作為RTP分組,其使用用于媒體流的LPR有效負(fù)載類型。時(shí)間戳的值可與之前發(fā)送RTP分組中的值一樣。序列號(hào)可在之前發(fā)送的分組中的序列號(hào)值的基礎(chǔ)上進(jìn)行遞增。該有效負(fù)載可以上面示出的填充首標(biāo)作為結(jié)束。該字段的有效負(fù)載長(zhǎng)度可為最大指定的分組大小之內(nèi)的任何長(zhǎng)度。
附圖10中描述了LPR解碼器的示例。根據(jù)上述的LPR編碼器,這一實(shí)施例中做了一些可能的變化。LPR解碼器的操作基本上與上述的LPR編碼器的操作相反。具體來(lái)說(shuō),LPR分組可由LPR恢復(fù)模塊1001進(jìn)行恢復(fù)。這些恢復(fù)后的LPR分組可被傳送到RTP重排序緩沖器1002中,像傳統(tǒng)系統(tǒng)中一樣,其可以將分組重新排列為它們被接收到的順序。之后,LPR再生器1003可以根據(jù)從恢復(fù)的LPR分組(來(lái)自LPR恢復(fù)模塊1001)接收到的信息和從RTCP模塊1006接收到的RTCP信息,重建任何丟失的分組。這些再生模塊可由解密模塊1004(如果對(duì)源端進(jìn)行了加密)進(jìn)行解密,并且最終該解密模塊可由視頻解碼器1005(或其他類型的合適的媒體解碼器,)進(jìn)行處理。
與傳統(tǒng)系統(tǒng)相比,LPR恢復(fù)模塊1001和LPR再生器1003可以是唯一的非標(biāo)準(zhǔn)化組件,并且當(dāng)LPR未被使用時(shí),這兩個(gè)模塊作為不加任何處理的通路而已。
LPR恢復(fù)模塊1001可以處理所有的LPR RTP分組。在給出的示例中,所有接收到的和再生的分組(數(shù)據(jù)和恢復(fù))可以被直接傳送到RTP重排序緩沖器。每一數(shù)據(jù)分組中的開銷(overhead)數(shù)據(jù)可使得在任何順序下由LPR恢復(fù)模塊1001處理這些分組。LPR恢復(fù)模塊1001還可以向RTCP模塊1006提供LPRRTP接收器報(bào)告信息。這一信息可以是基于所收到的內(nèi)容(例如,在該接收器報(bào)告中,任何未恢復(fù)的分組將被標(biāo)識(shí)為丟失)。
如果恢復(fù)集合中存在可被恢復(fù)的丟失的數(shù)據(jù)分組,LPR恢復(fù)模塊將在收到充足的恢復(fù)分組的情況下立刻恢復(fù)這些分組。如上所述,如果k個(gè)數(shù)據(jù)分組丟失,必須要接收到k個(gè)恢復(fù)分組才能恢復(fù)該數(shù)據(jù)。這一恢復(fù)過程可能包括首先恢復(fù)標(biāo)記位、數(shù)據(jù)分組長(zhǎng)度、初始分組標(biāo)識(shí)和初始的時(shí)間戳。該數(shù)據(jù)分組長(zhǎng)度可用于恢復(fù)初始數(shù)據(jù)分組的有效負(fù)載。LPR RTP首標(biāo)的“Fixed”組件(例如,SSRC、CSRC、LPR有效負(fù)載類型,等)可以從這些恢復(fù)分組中的一個(gè)中獲得。LPR RTP首標(biāo)的可變部分(例如,標(biāo)記位,時(shí)間戳,以及序列號(hào))將被設(shè)置為從恢復(fù)首標(biāo)中恢復(fù)出的值。
LPR數(shù)據(jù)分組i的序列號(hào)可根據(jù)下述方程式進(jìn)行計(jì)算 Si=Sr-(d+r-i) 其中i為恢復(fù)的數(shù)據(jù)分組的索引,d為恢復(fù)集合中數(shù)據(jù)分組的編號(hào),r為己接收到恢復(fù)分組索引,Si為分組i的序列號(hào)。
當(dāng)接收到數(shù)據(jù)分組時(shí),由恢復(fù)模塊1001使用上述的RS256生成函數(shù)來(lái)創(chuàng)建部分恢復(fù)分組。像所接收到的集合的相關(guān)恢復(fù)分組一樣,這些分組可以與部分恢復(fù)分組進(jìn)行導(dǎo)或(即,XOR)運(yùn)算。所產(chǎn)生的剩余分組將保持任何丟失數(shù)據(jù)分組對(duì)每一恢復(fù)分組的作用。在示例的系統(tǒng)中,每一剩余分組將為每一丟失數(shù)據(jù)分組的線性組合。因此,這將出現(xiàn)k個(gè)聯(lián)立方程(每一個(gè)對(duì)應(yīng)k個(gè)剩余分組中的一個(gè)),每個(gè)具有k個(gè)未知數(shù)(每一個(gè)對(duì)應(yīng)丟失的k個(gè)數(shù)據(jù)分組中的一個(gè))。
對(duì)于本領(lǐng)域技術(shù)人員而言,這些方程可以用一個(gè)kxk的矩陣來(lái)表示,其可以用數(shù)字化的方式進(jìn)行解決,例如通過高斯排除。由于這種運(yùn)算是已知的,這里就不再重復(fù)其細(xì)節(jié)。對(duì)根據(jù)剩余數(shù)據(jù)所得出的轉(zhuǎn)換矩陣進(jìn)行相乘運(yùn)算,可恢復(fù)丟失的數(shù)據(jù)分組。
為了說(shuō)明上述恢復(fù)過程,可以按照附圖2所示的恢復(fù)方案進(jìn)行操作。為了簡(jiǎn)明起見,使用了普通的算術(shù)運(yùn)算而不是實(shí)際的Galois Field(28)運(yùn)算。為生成恢復(fù)分組中的數(shù)據(jù),可以使用如下公式(從如上所述的RS256生成函數(shù)和表格中推導(dǎo)得出) R1=D1+D2+D3+D4+D5+D6 R2=2D1+4D2+6D3+9D4+13D5+14D6 部分恢復(fù)分組可以由解碼器根據(jù)所接收到的分組來(lái)計(jì)算。根據(jù)上面示例提到,分組3和4(108,110,附圖3)未被接收。這將導(dǎo)致 P1=D1+D2+D5+D6 P2=2D1+4D2+13D5+14D6 剩余部分可以通過從接收到的恢復(fù)分組中減去部分恢復(fù)分組而計(jì)算得到 r1=R1-P1=D3+D4 r2=R2-P2=6D3+9D4 剩余部分的生成矩陣為 1 1 6 9 通過高斯排除對(duì)該矩陣進(jìn)行轉(zhuǎn)換,結(jié)果如下 3 -1/3 -2 1/3 因此,丟失數(shù)據(jù)分組(例如,數(shù)據(jù)分組3和4)中的信息可使用如下公式被恢復(fù) D3=3r1-r2/3 D4=2r1+r2/3 在使用LPR時(shí),RTP重排序緩沖器1002可與LPR解碼器集成在一起。這允許了最小延時(shí)的實(shí)現(xiàn),因?yàn)樵谝恍┣闆r下,在次序顛倒的分組實(shí)際到達(dá)之前,其可以由LPR再生。此外,在一些實(shí)施例中,可能需要獲得恢復(fù)集合的第一d分組,并且只有當(dāng)一些數(shù)據(jù)分組丟失時(shí)才啟用里德-所羅門解碼器。這種設(shè)計(jì)可能不會(huì)帶來(lái)最小化的延遲,但可以具有更好的計(jì)算效率。
LPR再生器模塊1003可以如上所述的那樣,從數(shù)據(jù)分組中再次創(chuàng)建初始RTP流。若一些用于RTP分組的數(shù)據(jù)分組丟失,那么就在輸出流中省略那一個(gè)RTP分組。因?yàn)樵揕PR流已被再次排序,每一分組集合的初始分組應(yīng)該被首先接收到。若首先收到的是繼續(xù)分組,那么初始分組已經(jīng)丟失,并且該繼續(xù)分組也可被丟棄。
輸出RTP分組使用初始數(shù)據(jù)分組中的RTP首標(biāo)信息。有效負(fù)載類型、序列號(hào)和時(shí)間戳被初始數(shù)據(jù)首標(biāo)中的值所替代。有效負(fù)載是從該初始分組和任何具有去掉LPR首標(biāo)的繼續(xù)數(shù)據(jù)分組聚合得到的。若任何繼續(xù)分組丟失,該輸出RTP分組可抑制。應(yīng)該注意到的是,繼續(xù)分組的數(shù)量是已知的,這是因?yàn)槠湟驯辉诔跏紨?shù)據(jù)分組的首標(biāo)中發(fā)出。
如上所述的丟失分組恢復(fù)技術(shù)可與擁塞避免算法相結(jié)合來(lái)進(jìn)一步改進(jìn)操作。之前所引用的一種擁塞避免算法的示例為動(dòng)態(tài)帶寬分配(“DBA”)。DBA基于接收器的RTP堆棧(1006,附圖10)中所報(bào)告的丟失分組百分比來(lái)對(duì)位率進(jìn)行減速,以試圖避免擁塞。該接收器RTP堆棧在正常的時(shí)間周期(例如,每200ms)為接收器信道生成分組丟失統(tǒng)計(jì)數(shù)據(jù)。這就在允許低MTBF需求的少數(shù)LPR配置(其接下來(lái)可允許為更低的開銷)的同時(shí),允許了對(duì)動(dòng)態(tài)改變通道的快速適應(yīng)。
如圖12所示,DBA的控制環(huán)路可以作為具有以下狀態(tài)的狀態(tài)機(jī)來(lái)實(shí)現(xiàn)最大比率狀態(tài)1101、減速狀態(tài)1102、加速等待狀態(tài)1103、加速狀態(tài)1104和固定損失狀態(tài)1105。各種狀態(tài)之間的轉(zhuǎn)換如下。假定系統(tǒng)處于最大比率狀態(tài)1101,這表示正在使用最大數(shù)據(jù)速率。當(dāng)分組丟失大于某一預(yù)定閾值時(shí),將引起狀態(tài)轉(zhuǎn)換1106而轉(zhuǎn)換至減速狀態(tài)1102。
當(dāng)處于減速狀態(tài),系統(tǒng)可減小速度,并且等候以觀察分組丟失是否還是繼續(xù)大于該預(yù)定閾值。若分組丟失不再高于該閾值,則系統(tǒng)可以按照轉(zhuǎn)換1108轉(zhuǎn)換至加速等待狀態(tài)。若分組丟失繼續(xù)高于該閾值,并且減速嘗試還未達(dá)到最大次數(shù)(1107模塊),則該系統(tǒng)可以繼續(xù)處于減速狀態(tài)1102并且可以由此繼續(xù)降低位率。若減速嘗試已經(jīng)達(dá)到最大次數(shù),系統(tǒng)將轉(zhuǎn)換至固定丟失狀態(tài)1105。
當(dāng)處于加速等待狀態(tài)時(shí),額外的高于該預(yù)定閾值的分組丟失可以引起系統(tǒng)根據(jù)轉(zhuǎn)換1109轉(zhuǎn)換至減速狀態(tài)??蛇x的,如果在預(yù)定時(shí)間周期之后,未出現(xiàn)高于該閾值的分組丟失,該系統(tǒng)可以根據(jù)轉(zhuǎn)換1110轉(zhuǎn)換至加速狀態(tài)1104。
在加速狀態(tài)1104,系統(tǒng)可以增加該位率并且等待高于預(yù)定閾值的額外分組丟失。若不存在分組丟失,則系統(tǒng)確定該位率是否小于最大位率。如果是,系統(tǒng)將狀態(tài)轉(zhuǎn)換1111轉(zhuǎn)換至最大比率狀態(tài)1101。如果不是,系統(tǒng)將繼續(xù)處于加速狀態(tài)1104。在加速狀態(tài)1104期間,若所經(jīng)歷的分組丟失高于預(yù)定閾值,該系統(tǒng)確定是否已經(jīng)作出了預(yù)定的最大次數(shù)的加速嘗試(1112模塊)。如果不是,系統(tǒng)根據(jù)轉(zhuǎn)換1113轉(zhuǎn)換至加速等待狀態(tài)。如果已經(jīng)作出了最大次數(shù)的加速嘗試,系統(tǒng)可以根據(jù)轉(zhuǎn)換1114轉(zhuǎn)換至最大速率狀態(tài)1101。
在上述每一種狀態(tài)中,可以采用不同的分組丟失閾值。另外,一些或所有的狀態(tài)轉(zhuǎn)換都可能帶有與其相關(guān)的延時(shí)??梢酝ㄟ^以位率的15%作為每次的增幅來(lái)完成加速。若通道被完全占用并且沒有報(bào)道丟失分組情況,將導(dǎo)致延時(shí),該延時(shí)在下一次加速發(fā)生之前可與X個(gè)定時(shí)周期(200ms*X)相等。當(dāng)默認(rèn)地將X的值設(shè)為2,將導(dǎo)致400ms的延時(shí)。任何既不是連續(xù)的分組丟失報(bào)告也不是回應(yīng)報(bào)告的分組丟失將導(dǎo)致狀態(tài)轉(zhuǎn)換。
附圖12顯示了動(dòng)態(tài)變化帶寬的可用性和DBA的改變。附圖12還顯示了狀態(tài)變換、回應(yīng)延時(shí),以及三種丟失情況突發(fā)丟失、受限通道和固定丟失。在減速狀態(tài)期間、加速等待狀態(tài)期間和加速狀態(tài)期間的LPR保護(hù)的使用已經(jīng)在附圖12中用陰影區(qū)域表示。加速嘗試可使用LPR保護(hù)開銷(overhead)來(lái)測(cè)試擁塞峰值,即,僅僅冗余數(shù)據(jù)可以用來(lái)探測(cè)網(wǎng)絡(luò)擁塞情況是否可以允許更高的位率。若這一擁塞峰值的測(cè)試失敗,LPR保護(hù)任何由分組丟失所引起的損失,這種分組丟失是因?yàn)閮H僅使用了冗余數(shù)據(jù)。這就允許使用連續(xù)減少的視頻干擾風(fēng)險(xiǎn)來(lái)探測(cè)擁塞峰值。
所測(cè)得的擁塞峰值可被完全應(yīng)用于數(shù)據(jù)流。例如,當(dāng)多個(gè)視頻流被發(fā)送時(shí),擁塞峰值可被應(yīng)用于位流的總和。前向擦除保護(hù)可被獨(dú)立地應(yīng)用于每一視頻流。盡管如此,相同級(jí)別的保護(hù)可被應(yīng)用于所有的流。系統(tǒng)還可以調(diào)整為使用共同的前向擦除保護(hù)分組對(duì)視頻進(jìn)行共同的保護(hù),或者對(duì)每一視頻流應(yīng)用不同的保護(hù)級(jí)別。
前向擦除校正還可以僅被應(yīng)用于視頻流的一部分中。例如,在采用了分層的視頻編碼的情況下,該前向擦除保護(hù)將被應(yīng)用于底層而不是增強(qiáng)層。可用對(duì)各種層進(jìn)行不同程度的保護(hù)(稱之為“不平等保護(hù)”)。在這樣的配置下,可將擁塞避免應(yīng)用于整個(gè)數(shù)據(jù)流中。
表6中給出了擁塞峰值管理的實(shí)例LPR探測(cè)。這些探測(cè)可用于測(cè)試將數(shù)據(jù)速率提高預(yù)定值(例如,10%)的可能性,并且可被持續(xù)激活較短時(shí)間周期(例如,800ms)。
視頻速率每組的數(shù)分組有效負(fù)每組的恢復(fù)保護(hù)周期MTBF (k\bs)據(jù)分組載大小(字 分組 (毫秒) (秒) 節(jié)) 641387 3 141 2067 128 121333 100 1795 256 122663 100 1795 384 124003 100 1800 512 125333 100 1799 768 128003 100 1800 1024 168003 100 870 2048 168004 50 1158 3072 248006 50 1936 4096 328007 50 1365 5120 321000 7 50 1365 6144 391000 8 51 1235 表6.對(duì)10%速率的加速的探測(cè) 這里所描述的技術(shù)可以是接收器驅(qū)動(dòng)的,其中接收器可以反饋擁塞峰值和發(fā)送器的擦除保護(hù)等級(jí)。可選地,它們可以被用于發(fā)送器驅(qū)動(dòng)的框架中,或者甚至是具有分布在發(fā)送器和接收器之間的控制環(huán)路的混合框架中。經(jīng)過一些調(diào)整,它還可以適用于多播流。所述技術(shù)也可以與其它技術(shù)結(jié)合,例如分組的重新傳輸、周期性圖片更新和視頻錯(cuò)誤隱藏。
如上所述,將前向擦除校正與擁塞避免相結(jié)合所帶來(lái)的獨(dú)特的好處是任一機(jī)制自身所不能獲得的。其中一個(gè)好處就是,可通過實(shí)驗(yàn)性地增加位流中的前向擦除保護(hù)分組的數(shù)量和觀察對(duì)已傳送的數(shù)據(jù)流的影響,周期性地對(duì)擁塞峰值進(jìn)行測(cè)量。這些保護(hù)分組可將總的數(shù)據(jù)速率增加至所需的探測(cè)級(jí)別,與此同時(shí)還將保護(hù)來(lái)自分組丟失(超過擁塞峰值級(jí)別的情況)的媒體。第二個(gè)好處是通過動(dòng)態(tài)測(cè)量擁塞峰值的方法可以更快地確定所允許的帶寬,這一帶寬是由擁塞避免算法中通常所采用的被動(dòng)方法來(lái)提供。第三個(gè)好處是,當(dāng)整體流(媒體和保護(hù))被限制保持在動(dòng)態(tài)測(cè)量的擁塞峰值之下時(shí),被保護(hù)的媒體流可以以更少的延時(shí)、更低的保護(hù)開銷來(lái)進(jìn)行傳送。
這里所述技術(shù)的另一好處也會(huì)隨著視頻數(shù)據(jù)速率的增加而出現(xiàn),系統(tǒng)在防止分組丟失方面會(huì)越來(lái)越有效。因此,當(dāng)位率增加時(shí),例如在使用了高清晰度視頻的情況下,這里所述的技術(shù)將變得更加實(shí)用和有效。
擁塞避免與前向擦除校正的集成帶來(lái)了一些獨(dú)特的優(yōu)點(diǎn)。例如,擁塞避免為前向擦除校正帶來(lái)了一些獨(dú)特的優(yōu)點(diǎn)。由于數(shù)據(jù)鏈接變得越來(lái)越擁擠,沿著鏈接的媒體的傳遞延時(shí)增加。單獨(dú)使用前向擦除校正可以得到可接受的分組丟失率,但不能降低排隊(duì)延時(shí)。將擁塞避免集成至控制環(huán)路結(jié)果可以得到所期望的服務(wù)質(zhì)量(QoS),該服務(wù)質(zhì)量具有低得多的延遲。另外,前向擦除保護(hù)的效率在低延遲應(yīng)用中要小于其在高延遲應(yīng)用中的效率。若數(shù)據(jù)丟失的根源只是簡(jiǎn)單的擁塞,那么降低位率將比向數(shù)據(jù)流增加額外的前向擦除保護(hù)分組更加有效。
相反地,前向擦除校正也為單一的擁塞避免增添了相當(dāng)大的價(jià)值。典型地,擁塞避免技術(shù)所降低的數(shù)據(jù)流的比率要遠(yuǎn)遠(yuǎn)多于其提升的比率。例如,TCP的擁塞機(jī)制以乘法因子來(lái)降低數(shù)據(jù)速率,但以施加加法因子來(lái)對(duì)數(shù)據(jù)速率進(jìn)行提高要慢得多。這是由于增加數(shù)據(jù)流比率往往會(huì)帶來(lái)?yè)砣奈kU(xiǎn),進(jìn)而產(chǎn)生丟失分組。當(dāng)前向擦除保護(hù)與擁塞避免相集成,這種危險(xiǎn)大大降低。因此,如上所述,可以簡(jiǎn)單地通過增加前向擦除保護(hù)分組的的密度來(lái)增加數(shù)據(jù)速率。
此外,擁塞避免技術(shù)還可以用于評(píng)估鏈接速度。來(lái)自其它數(shù)據(jù)流的交叉擁塞常常會(huì)導(dǎo)致分組的丟失。當(dāng)觀察到交叉擁塞時(shí),通常分組丟失已經(jīng)發(fā)生。由于這樣的交叉擁塞可以被恢復(fù),所包括地前向擦除保護(hù)允許分組丟失。
這里所公開的技術(shù)可以被廣泛類型的系統(tǒng)所采用,這些系統(tǒng)包括任何用于傳輸多媒體數(shù)據(jù),例如視頻數(shù)據(jù)、聲頻數(shù)據(jù)、靜態(tài)圖像數(shù)據(jù)以及其它任何類型數(shù)據(jù)的系統(tǒng)。這一技術(shù)可以被通常用途的計(jì)算機(jī)系統(tǒng)所采用,例如桌上電腦、筆記本電腦、掌上電腦、服務(wù)器以及類似系統(tǒng)??蛇x地,這些技術(shù)可以在各種類型的應(yīng)用系統(tǒng)中使用,例如會(huì)議室視頻會(huì)議系統(tǒng)、桌上視頻會(huì)議系統(tǒng)以及類似系統(tǒng)。所述技術(shù)也可被基礎(chǔ)設(shè)施類型的視頻會(huì)議設(shè)備所采用,例如多點(diǎn)控制單元(MCU)、橋接器、媒體服務(wù)器等。
這里所述的方法可被編程為一個(gè)或多個(gè)計(jì)算機(jī)程序,并且存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì),例如緊湊磁盤、磁帶中,存儲(chǔ)在易失性或非易失性存儲(chǔ)器等中。相應(yīng)地,存儲(chǔ)在程序存儲(chǔ)設(shè)備上的指令可被用于使得可編程控制設(shè)備(例如計(jì)算機(jī)或會(huì)議單元)來(lái)執(zhí)行這里所公開的技術(shù)。盡管所述的通信系統(tǒng)在遠(yuǎn)端和近端之間可提供雙向通信,應(yīng)當(dāng)理解的是,本公開的教導(dǎo)也可以被應(yīng)用于單向傳輸?shù)南到y(tǒng)中。
前述的說(shuō)明書中優(yōu)選的和其它的實(shí)施例并不作為對(duì)申請(qǐng)人所提出的發(fā)明構(gòu)思的范圍或適用性的限制和局限。作為公開這里所包含的發(fā)明構(gòu)思的交換,申請(qǐng)人將要求所附權(quán)利要求中給出的專利權(quán)范圍。因此,所附權(quán)利要求包括了由對(duì)下述權(quán)利要求或等同物要求的范圍之內(nèi)的全部可能修改和變化。
權(quán)利要求
1、一種防止對(duì)在可損耗網(wǎng)絡(luò)中傳輸?shù)拿襟w流產(chǎn)生干擾的方法,所述方法包括
將丟失分組恢復(fù)算法應(yīng)用于所述媒體流,其中所述丟失分組恢復(fù)算法將冗余信息插入到包括媒體流的傳輸數(shù)據(jù)流中,以允許對(duì)一個(gè)或多個(gè)丟失分組進(jìn)行重建;以及
將擁塞避免算法應(yīng)用于所述傳輸數(shù)據(jù)流,其中所述擁塞避免算法包括通過增加插入所述傳輸數(shù)據(jù)流的冗余信息的量來(lái)確定所述網(wǎng)絡(luò)是否能夠支持更高的數(shù)據(jù)速率,從而臨時(shí)性增加傳輸數(shù)據(jù)流的數(shù)據(jù)速率。
2、根據(jù)權(quán)利要求1所述的方法,其中所述冗余信息包括一個(gè)或多個(gè)恢復(fù)分組。
3、根據(jù)權(quán)利要求2所述的方法,其中恢復(fù)分組的數(shù)量取決于由RTCP接收器報(bào)告確定的信道損失率。
4、根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括
根據(jù)避免網(wǎng)絡(luò)擁塞的需要,降低總體的位率。
5、根據(jù)權(quán)利要求1所述的方法,其中所述丟失分組恢復(fù)算法包括前向擦除校正編碼。
6、根據(jù)權(quán)利要求1所述的方法,其中所述丟失分組恢復(fù)算法包括里德-所羅門編碼。
7、根據(jù)權(quán)利要求1所述的方法,其中所述媒體流包括視頻數(shù)據(jù)。
8、一種用于在網(wǎng)絡(luò)中傳輸媒體數(shù)據(jù)的媒體編碼裝置,所述媒體編碼裝置包括
媒體編碼器;
RTP發(fā)送器,其被連接以接收媒體編碼器的輸出,并且根據(jù)實(shí)時(shí)的傳輸協(xié)議將媒體編碼器的輸出分組成為多個(gè)源分組;
RTCP模塊,其被連接以從所述網(wǎng)絡(luò)接收信道信息;
LPR模式判定模塊,其中所述LPR模式判定模塊
被可通信地連接,以從RTCP模塊接收信道信息,
確定來(lái)自信道信息的將被使用的LPR保護(hù)參數(shù),和
被可通信地連接,以向所述LPR分組器提供所述LPR保護(hù)參數(shù);
被連接的LPR分組器,用于接收RTP發(fā)送器的輸出,并且使用從LPR模式判定模塊接收的參數(shù),將RTP發(fā)送器的輸出再次分組成為多個(gè)LPR數(shù)據(jù)分組;和
LPR恢復(fù)分組生成器,其中所述LPR恢復(fù)分組生成器
與LPR分組器和媒體編碼器相連,
基于從所述LPR分組器和所述視頻編碼器接收到的信息,生成LPR恢復(fù)分組,和
傳輸所述LPR數(shù)據(jù)分組和所述LPR恢復(fù)分組至接收器。
9、根據(jù)權(quán)利要求8所述的媒體編碼裝置,其中所述媒體編碼器為視頻編碼器。
10、根據(jù)權(quán)利要求8所述的媒體編碼裝置,其中所述LPR模式判定模塊通過如下方式確定LPR的保護(hù)參數(shù)
確定保護(hù)周期;
確定每一保護(hù)周期的分組的整體數(shù)量;
確定每一保護(hù)周期的恢復(fù)分組的數(shù)量。
11、根據(jù)權(quán)利要求8所述的媒體編碼裝置,其中每一LPR數(shù)據(jù)分組包括僅來(lái)自一個(gè)源分組的信息。
12、根據(jù)權(quán)利要求8所述的媒體編碼裝置,其中恢復(fù)分組的有效負(fù)載使用了里德-所羅門編碼進(jìn)行編碼。
13、一種在基于分組的網(wǎng)絡(luò)中進(jìn)行的媒體會(huì)議中確定LPR保護(hù)參數(shù)的方法,所述方法包括
確定保護(hù)周期;
確定每一保護(hù)周期的分組的整體數(shù)量;和
確定每一保護(hù)周期的恢復(fù)分組的數(shù)量。
14、根據(jù)權(quán)利要求13所述的方法,其中所述保護(hù)周期是根據(jù)所述媒體會(huì)議的位率而確定的。
15、根據(jù)權(quán)利要求13所述的方法,進(jìn)一步包括
調(diào)整LPR保護(hù)參數(shù)作為所述媒體速率的函數(shù)。
16、根據(jù)權(quán)利要求15所述的方法,其中調(diào)整LPR保護(hù)參數(shù)作為所述媒體速率的函數(shù)包括
動(dòng)態(tài)地調(diào)整每一組的分組的數(shù)量。
17、根據(jù)權(quán)利要求15所述的方法,其中調(diào)整LPR保護(hù)參數(shù)作為所述媒體速率的函數(shù)包括
動(dòng)態(tài)地調(diào)整分組的大小。
18、根據(jù)權(quán)利要求15所述的方法,其中調(diào)整LPR保護(hù)參數(shù)作為所述媒體速率的函數(shù)包括
發(fā)送空數(shù)據(jù)分組。
19、一種用于從網(wǎng)絡(luò)中的發(fā)送器接收媒體數(shù)據(jù)的媒體解碼裝置,所述媒體解碼裝置包括
被連接用于從網(wǎng)絡(luò)中接收LPR分組的LPR恢復(fù)模塊,所述LPR分組包括LPR數(shù)據(jù)分組和LPR恢復(fù)分組;
LPR再生器,用于接收所述LPR數(shù)據(jù)分組,并且再生任何丟失的數(shù)據(jù)分組;
RTCP模塊,可通信地連接到所述LPR再生器,用于接收來(lái)自LPR再生器的丟失分組報(bào)告,并且將丟失分組信息傳送到發(fā)射器;和
連接到所述LPR再生器的媒體解碼器,用于接收所述LPR數(shù)據(jù)分組和所述再生的數(shù)據(jù)分組,并且解碼包含于其中的媒體信息。
20、根據(jù)權(quán)利要求19所述的媒體解碼裝置,其中所述媒體解碼器為視頻解碼器。
21、根據(jù)權(quán)利要求19所述的媒體解碼裝置,其中當(dāng)LPR算法未被使用時(shí),所述LPR恢復(fù)模塊和所述LPR再生器作為通路進(jìn)行操作。
全文摘要
本發(fā)明描述了一種在分組交換網(wǎng)絡(luò)中進(jìn)行媒體會(huì)議時(shí),用于克服丟失分組和避免擁塞的設(shè)備和方法。為了避免丟失分組這一問題,通過將冗余信息插入媒體流,使得接收器可以根據(jù)該冗余信息重建任何丟失的分組。擁塞避免技術(shù)包括調(diào)整媒體流的位率,以找到在沒有擁塞引起分組丟失的情況下能夠得到支持的最高位率。當(dāng)增加位率至更高速率時(shí),多余的位可以來(lái)自用于丟失分組恢復(fù)的冗余信息,以使得任何由網(wǎng)絡(luò)擁塞引起的丟失分組將不會(huì)對(duì)該位流產(chǎn)生不利的影響。
文檔編號(hào)H04L12/18GK101364946SQ20081016867
公開日2009年2月11日 申請(qǐng)日期2008年7月23日 優(yōu)先權(quán)日2007年7月23日
發(fā)明者S·博茨考, J·P·斯皮爾曼, 小R·E·弗洛特, D·海茵 申請(qǐng)人:寶利通公司