專利名稱::基于前向糾錯的數(shù)據(jù)傳輸方法、裝置及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及網(wǎng)絡(luò)通信
技術(shù)領(lǐng)域:
,尤其涉及一種基于前向糾錯的數(shù)據(jù)傳輸技術(shù)。
背景技術(shù):
:隨著互聯(lián)網(wǎng)的發(fā)展,為提供QoS(服務(wù)質(zhì)量)保證的承載服務(wù),當接收端發(fā)現(xiàn)數(shù)據(jù)丟失的時候,通常在應(yīng)用層采用FEC(前向糾刪)技術(shù)進行丟失數(shù)據(jù)包的恢復(fù)處理。FEC技術(shù)是在發(fā)送數(shù)據(jù)包過程中,額外發(fā)送部分攜帶有原始數(shù)據(jù)信息的冗余數(shù)據(jù),從而使得接收端能夠通過接收到的冗余數(shù)據(jù)及已接收到的原始數(shù)據(jù)恢復(fù)出傳輸過程中丟失的原始數(shù)據(jù),進而可以提供較為可靠的QoS保證。在3GPP(第三代伙伴計劃)通信系統(tǒng)中,相應(yīng)的FEC技術(shù)的應(yīng)用包括在服務(wù)器側(cè),將待發(fā)送的原始數(shù)據(jù)生成相應(yīng)的源塊,依據(jù)設(shè)定的編碼算法、冗余度信息配置對源塊進行編碼運算生成對應(yīng)的基于FEC的修復(fù)符號,并發(fā)送給終端側(cè)。在終端側(cè),接收數(shù)據(jù)包后剝離添加的FEC字段(即FEC標識),將數(shù)據(jù)包還原為原始上層協(xié)議包,進而獲得服務(wù)器側(cè)發(fā)送來的原始數(shù)據(jù)。若發(fā)生丟包,則根據(jù)收到的包含修復(fù)符號的數(shù)據(jù)包,解析獲得對應(yīng)的解碼信息(如解碼向量等);之后,根據(jù)收到的修復(fù)符號及解碼信息依據(jù)設(shè)定的解碼算法,恢復(fù)出丟失的原始數(shù)據(jù),并在解碼成功后,將恢復(fù)出的所有數(shù)據(jù)包發(fā)送給上層。在實現(xiàn)本發(fā)明過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問題在上述基于FEC技術(shù)的差錯恢復(fù)過程中,相應(yīng)的源塊越大,生成的修復(fù)7符號越多,基于FEC的數(shù)據(jù)傳輸過程的糾刪能力便越強,但同時,會增加帶寬的占用,而且,接收端為了接收整個源塊而產(chǎn)生的時延也將加大。這就使得較高的糾刪能力與較低的帶寬占用率、較低的接收時延之間的矛盾無法得到解決。
發(fā)明內(nèi)容本發(fā)明的實施例提供了一種基于前向糾錯的數(shù)據(jù)傳輸方法、裝置及系統(tǒng),以提高基于前向糾錯技術(shù)的數(shù)據(jù)傳輸過程中的差錯數(shù)據(jù)恢復(fù)能力。一種基于前向糾錯的數(shù)據(jù)發(fā)送方法,包括獲取待發(fā)送的原始數(shù)據(jù);根據(jù)所述待發(fā)送的原始數(shù)據(jù)及已知的插入符號按照預(yù)定的策略生成對應(yīng)的數(shù)據(jù)校驗信息;發(fā)送所述數(shù)據(jù)校驗信息以及待發(fā)送的原始數(shù)據(jù)。一種基于前向糾錯的數(shù)據(jù)發(fā)送裝置,包括數(shù)據(jù)獲取單元,用于獲取待發(fā)送的原始數(shù)據(jù);校驗信息生成單元,用于根據(jù)所述數(shù)據(jù)獲取單元獲取的待發(fā)送的原始數(shù)據(jù)及已知的插入符號按照預(yù)定的策略生成對應(yīng)的數(shù)據(jù)校驗信息;數(shù)據(jù)發(fā)送單元,用于發(fā)送所述校驗信息生成單元生成的數(shù)據(jù)校驗信息以及數(shù)據(jù)獲取單元獲取的待發(fā)送的原始數(shù)據(jù)。一種基于前向糾錯的數(shù)據(jù)接收方法,包括獲取數(shù)據(jù)校驗信息,所述數(shù)據(jù)校驗信息是在發(fā)送端根據(jù)待發(fā)送的原始數(shù)據(jù)及已知的插入符號按照預(yù)定的策略生成;根據(jù)已接收到的數(shù)據(jù)校驗信息及已知的插入符號恢復(fù)獲得發(fā)送端發(fā)送的原始數(shù)據(jù)。一種基于前向糾錯的數(shù)據(jù)接收裝置,包括校驗信息獲取單元,用于獲取數(shù)據(jù)校驗信息,所述數(shù)據(jù)校驗信息是在發(fā)送端根據(jù)待發(fā)送的原始數(shù)據(jù)及已知的插入符號按照預(yù)定的策略生成;原始數(shù)據(jù)獲取單元,用于根據(jù)所述校驗信息獲取單元獲取的數(shù)據(jù)校驗信息及已知的插入符號恢復(fù)獲得發(fā)送端需要傳輸?shù)脑紨?shù)據(jù)。一種基于前向糾錯的數(shù)據(jù)傳輸系統(tǒng),包括上述基于前向糾錯的數(shù)據(jù)發(fā)送裝置及上述基于前向糾錯的數(shù)據(jù)接收裝置。通過上述本發(fā)明的實施例提供的技術(shù)方案可以看出,由于其采用了在發(fā)送端增加生成數(shù)據(jù)校驗信息的數(shù)據(jù)信息量的方式,且增加的數(shù)據(jù)信息為發(fā)送端和接收端已知,因而可以認為相應(yīng)的增加的數(shù)據(jù)信息為100%正確接收。進一步地,由于正確接收的信息量增加,從而使得相應(yīng)的在接收端的差錯恢復(fù)性能大大提高,進而有效改善了FEC技術(shù)的糾刪能力。為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1A為本發(fā)明實施例提供的裝置及系統(tǒng)結(jié)構(gòu)示意圖一;圖1B為本發(fā)明實施例提供的裝置及系統(tǒng)結(jié)構(gòu)示意圖二;圖2為本發(fā)明實施例一提供的系統(tǒng)結(jié)構(gòu)示意圖3A為本發(fā)明實施例一中的數(shù)據(jù)發(fā)送處理過程示意圖一;圖3B為本發(fā)明實施例一中的數(shù)據(jù)發(fā)送處理過程示意圖二;圖4為本發(fā)明實施例一中的數(shù)據(jù)接收處理過程示意圖5為本發(fā)明實施例一中的編碼過程示意圖6為本發(fā)明實施例一中的解碼過程示意圖7為本發(fā)明實施例二提供的系統(tǒng)結(jié)構(gòu)示意圖8為本發(fā)明實施例二中的編碼方式示意圖9為本發(fā)明實施例二中的解碼方式示意圖;圖10A為本發(fā)明實施例三提供的系統(tǒng)結(jié)構(gòu)示意圖一;圖10B為本發(fā)明實施例三提供的系統(tǒng)結(jié)構(gòu)示意圖二;圖11A為本發(fā)明實施例四提供的系統(tǒng)結(jié)構(gòu)示意圖一;圖11B為本發(fā)明實施例四提供的系統(tǒng)結(jié)構(gòu)示意圖二。具體實施例方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。通常分組碼的分組越長糾錯能力越強,為此本發(fā)明實施例通過擴大參與編碼節(jié)點數(shù)目來獲得糾錯增益。即本發(fā)明實施例提供了一種分組碼編解碼改進方案,從而可以提高基于FEC的傳輸技術(shù)的糾刪能力。進一步地還可以在不增加冗余度,即不增加帶寬負擔(dān)的情況保證相應(yīng)的糾刪能力,或者,在保證相應(yīng)的差錯恢復(fù)能力的前提下,減小所添加的冗余數(shù)據(jù)占用帶寬。本發(fā)明實施例提供的基于前向糾錯的數(shù)據(jù)傳輸方案中分別包括相應(yīng)的基于前向糾錯的數(shù)據(jù)發(fā)送方法及相應(yīng)的基于前向糾錯的數(shù)據(jù)接收方法。在基于前向糾錯的數(shù)據(jù)發(fā)送方法中,在獲取待發(fā)送的原始數(shù)據(jù)后,根據(jù)待發(fā)送的原始數(shù)據(jù)及已知的插入符號按照預(yù)定的策略生成對應(yīng)的數(shù)據(jù)校驗信息,并發(fā)送生成的數(shù)據(jù)校驗信息以及相應(yīng)的待發(fā)送的原始數(shù)據(jù)。具體地,可以對根據(jù)原始數(shù)據(jù)生成的源符號利用相應(yīng)的插入符號按照預(yù)定的策略進行處理,以獲得相應(yīng)的數(shù)據(jù)校驗信息,相應(yīng)的插入符號可以但不限于為源符號大小的整數(shù)倍或者與源符號大小相等。在數(shù)據(jù)發(fā)送過程中,生成對應(yīng)的數(shù)據(jù)校驗信息的過程可以采用以下任一處理方式實現(xiàn)處理方式一對待發(fā)送的原始數(shù)據(jù)進行符號填充處理,該符號填充處理是指按照第一預(yù)定策略將已知的插入符號填充到待發(fā)送的原始數(shù)據(jù)中,以生成引入了插入符號的源塊,并根據(jù)完成符號填充處理后的數(shù)據(jù)(即相應(yīng)的源塊)生成對應(yīng)的數(shù)據(jù)校驗信息;相應(yīng)的第一預(yù)定策略可以但不限于為在待發(fā)送的原始數(shù)據(jù)包含的多個符號中以預(yù)定數(shù)量的間隔插入相應(yīng)的插入符號,對于同一待發(fā)送的原始數(shù)據(jù),其對應(yīng)的間隔可以為等間隔,也可以為不等間隔,如在各個符號之間插入相應(yīng)的插入符號,或者,假設(shè)待發(fā)送數(shù)據(jù)包含1-7個順序排列的符號,則可以在1、2個符號之間,3、4符號之間,以及6、7符號之間插入相應(yīng)的插入符號;處理方式二對待發(fā)送的原始數(shù)據(jù)及獲取的已知的插入符號按照第二預(yù)定策略進行運算編碼處理,獲得對應(yīng)的數(shù)據(jù)校驗信息;相應(yīng)的第二預(yù)定策略是指在對待發(fā)送的原始數(shù)據(jù)生成的源塊進行編碼處理以獲得數(shù)據(jù)校驗信息的過程中以哪種方式引用相應(yīng)的插入符號,例如,在編碼處理過程中,每若干個符號便引入一個插入符號,以進行數(shù)據(jù)校驗信息的編碼運算處理。在上述處理過程中,為節(jié)省發(fā)送帶寬,還可以在發(fā)送數(shù)據(jù)校驗信息的過程中,預(yù)先在生成的數(shù)據(jù)校驗信息包含的多個修復(fù)符號中選擇一個或多個修復(fù)符號,之后,僅發(fā)送選擇的修復(fù)符號,其中,相應(yīng)的修復(fù)符號作為數(shù)據(jù)校驗信息的實際載體,這樣,可以有效節(jié)省數(shù)據(jù)發(fā)送過程中的帶寬占用量。在選擇修復(fù)符號的過程中,具體可以采用各種不同的選擇策略,例如,選擇前k個修復(fù)符號,或者,平均間隔選擇k個修復(fù)符號,或者,隨機選擇k個修復(fù)符號,或者,依據(jù)編碼時候的異或次數(shù)選擇k個修復(fù)符號,等等。進一步地,在發(fā)送待發(fā)送的原始數(shù)據(jù)的過程中,可以將待發(fā)送的原始數(shù)據(jù)獨立于數(shù)據(jù)校驗信息全部發(fā)送;或者,也可以在待發(fā)送的原始數(shù)據(jù)包含的數(shù)據(jù)符號中選擇部分數(shù)據(jù)符號獨立于數(shù)據(jù)校驗信息進行發(fā)送,以節(jié)省發(fā)送帶寬,具體可以根據(jù)數(shù)據(jù)校驗信息所采用的編碼算法進行部分數(shù)據(jù)符號的選擇,例如,選擇包含在最多個數(shù)據(jù)校驗信息包含的修復(fù)符號中的數(shù)據(jù)符號進行主動丟棄,余下的數(shù)據(jù)符號作為選擇的需要發(fā)送的部分數(shù)據(jù)符號;或者,也可以直接發(fā)送全部或部分生成的數(shù)據(jù)校驗信息,而無需獨立于數(shù)據(jù)校驗信息進行待發(fā)送的原始數(shù)據(jù)的發(fā)送處理,也就是說也可以發(fā)送預(yù)定量的數(shù)據(jù)校驗信息,且根據(jù)該預(yù)定量的數(shù)據(jù)校驗信息在接收端能夠解碼獲得所述原始數(shù)據(jù),此時,由于該數(shù)據(jù)校驗信息中包含待發(fā)送的原始數(shù)據(jù)信息,則相當于在發(fā)送端發(fā)送了相應(yīng)的待發(fā)送的原始數(shù)據(jù),即接收端可以根據(jù)收到的數(shù)據(jù)校驗信息解碼獲得發(fā)送端發(fā)送的原始數(shù)據(jù)。在基于前向糾錯的數(shù)據(jù)接收方法中,首先,從接收到的數(shù)據(jù)包中獲取數(shù)據(jù)校驗信息和原始數(shù)據(jù),其中,相應(yīng)的數(shù)據(jù)校驗信息是在發(fā)送端根據(jù)待發(fā)送的原始數(shù)據(jù)及已知的插入符號按照預(yù)定的策略生成;之后,便可以根據(jù)數(shù)據(jù)校驗信息、原始數(shù)據(jù)及已知的插入符號恢復(fù)獲得發(fā)送端發(fā)送的原始數(shù)據(jù)。在數(shù)據(jù)接收處理過程中,相應(yīng)的恢復(fù)獲得發(fā)送端發(fā)送的原始數(shù)據(jù)的過程可以但不限于采用以下任一恢復(fù)處理方式實現(xiàn)恢復(fù)處理方式一從接收到的原始數(shù)據(jù)包中獲取原始數(shù)據(jù),對接收到的數(shù)據(jù)包中獲取的原始數(shù)據(jù)進行符號填充處理,之后,再結(jié)合接收的相應(yīng)的數(shù)據(jù)校驗信息進行解碼操作,以便于恢復(fù)獲得丟失的原始數(shù)據(jù),相應(yīng)的符號填充處理是指按照第一預(yù)定策略將已知的插入符號填充到原始數(shù)據(jù)中;恢復(fù)處理方式二,對接收到的原始數(shù)據(jù)包中獲取的原始數(shù)據(jù),從接收到的數(shù)據(jù)校驗信息數(shù)據(jù)包中解析獲得數(shù)據(jù)校驗信息,利用收到的數(shù)據(jù)校驗信息、原始數(shù)據(jù)及已知的插入符號按照第二預(yù)定策略進行解碼處理,以恢復(fù)獲得丟失的原始數(shù)據(jù);恢復(fù)處理方式三,對接收到的數(shù)據(jù)包中獲取數(shù)據(jù)校驗信息,對接收到的數(shù)據(jù)校驗信息及已知的插入符號按照第一預(yù)定策略或第二預(yù)定策略進行解碼處理,以恢復(fù)獲得發(fā)送端發(fā)送的所有原始數(shù)據(jù)。其中,對于恢復(fù)處理方式一和恢復(fù)處理方式二的情況,除丟失的原始數(shù)據(jù)外,其他原始數(shù)據(jù)均可以從接收到的原始數(shù)據(jù)包中獲得,進而可以獲得所有發(fā)送端發(fā)送的原始數(shù)據(jù)。在上述處理過程中,相應(yīng)的發(fā)送端與接收端之間可以預(yù)先設(shè)定相應(yīng)的預(yù)定的策略、第一預(yù)定策略、第二預(yù)定策略等FEC相關(guān)配置參數(shù);或者,也可以在數(shù)據(jù)傳送之前,發(fā)送端與接收端之間通過信息交互確定相應(yīng)的預(yù)定的策12略、第一預(yù)定策略、第二預(yù)定策略等FEC相關(guān)配置參數(shù),例如,可以由發(fā)送端將相應(yīng)的FEC相關(guān)配置參數(shù)通知給接收端,等等。本發(fā)明實施例還提供了相應(yīng)的基于前向糾錯的數(shù)據(jù)發(fā)送裝置,其具體實現(xiàn)結(jié)構(gòu)如圖1A和圖1B所示,可以包括(1)數(shù)據(jù)獲取單元11,用于獲取待發(fā)送的原始數(shù)據(jù),即獲取需要發(fā)送給接收端的原始數(shù)據(jù)。(2)校驗信息生成單元12,用于根據(jù)數(shù)據(jù)獲取單元11獲取的待發(fā)送的原始數(shù)據(jù)及已知的插入符號按照預(yù)定的策略生成對應(yīng)的數(shù)據(jù)校驗信息;在該裝置中,相應(yīng)的校驗信息生成單元12具體可以采用以下兩種結(jié)構(gòu)中的任一種結(jié)構(gòu)實現(xiàn),其中校驗信息生成單元12的一種實現(xiàn)結(jié)構(gòu)參照圖1A所示,可以包括第一源塊填充單元121,用于將待發(fā)送的原始數(shù)據(jù)及已知的插入符號按照第一預(yù)定策略寫入到源塊對應(yīng)的存儲空間中作為相應(yīng)的源塊數(shù)據(jù);第一編碼單元122,用于對第一源塊填充單元121發(fā)來的源塊數(shù)據(jù)進行編碼處理,以獲得對應(yīng)的數(shù)據(jù)校驗信息。校驗信息生成單元12的另一種實現(xiàn)結(jié)構(gòu)參照圖1B所示,可以包括第二源塊填充單元123,用于將待發(fā)送的原始數(shù)據(jù)寫入到源塊對應(yīng)的存儲空間中作為相應(yīng)的源塊數(shù)據(jù);第二編碼單元124,用于將第二源塊填充單元123發(fā)來的源塊數(shù)據(jù)與已知的插入符號按照預(yù)定的第二預(yù)定策略進行運算編碼處理,以獲得對應(yīng)的數(shù)據(jù)校驗信息。(3)數(shù)據(jù)發(fā)送單元13,用于發(fā)送校驗信息生成單元12生成的數(shù)據(jù)校驗信息以及數(shù)據(jù)獲取單元11獲取的待發(fā)送的原始數(shù)據(jù)。在該裝置中,相應(yīng)的數(shù)據(jù)發(fā)送單元13還與校驗信息選擇單元14連接,該校驗信息選擇單元14用于在所述數(shù)據(jù)校驗信息包含的多個修復(fù)符號中選擇一個或多個修復(fù)符號,并將選擇的修復(fù)符號傳遞給數(shù)據(jù)發(fā)送單元13,以通過該數(shù)據(jù)發(fā)送單元13發(fā)送部分修復(fù)符號。進一步地,在數(shù)據(jù)發(fā)送過程中,相應(yīng)的數(shù)據(jù)發(fā)送單元13還可以直接與數(shù)據(jù)獲取單元11連接,以用于將待發(fā)送的原始數(shù)據(jù)全部獨立于數(shù)據(jù)校驗信息進行發(fā)送?;蛘撸瑪?shù)據(jù)發(fā)送單元13還可以與數(shù)據(jù)選擇單元15連接,通過該數(shù)據(jù)選擇單元15在待發(fā)送的原始數(shù)據(jù)包含的數(shù)據(jù)符號中選擇部分數(shù)據(jù)符號,并通過數(shù)據(jù)發(fā)送單元13獨立于數(shù)據(jù)校驗信息進行發(fā)送。或者,數(shù)據(jù)發(fā)送單元13還可以與校驗信息生成單元12連接,以用于發(fā)送全部或部分數(shù)據(jù)校驗信息,此時,由于相應(yīng)的數(shù)據(jù)校驗信息中包含待發(fā)送的原始數(shù)據(jù),故無需單獨進行待發(fā)送的原始數(shù)據(jù)的發(fā)送處理;在發(fā)送部分數(shù)據(jù)校驗信息時,相應(yīng)的數(shù)據(jù)發(fā)送單元13則可以與上述校驗信息選擇單元14連接。本發(fā)明實施例中,還提供了相應(yīng)的基于前向糾錯的數(shù)據(jù)接收裝置,其具體實現(xiàn)結(jié)構(gòu)仍參照圖1A和圖1B所示,可以包括(1)校驗信息獲取單元16,用于從接收到的數(shù)據(jù)包中獲取數(shù)據(jù)校驗信息,相應(yīng)的數(shù)據(jù)校驗信息是在發(fā)送端根據(jù)待發(fā)送的原始數(shù)據(jù)及已知的插入符號按照預(yù)定的策略生成。(2)原始數(shù)據(jù)獲取單元17,用于根據(jù)校驗信息獲取單元16獲取的數(shù)據(jù)校驗信息、已知的插入符號和從接收到的數(shù)據(jù)包中獲得的原始數(shù)據(jù)恢復(fù)獲得發(fā)送端發(fā)送的原始數(shù)據(jù);進一步地,參照圖1A所示,該原始數(shù)據(jù)獲取單元具體可以包括第一原始數(shù)據(jù)接收單元171,用于從接收到的數(shù)據(jù)包中獲取發(fā)送端發(fā)送的原始數(shù)據(jù);丟失數(shù)據(jù)恢復(fù)單元172,用于對第一原始數(shù)據(jù)接受單元171獲取的原始數(shù)據(jù)進行符號填充處理,并結(jié)合所述數(shù)據(jù)校驗信息進行解碼操作,恢復(fù)獲得丟失的原始數(shù)據(jù),該符號填充處理是指按照第一預(yù)定策略將已知的插入符號填充到所述原始數(shù)據(jù)中;或者,用于對校驗信息獲取單元16獲取的數(shù)據(jù)校驗信息、已知的插入符號和第一原始數(shù)據(jù)接受單元171獲取的原始數(shù)據(jù)按照第二預(yù)定策略進行解碼處理,以恢復(fù)獲得丟失的原始數(shù)據(jù)?;蛘?,參照圖1B所示,該原始數(shù)據(jù)獲取單元具體可以包括第二原始數(shù)據(jù)14接收單元173,用于對校驗信息獲取單元16獲取的數(shù)據(jù)校驗信息及已知的插入符號按照第第一或第二預(yù)定策略進行解碼處理,恢復(fù)獲得發(fā)送端發(fā)送的所有原始數(shù)據(jù)。本發(fā)明初稿例還提供了一種基于前向糾錯的數(shù)據(jù)傳輸系統(tǒng),其具體實現(xiàn)結(jié)構(gòu)如圖1A和圖1B所示,上述基于前向糾錯的數(shù)據(jù)發(fā)送裝置及上述基于前向糾錯的數(shù)據(jù)接收裝置,以實現(xiàn)數(shù)據(jù)的傳送處理。在本發(fā)明的實施例中,通過插入預(yù)定的插入符號的方式擴大參與編碼節(jié)點數(shù)目,且引入的預(yù)定的插入符號可以認為是100%成功傳遞到接收端,這樣,便可以大大提高丟失數(shù)據(jù)恢復(fù)的能力。同時,而對于生成的修復(fù)符號的選擇性發(fā)送,則可以使得在不增加冗余的前提下提高數(shù)據(jù)恢復(fù)能力,或者說,在擴大參與編碼節(jié)點數(shù)目后,通過有效的選擇發(fā)送修復(fù)符號,還可以在發(fā)送少量冗余信息的情況下達到預(yù)期的恢復(fù)概率,這一點已經(jīng)通過相應(yīng)的仿真實驗的結(jié)果得以證明。下面將結(jié)合附圖對本發(fā)明的幾個具體實施例進行詳細說明。實施例一在該實施例中,以IPTV實時媒體播放場景為例,對相應(yīng)的基于FEC編碼的數(shù)據(jù)傳送及接收處理過程進行說明(一)數(shù)據(jù)發(fā)送端在IPTV實時媒體播放場景中,相應(yīng)的數(shù)據(jù)發(fā)送端可以為服務(wù)器側(cè),參照圖2所示,在服務(wù)器側(cè)具體可以采用的處理過程包括(1)由源塊構(gòu)造模塊(即第一源塊填充單元121)緩存待發(fā)送的原始數(shù)據(jù),并對其進行分組,完成分組處理后,將同組數(shù)據(jù)按預(yù)定規(guī)則生成以數(shù)據(jù)符號為最小單位的包含若干個源符號和預(yù)設(shè)插入符號的源塊數(shù)據(jù);(2)由第一編碼模塊對上述源塊構(gòu)造模塊產(chǎn)生的源塊數(shù)據(jù),依據(jù)特定的編碼算法、冗余度信息配置等生成FEC修復(fù)符號(即數(shù)據(jù)校驗信息,也可以稱為修復(fù)數(shù)據(jù));(3)由選擇發(fā)送模塊(可以包括校驗信息選擇單元14和數(shù)據(jù)選擇單元15中的至少一項)依照預(yù)定規(guī)則,選擇最終發(fā)送的數(shù)據(jù)信息,包括選擇發(fā)送生成的FEC修復(fù)符號和/或選擇發(fā)送相應(yīng)的原始數(shù)據(jù);(4)由發(fā)送模塊(即數(shù)據(jù)發(fā)送單元13)對上述選擇發(fā)送模塊選出的需要發(fā)送的FEC修復(fù)符號添加FEC標識(如添加FEC頭信息等)以及進行下層協(xié)議封裝,之后,通過網(wǎng)絡(luò)傳輸至終端側(cè);在發(fā)送過程中修復(fù)符號和原始數(shù)據(jù)可以通過同一端口進行發(fā)送,也可以通過不同的端口進行發(fā)送。(二)數(shù)據(jù)接收端在IPTV實時媒體播放場景中,相應(yīng)的數(shù)據(jù)接收端可以為終端側(cè),仍參照圖2所示,在終端側(cè)具體可以采用的處理過程包括(1)通過源塊重構(gòu)模塊(即第一原始數(shù)據(jù)接收單元171)收集并解析具有相同源塊編號的原始數(shù)據(jù)包,并采用與編碼端(即數(shù)據(jù)發(fā)送端)按同樣的規(guī)則填充生成FEC源塊,該FEC源塊包括源符號和預(yù)設(shè)插入符號,之后,將生成的FEC源塊提供給解碼模塊作為其待解碼的原始數(shù)據(jù);(2)利用修復(fù)數(shù)據(jù)收集模塊(即校驗信息獲取單元16)收集具有相同源塊編號的修復(fù)數(shù)據(jù)包,并解析獲得對應(yīng)的解碼相關(guān)信息(如解碼向量等),以便于為解碼模塊提供修復(fù)數(shù)據(jù)以及對應(yīng)的解碼相關(guān)信息;(3)第一解碼模塊(包括丟失數(shù)據(jù)恢復(fù)單元172)獲取源塊重構(gòu)模塊及修復(fù)數(shù)據(jù)收集模塊傳遞來的信息后,依據(jù)特定的解碼算法,結(jié)合相應(yīng)的待解碼的原始數(shù)據(jù)、修復(fù)數(shù)據(jù)、預(yù)設(shè)數(shù)據(jù)(如預(yù)定的插入符號等信息)及對應(yīng)的解碼信息進行解碼,并將恢復(fù)出的數(shù)據(jù)包發(fā)送上層。以上處理過程中,過程(1)、(2)的處理順序不分先后。下面將對該實施例中,服務(wù)器側(cè)及終端側(cè)的具體處理過程進行描述。(一)服務(wù)器側(cè)在服務(wù)器側(cè),源塊構(gòu)造模塊接收原始數(shù)據(jù),并生成以數(shù)據(jù)符號為最小單位的包含若干個源符號和預(yù)設(shè)插入符號的源塊數(shù)據(jù),所述的預(yù)設(shè)插入符號可以是編碼側(cè)與解碼側(cè)固定配置的,也可以是雙方通過信息交互確定的;第一編碼模塊對相應(yīng)的源塊數(shù)據(jù)依據(jù)設(shè)定的編碼算法及冗余度信息配置生成FEC修復(fù)符號數(shù)據(jù);之后,由發(fā)送模塊按照選擇發(fā)送模塊生成的選擇策略選擇出需要的FEC修復(fù)符號,與原始數(shù)據(jù)一起發(fā)送到網(wǎng)絡(luò)中,以傳送給終端側(cè)。進一步地,如圖3A所示,相應(yīng)的處理過程包括以下步驟步驟1,服務(wù)器與終端側(cè)確定相關(guān)預(yù)設(shè)信息;相應(yīng)的預(yù)設(shè)信息可以包括預(yù)定的插入符號的數(shù)據(jù)值(比如全0或全1等)、插入符號在源塊中的相對位置以及插入規(guī)則(如間隔插入或在sourceBlock尾插入等)、編碼圖樣等信息;相應(yīng)的預(yù)設(shè)信息可以是預(yù)先配置于服務(wù)器與終端側(cè),或者,也可以在數(shù)據(jù)流發(fā)送前通過服務(wù)器與終端側(cè)之間的通信確定。步驟2,以字節(jié)為單位按預(yù)定參數(shù)設(shè)定符號大小(SymbolSize),為源塊(SourceBlock)分配足夠大的存儲空間。步驟3,由上層獲取需編碼的數(shù)據(jù)包(即獲取下一個源數(shù)據(jù)包),在頭部加上必要的信息(如該數(shù)據(jù)包的長度和對應(yīng)數(shù)據(jù)流的ID號),然后按符號大小進行劃分、重組填充放入源塊S;該步驟3具體可以包括步驟31,獲取下一個源數(shù)據(jù)包;步驟32,將該源數(shù)據(jù)包的頭部加上必要信息后以源數(shù)據(jù)符號為單位進行劃分,以劃分獲得一個或多個源數(shù)據(jù)符號;若不能被劃分為整數(shù)數(shù)量的源數(shù)據(jù)符號,則在該數(shù)據(jù)包的末尾進行填充補O(Padding),以保證會填充后可以劃分為整數(shù)數(shù)量的源符號數(shù)據(jù);步驟33,按順序依次獲取該源數(shù)據(jù)包劃分獲得的各源數(shù)據(jù)符號,并將其填入步驟2中為源塊分配的相應(yīng)存儲空間中;步驟34,在步驟33執(zhí)行填充操作的過程中,每填入一個或多個源數(shù)據(jù)符號,則在相應(yīng)的源數(shù)據(jù)符號后填入一個或多個預(yù)設(shè)的插入符號;通過上述步驟生成的源塊S的格式范例可以如下表所示,其中ID(標識)和Length(長度)為源塊填充時候在每個源數(shù)據(jù)包的頭部添加的FEC頭。17<table>tableseeoriginaldocumentpage18</column></row><table>預(yù)設(shè)插入符號步驟35,判斷當前的源數(shù)據(jù)包劃分獲得的各組源數(shù)據(jù)符號是否均已經(jīng)填充到相應(yīng)的存儲空間中,若是,則執(zhí)行步驟36,否則,執(zhí)行步驟33;步驟36,判斷在源塊S中(即相應(yīng)的存儲空間中)是否填充入足夠的源數(shù)據(jù)符號,若是,則執(zhí)行步驟4,否則,執(zhí)行步驟31;即重復(fù)執(zhí)行步驟31至步驟36,直至源塊S中源數(shù)據(jù)符號的數(shù)目達到預(yù)定門限,則將生成源塊S送入編碼模塊執(zhí)行步驟4。步驟4,對源塊S中源數(shù)據(jù)符號進行FEC編碼,生成相應(yīng)的修復(fù)符號,并執(zhí)行步驟5;具體地,第一編碼模塊利用源塊數(shù)據(jù)中的源數(shù)據(jù)符號,依據(jù)特定的編碼算法、冗余度信息配置生成多于實際需發(fā)送的FEC修復(fù)符號假定源塊S里有K個符號(包括源數(shù)據(jù)符號和插入符號),又假定需要發(fā)送冗余度為r的修復(fù)數(shù)據(jù),需要生成R個修復(fù)符號(R>Kxr),則采用(K:R)的編碼圖樣對源塊S中的K個符號進行編碼運算(如矩陣乘法等),即對K個符號依據(jù)編碼圖樣以符號為單位進行異或疊加,從而生成R個修復(fù)符號;步驟5,按照預(yù)定的規(guī)定選擇需要發(fā)送的修復(fù)符號及原始數(shù)據(jù)包,并執(zhí)行步驟6;進一步地,可以由選擇發(fā)送模塊對生成的FEC修復(fù)符號按照預(yù)設(shè)規(guī)則保留需要的FEC修復(fù)符號,例如是,可以按順序取前面的Kxr個修復(fù)符號或者間隔的選取Kxr個修復(fù)符號或者隨機的選取Kxr個修復(fù)符號或者其他結(jié)合編碼算法的優(yōu)選規(guī)則選取Kxr個修復(fù)符號,之后,將選擇出的修復(fù)符號交給發(fā)送模塊;選擇發(fā)送模塊同樣可結(jié)合修復(fù)符號選擇最終發(fā)送的源數(shù)據(jù)包;步驟6,將選擇的修復(fù)符號及原始數(shù)據(jù)包封裝后發(fā)送;進一步地,發(fā)送模塊可以將選擇出需發(fā)送的一個或多個修復(fù)符號作為修復(fù)包,添加必要FEC標識信息等,封裝為UDP報文及其他下層封裝格式發(fā)出至網(wǎng)絡(luò)傳輸;發(fā)送模塊還將需發(fā)送的原始數(shù)據(jù)包加上必要的FEC標識信息等,封裝為UDP報文及其他下層封裝格式發(fā)送至網(wǎng)絡(luò)傳輸。在上述處理過程中,相應(yīng)的34步驟執(zhí)行的填充預(yù)設(shè)插入符號的操作也可以在將所有的源數(shù)據(jù)符號均填入到源塊S后執(zhí)行,如圖3B所示,具體可以采用以下過程替換上述步驟34至步驟36:步驟34',判斷源塊中是否已經(jīng)填入了足夠的源數(shù)據(jù)符號,若是,執(zhí)行步驟35',否則,執(zhí)行步驟33;步驟35',在生成只包含源數(shù)據(jù)符號的源塊S中,將與解碼側(cè)事先約定好規(guī)則生成預(yù)定的插入符號,并將預(yù)設(shè)插入符號按照預(yù)定方式(如等間隔插入或者隨機插入或者簡單的置于源塊的后面等方式)填充入源塊S中,生成一個新的源塊S,并執(zhí)行上述步驟4。(二)終端側(cè)在終端側(cè),源塊重構(gòu)模塊收集具有相同源塊編號的原始數(shù)據(jù)包,與編碼端按同樣的規(guī)則填充生成FEC源塊(包括源數(shù)據(jù)符號和插入符號),相應(yīng)的同樣的規(guī)則可以是編碼側(cè)與解碼側(cè)預(yù)先配置,也可以是雙方交互確定;終端側(cè)的修復(fù)數(shù)據(jù)收集模塊收集具有相同源塊編號的修復(fù)數(shù)據(jù)包,并解析對應(yīng)符號的解碼相關(guān)信息(如解碼向量等);將收到FEC源塊和相關(guān)修復(fù)符號數(shù)據(jù)以及解碼信息傳遞給第一解碼模塊,由解碼模塊依據(jù)預(yù)定的解碼算法進行解碼4喿作。在若解碼成功后,將恢復(fù)出的所有凄1據(jù)包發(fā)送給上層。進一步地,如圖4所示,相應(yīng)的處理過程包括以下步驟19步驟1,終端側(cè)與服務(wù)器側(cè)確定相關(guān)的預(yù)設(shè)信息相應(yīng)的預(yù)設(shè)信息可以包括插入符號的數(shù)據(jù)值(如全0或全1等)、插入符號在源塊中的相對位置、編碼采用的編碼圖樣等信息;該相關(guān)的預(yù)設(shè)信息可以為預(yù)先配置于終端側(cè)及服務(wù)器側(cè),也可以為雙方在數(shù)據(jù)流發(fā)送前通過交互確定。步驟2,初始化源塊的存儲空間,即為源塊分配相應(yīng)的存儲空間;步驟3,獲取下一個下層FEC數(shù)據(jù)包,該FEC數(shù)據(jù)包可能是FEC源數(shù)據(jù)包(即原始數(shù)據(jù)),也可能是包含修復(fù)符號的修復(fù)數(shù)據(jù)包;步驟4,解析下層FEC數(shù)據(jù),獲得數(shù)據(jù)包中的FEC標識信息;步驟5,判斷收到的數(shù)據(jù)包是否為FEC源數(shù)據(jù)包,若是,則執(zhí)行步驟6,否則,執(zhí)行步驟10;具體可以通過從下層數(shù)據(jù)包中解析獲得的FEC標識信息區(qū)分相應(yīng)數(shù)據(jù)包是否為FEC源數(shù)據(jù)包,或者也可以通過其他區(qū)分手段(如不同端口信息等)區(qū)分出原始數(shù)據(jù)和修復(fù)數(shù)據(jù)來;步驟6,將原始數(shù)據(jù)包及FEC頭信息按照預(yù)定的規(guī)則對包含的符號進行劃分,獲得一個或多個符號;在劃分確定符號組過程中,若某個原始數(shù)據(jù)和FEC頭信息不能被劃分為整數(shù)個符號時,則進行Padding補O,以便于能夠?qū)⒃紨?shù)據(jù)和FEC頭信息劃分為整數(shù)數(shù)量的符號。步驟7,根據(jù)源塊重構(gòu)模塊從下層數(shù)據(jù)包凈載中剝離的FEC標識信息,將劃分獲得的一個或多個符號插入到為源塊分配的存儲空間中對應(yīng)位置;具體地,源塊重構(gòu)模塊從下層數(shù)據(jù)包凈載中剝離的FEC標識信息(即FEC頭信息),并還原為原始上層協(xié)議包后,根據(jù)相應(yīng)的FEC標識信息解析確定原始數(shù)據(jù)包含的各個符號對應(yīng)的源塊編號以及位置信息,并根據(jù)相應(yīng)的源塊編號及位置信息將各個符號組包含的符號插入相應(yīng)源塊的存儲空間中的對應(yīng)位置,若發(fā)生丟包,則在相應(yīng)的符號位置處補O;步驟8,在將上述符號插入源塊的過程中,將與編碼側(cè)預(yù)先約定好的預(yù)定的插入符號按照與編碼側(cè)的相同的策略填充到源塊中,并執(zhí)行步驟9;步驟9,判斷當前原始數(shù)據(jù)包包含的各個符號是否已經(jīng)完全填充到源塊對應(yīng)的存儲空間中,若是,則執(zhí)行步驟12,否則,執(zhí)行步驟7;對于上述步驟8,也可以在將上述符號插入源塊的過程完成后執(zhí)行,也就是說,可以在步驟9中判斷結(jié)果為"是"時,執(zhí)行步驟8,之后,再執(zhí)行步驟12,此時,執(zhí)行步驟7之后,可以直接執(zhí)行步驟9即可。步驟10,通過修復(fù)數(shù)據(jù)接收模塊收集具有相同源塊編號的修復(fù)數(shù)據(jù)包,對相應(yīng)的修復(fù)數(shù)據(jù)包(或稱校驗數(shù)據(jù)包)進行處理,根據(jù)FEC標識信息將修復(fù)數(shù)據(jù)包劃分為多個修復(fù)符號;步驟11,修復(fù)數(shù)據(jù)接收模塊還解析其對應(yīng)符號的解碼信息,例如解碼向量等信息,并緩存相應(yīng)的解碼信息,之后,執(zhí)行步驟12;步驟12,判斷是否收到足夠數(shù)量的符號或等待時間超過預(yù)設(shè)門限,若是,執(zhí)行步驟13,否則,執(zhí)行步驟3;步驟13,解碼模塊對接收到的原始數(shù)據(jù)符號進行FEC解碼操作;步驟14,解碼恢復(fù)出丟失的數(shù)據(jù)包,并向上層傳遞;即在將需要進行FEC解碼恢復(fù)的源塊數(shù)據(jù)、收到的相關(guān)修復(fù)符號以及解碼信息送入解碼模塊后,解碼模塊還依據(jù)預(yù)定的解碼算法,按照與編碼側(cè)同樣的編碼圖樣或規(guī)則,從原始數(shù)據(jù)符號和修復(fù)符號中,恢復(fù)出丟失的原始數(shù)據(jù)符號,并在解碼成功后,將恢復(fù)出的數(shù)據(jù)包向上層發(fā)送;具體地,若編碼側(cè)采用(K:R)的編碼圖樣,則解碼側(cè)依據(jù)設(shè)定的編碼符號數(shù)量K和所收到的修復(fù)符號的數(shù)量r,采用(K:r)的解碼方法進行解碼運算,解碼恢復(fù)出丟失的數(shù)據(jù)包。下面將以一個具體的應(yīng)用實施例為例,對相應(yīng)的編碼及解碼過程進行詳細i也描述。假設(shè)歸屬同一源塊的2個大小均為320字節(jié)的RTP(實時傳輸協(xié)議)數(shù)據(jù)RTP1和RTP2,其在網(wǎng)絡(luò)傳輸過程中數(shù)據(jù)RTP2丟失。且假設(shè)相應(yīng)的編碼符號大小為160字節(jié),則每個RTP數(shù)據(jù)占用2個符號(共320字節(jié)),無需對兩個RTP數(shù)據(jù)進行Padding操作。此時,相應(yīng)的2個RTP數(shù)據(jù)的編碼發(fā)送及解碼恢復(fù)過程具體可以包括(一)在服務(wù)器側(cè)的編碼發(fā)送過程月良務(wù)器向終端發(fā)送SDP(會話描述協(xié)議,SessionDescriptionProtocol)信息,告知終端側(cè)相應(yīng)的插入符號的數(shù)據(jù)值(比如全0或全1)、插入符號在源塊中的相對位置、同次編碼所使用的編碼圖樣等預(yù)設(shè)信息。當然,相應(yīng)的預(yù)設(shè)信息也可以預(yù)先固定配置于服務(wù)器和終端上。參照圖5所示,完成相應(yīng)的預(yù)設(shè)信息的設(shè)置后(如收到終端的確認信息后),則可以由上層收集2個RTP數(shù)據(jù)包,并按順序放入源塊S'中,相應(yīng)的放入源塊S'的過程具體可以包括(1)首先填入第一個RTP數(shù)據(jù),其恰好占用2個Symbo1(符號),故無需進行padding處理;(2)繼續(xù)填充第二個RTP數(shù)據(jù),共占用4個Symbo1,填充數(shù)據(jù)達到源塊預(yù)設(shè)門限(如4個Symbo1),則可以進行預(yù)定的插入符號的填充。相應(yīng)的填充預(yù)定的插入符號的過程包括先根據(jù)預(yù)先設(shè)定好的生成插入符號的策略(如以1010……的策略或全0或全1的策略等)生成與編碼符號大小相等的預(yù)定的插入符號,之后。將生成的預(yù)定的插入符號按照預(yù)定的間隔方式填充入源塊S'中,生成一個待編碼的源塊S。對生成的待編碼的源塊S進行編碼依據(jù)設(shè)定的編碼算法及冗余度信息配置生成FEC修復(fù)符號,在該源塊S里共有8個符號(包括4個源符號和4個插入符號),需要生成4個^f'務(wù)復(fù)符號,并采用(8:4)的編碼圖樣采用相應(yīng)的編碼算法對源塊S中的8個符號進行編碼運算(例如,采用矩陣乘法,即(原始符號按編碼矩陣中的對應(yīng)位是否為1進行異或疊加),生成相應(yīng)的4個修復(fù)符號。生成相應(yīng)的4個修復(fù)符號后,則可以由選擇發(fā)送模塊對生成的FEC修復(fù)符號按照預(yù)定的選擇策略選擇發(fā)送其中的部分修復(fù)符號,例如,可以按順序選取發(fā)送前面的2個修復(fù)符號,等等。對于源塊S中的原始符號,則將全部按相應(yīng)的順序進行發(fā)送。22在發(fā)送選擇的修復(fù)符號及原始符號過程中,具體可以以單個symbol為單位,將修復(fù)符號添加上相應(yīng)的FEC標識信息封裝為2個UDP報文發(fā)出至網(wǎng)絡(luò)傳輸;將2個原始RTP報文加上相應(yīng)的FEC標識信息,再封裝為UDP報文發(fā)送至網(wǎng)絡(luò)傳輸。(二)在終端側(cè)的接收解碼過程在終端側(cè),若接收到服務(wù)器側(cè)發(fā)來的SDP信息,則由接收到的SDP信息中獲取FEC相關(guān)預(yù)設(shè)信息,并向服務(wù)器發(fā)回確認信息。參照圖6所示,終端側(cè)在從網(wǎng)絡(luò)接收到UDP原始數(shù)據(jù)包后,則剝離FEC添加字段(即FEC標識信息),還原為原始上層協(xié)議包,并解析出相應(yīng)的數(shù)據(jù)包包含的符號所歸屬的源塊編號以及位置信息,之后,將相應(yīng)的符號填充入相應(yīng)源塊的對應(yīng)位置處。將相應(yīng)的符號填充入相應(yīng)的源塊后,還將與編碼側(cè)約定的插入符號(如1010......等)按照預(yù)定的間隔插入方式填充入源塊中。終端側(cè)還收集具有相同源塊編號的修復(fù)數(shù)據(jù)包,并解析出相應(yīng)的兩個修復(fù)符號以及對應(yīng)的解碼信息(如編碼向量等)。由于RTP2丟失,故終端側(cè)在接收到RTP1數(shù)據(jù)后10Oms內(nèi),未接收到RTP2數(shù)據(jù),則判定丟包,并在源塊中數(shù)據(jù)RTP2對應(yīng)的符號位置補0。將需要FEC解碼恢復(fù)的源塊數(shù)據(jù)、收到的相關(guān)修復(fù)符號以及解碼信息依據(jù)設(shè)定的解碼算法,按照與編碼端(即服務(wù)器側(cè))相同的編碼圖樣或規(guī)則,從原始數(shù)據(jù)符號和修復(fù)符號中恢復(fù)出丟失的原始數(shù)據(jù)符號。由于在編碼側(cè)采用(8:4)的編碼圖樣,則解碼側(cè)將依據(jù)約定的源符號數(shù)量8和所收到的修復(fù)符號的數(shù)量2,采用(8:2)的編碼圖樣結(jié)合相應(yīng)的解碼信息(如編碼向量等),使用高斯消元法進行解碼運算。在完成上述解碼操作,并成功解碼獲得相應(yīng)數(shù)據(jù)后,則將恢復(fù)出的RTP1、RTP2數(shù)據(jù)包發(fā)送上層。實施例二在該實施例二中,是在對源塊進行編碼,以生成修復(fù)符號的過程中引入預(yù)定的插入符號,而在生成源塊的過程中并不對原始數(shù)據(jù)進行預(yù)定的插入符號的填充處理。下面將結(jié)合附圖對該實施例中的服務(wù)器側(cè)及終端側(cè)采用的處理過程分別進行說明。(一)服務(wù)器側(cè)服務(wù)器可以向終端發(fā)送控制信息,在相應(yīng)的控制信息中描述與終端側(cè)約定的所述預(yù)定的插入符號的數(shù)據(jù)值(如全0或全1等)、插入符號在源塊中的相對位置等預(yù)設(shè)信息;或者,相應(yīng)的預(yù)設(shè)信息也可以是預(yù)先配置于服務(wù)器側(cè)與終端側(cè)中。如圖7所示,服務(wù)器側(cè)確定待發(fā)送的原始數(shù)據(jù),并通過源塊順序填充模塊(即第二源塊填充單元123)處理獲得相應(yīng)的源塊數(shù)據(jù),之后,再將相應(yīng)的源塊數(shù)據(jù)送入第二編碼模塊進行生成修復(fù)符號的處理,該生成修復(fù)符號的過程如圖8所示,包括依據(jù)設(shè)定的編碼算法、冗余度信息配置,并引入相應(yīng)的預(yù)定的插入符號生成多于實際需發(fā)送的FEC修復(fù)符號,當判斷確定已經(jīng)生成足夠數(shù)量的修復(fù)符號后,將生成的修復(fù)符號作為修復(fù)數(shù)據(jù)輸出。在上述處理過程中,編碼模塊可以在編碼計算每一個FEC修復(fù)符號時加入預(yù)設(shè)插入符號參與運算,具體可以但不限于將預(yù)設(shè)插入符號中的特定集合以特定的順序與源符號進行異或運算,例如,可以將第一個修復(fù)符號由第1、3、5原始符號與預(yù)設(shè)第1符號異或生成,第二個修復(fù)符號由2、3、4、6原始符號與預(yù)設(shè)第2符號進行異或生成,等等。在對生成的修復(fù)符號及原始數(shù)據(jù)進行發(fā)送過程中,可以通過選擇發(fā)送模塊(包括校驗信息選擇單元14和數(shù)據(jù)選擇單元15中的至少一項)根據(jù)預(yù)定的選擇策略選擇出需要的FEC修復(fù)符號,然后合并、封裝為UDP報文發(fā)送至網(wǎng)絡(luò)傳輸;以及將原始數(shù)據(jù)報文加上相應(yīng)的FEC標識信息,再封裝為UDP報文發(fā)送至網(wǎng)絡(luò)傳輸。即相應(yīng)的選擇發(fā)送模塊按照預(yù)設(shè)規(guī)則保留需要的FEC修復(fù)符號,同樣可結(jié)合修復(fù)符號選擇最終發(fā)送的源數(shù)據(jù)包(即原始數(shù)據(jù))。24選擇發(fā)送模塊輸出的信息由發(fā)送模塊將選擇出的FEC修復(fù)符號加上相應(yīng)的FEC標識信息,再封裝為下層數(shù)據(jù)包發(fā)送至網(wǎng)絡(luò)傳輸。(二)終端側(cè)在終端側(cè),若從服務(wù)器側(cè)接收到相應(yīng)的控制信息,且從控制信息中獲取所需預(yù)設(shè)信息,則可以向服務(wù)器側(cè)發(fā)回確認信息;當然,若在終端側(cè)預(yù)先配置相應(yīng)的預(yù)設(shè)信息則無需執(zhí)行接收控制信息及回復(fù)確認信息的操作。參照圖7所示,源塊數(shù)據(jù)插入模塊(即第一原始數(shù)據(jù)接收單元171)收集具有同樣源塊編號的原始數(shù)據(jù)包,,與發(fā)送端采用同樣的規(guī)則填充生成FEC源塊,進而獲得相應(yīng)的原始數(shù)據(jù)。修復(fù)數(shù)據(jù)接收模塊(即校驗信息獲取單元16)收集具有同樣源塊編號的修復(fù)數(shù)據(jù)包,將收到的相關(guān)修復(fù)符號以及解碼相關(guān)信息(如解碼向量)傳遞給第二解碼模塊。如圖9所示,第二解碼模塊將生成的源塊數(shù)據(jù)和接收到的修復(fù)數(shù)據(jù)一起,引入與編碼側(cè)事先約定好的預(yù)設(shè)插入數(shù)據(jù)(即預(yù)定的插入符號)加入編碼運算的逆運算(即FEC解碼處理過程),從而按照設(shè)定的解碼算法恢復(fù)出丟失的原始數(shù)據(jù)符號。在終端側(cè)解碼成功后,便可以將恢復(fù)出的所有數(shù)據(jù)包(即發(fā)送端發(fā)送來的所有原始數(shù)據(jù))發(fā)送給上層。實施例三在該實施例三中,如圖10A和圖10B所示,與實施例一及實施例二提供的實現(xiàn)方案類似,區(qū)別在于相應(yīng)的選擇發(fā)送模塊包括編碼數(shù)據(jù)選擇發(fā)送模塊(相當于校驗信息選擇單元14)和原始數(shù)據(jù)選擇發(fā)送模塊(相當于數(shù)據(jù)選擇單元15)獨立設(shè)置。其中,相應(yīng)的編碼數(shù)據(jù)選擇發(fā)送模塊和原始數(shù)據(jù)選擇發(fā)送模塊可以采用相同的選擇策略對原始數(shù)據(jù)與修復(fù)數(shù)據(jù)進行選擇,也可以采用不同的選擇策略對原始數(shù)據(jù)與修復(fù)數(shù)據(jù)進行選擇。具體地,在服務(wù)器側(cè),可以在發(fā)送數(shù)據(jù)之前,先向終端發(fā)送控制信息,在控制信息中描述與終端側(cè)預(yù)先設(shè)定的插入符號的數(shù)據(jù)值、插入符號在源塊中的相對位置等預(yù)i殳信息;例如,預(yù)定的插入符號為全0時,控制信息中可以描述為插入符號inser舊it^0,插入符號為1010…時,控制信息中可以描述為插入符號inserBit-10…;以及,控制信息中還可以包括間隔均勻插入模式insertMode=0,或者,尾部填充才莫式insertMode-1...;或者,控制信息中也可以包括插入間隔insertStep-1、2、3、…;等等。參照圖10A所示,與實施例一類似,服務(wù)器側(cè)的源塊構(gòu)造模塊將引入預(yù)定的插入符號后獲得的源塊數(shù)據(jù)傳送給第一編碼模塊,以生成相應(yīng)的修復(fù)符號,并傳送給編碼數(shù)據(jù)選擇發(fā)送模塊進行選擇操作,選擇后通過發(fā)送模塊發(fā)給終端側(cè);同時,原始數(shù)據(jù)還傳送到原始數(shù)據(jù)選擇發(fā)送模塊進行選擇,并通過發(fā)送模塊發(fā)給終端側(cè)。終端側(cè)的源塊重構(gòu)模塊接收原始數(shù)據(jù)包,修復(fù)數(shù)據(jù)接收模塊接收修復(fù)符號數(shù)據(jù)包,并分別傳送給第一解碼模塊進行解碼處理,獲得原始數(shù)據(jù),并將恢復(fù)出的數(shù)據(jù)發(fā)送上層。參照圖10B所示,與實施例二類似,將源塊順序填充模塊構(gòu)造的源塊數(shù)據(jù)送入第二編碼模塊,并由第二編碼模塊依據(jù)設(shè)定的編碼算法、冗余度信息配置等信息生成若千FEC修復(fù)符號并傳送給編碼數(shù)據(jù)選擇發(fā)送模塊按照預(yù)定的策略進行選擇操作,選擇后通過發(fā)送模塊發(fā)給終端側(cè);同時,原始數(shù)據(jù)還傳送到原始數(shù)據(jù)選擇發(fā)送模塊進行選擇,并通過發(fā)送模塊發(fā)給終端側(cè)。終端側(cè)的源塊重構(gòu)模塊接收原始數(shù)據(jù)包,修復(fù)數(shù)據(jù)接收模塊接收修復(fù)符號數(shù)據(jù)包,并分別傳送給第二解碼模塊進行解碼處理,獲得原始數(shù)據(jù),并將恢復(fù)出的數(shù)據(jù)發(fā)送上層。在該實施例三中,在編碼數(shù)據(jù)選擇發(fā)送模塊根據(jù)選擇策略選擇出需要的發(fā)送的FEC修復(fù)符號,以及原始數(shù)據(jù)選擇發(fā)送模塊根據(jù)選擇策略選擇出需要的發(fā)送的源數(shù)據(jù)符號的過程中,編碼數(shù)據(jù)選擇發(fā)送模塊與原始數(shù)據(jù)選擇發(fā)送模塊可以通過互相交互信息,以調(diào)整各自采用的選擇策略,從而可以確定相應(yīng)在整體性能上達到最優(yōu)的選擇策略。實施例四在該實施例四中,并不獨立發(fā)送原始數(shù)據(jù),而是直接將編碼獲得的修復(fù)符號中的全部或部分發(fā)送給終端側(cè),以使得終端側(cè)可以獲得發(fā)送端發(fā)送的原26始數(shù)據(jù)。在服務(wù)器側(cè),具體可以通過向終端發(fā)送RTSP(RealTimeStreamingProtocol,實時流協(xié)議)信令的方式,描述與終端側(cè)約定的插入符號的數(shù)據(jù)值、插入符號在源塊中的相對位置等預(yù)設(shè)信息;終端側(cè)接收到服務(wù)器的FEC相關(guān)RTSP信令后,解析出FEC相關(guān)預(yù)設(shè)信息后向服務(wù)器發(fā)回確認信息?;蛘?,相應(yīng)的預(yù)設(shè)相關(guān)信息也可以預(yù)先固定配置于服務(wù)器與終端上。如圖11A所示,在源塊構(gòu)造^t塊引入預(yù)定的插入符號并生成相應(yīng)的源塊數(shù)據(jù)后,將源塊數(shù)據(jù)送入第一編碼模塊,由第一編碼模塊依據(jù)設(shè)定的編碼算法、冗余度信息配置等生成若干編碼符號(即修復(fù)符號),相應(yīng)的編碼符號中包含了數(shù)據(jù)校驗信息和原始數(shù)據(jù);將生成的編碼符號通過選擇發(fā)送模塊按照預(yù)定的策略選擇發(fā)送給終端側(cè)。在終端側(cè)由編碼數(shù)據(jù)接收模塊及第二解碼模塊(相當于第二原始數(shù)據(jù)接收單元173)解碼收到的編碼符號,并恢復(fù)獲得相應(yīng)的發(fā)送端發(fā)送的原始數(shù)據(jù)。如圖11B所示,在源塊順序填充模塊生成源塊數(shù)據(jù)后,由第二編碼模塊引入預(yù)定的插入符號對所述源塊數(shù)據(jù)進行編碼處理,生成相應(yīng)的編碼符號,其中在編碼計算每一個FEC編碼符號時可以加入設(shè)定的插入符號參與編碼運算,相應(yīng)的編碼符號中包含了數(shù)據(jù)校驗信息和原始數(shù)據(jù);將生成的編碼符號通過選擇發(fā)送模塊按照預(yù)定的策略選擇發(fā)送給終端側(cè)。在終端側(cè)由編碼數(shù)據(jù)接收模塊及第二解碼模塊(相當于第二原始數(shù)據(jù)接收單元173)解碼收到的編碼符號,并恢復(fù)獲得相應(yīng)的發(fā)送端發(fā)送的原始數(shù)據(jù)。需要說明的是,本領(lǐng)域普通4支術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲i己十乙體(Read-OnlyMemory,ROM)或卩逸才幾存A者i己十乙體(RandomAccessMemory,RAM)等。綜上所述,本發(fā)明實施例提供的針對分組碼的應(yīng)用層FEC編解碼改進方案不僅能夠在不增加額外發(fā)送冗余的情況下提高接收端恢復(fù)丟失數(shù)據(jù)的能力,而且,還可以在保證數(shù)據(jù)恢復(fù)能力的情況下降低發(fā)送的冗余數(shù)據(jù)的數(shù)量,從而減輕通信過程中的帶寬負擔(dān)。本發(fā)明實施例既可以基于3GPP中的獨立成層FEC方案擴展實現(xiàn),也可獨立結(jié)合其他應(yīng)用層FEC方案實施。進一步地,通過選擇發(fā)送原始數(shù)據(jù)及修復(fù)符號還可以在一定程度上實現(xiàn)針對數(shù)據(jù)包發(fā)送的速率控制操作,增加了數(shù)據(jù)傳輸過程的可控性。以上所述,僅為本發(fā)明較佳的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本
技術(shù)領(lǐng)域:
的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)該以權(quán)利要求的保護范圍為準。權(quán)利要求1、一種基于前向糾錯的數(shù)據(jù)發(fā)送方法,其特征在于,包括獲取待發(fā)送的原始數(shù)據(jù);根據(jù)所述待發(fā)送的原始數(shù)據(jù)及已知的插入符號按照預(yù)定的策略生成對應(yīng)的數(shù)據(jù)校驗信息;發(fā)送所述數(shù)據(jù)校驗信息以及待發(fā)送的原始數(shù)據(jù)。2、根據(jù)權(quán)利要求1所述的方法,其特征在于,所述生成對應(yīng)的數(shù)據(jù)校驗信息的過程包括對待發(fā)送的原始數(shù)據(jù)進行符號填充處理,所述符號填充處理是指按照第一預(yù)定策略將已知的插入符號填充到所述待發(fā)送的原始數(shù)據(jù)中,并根據(jù)完成符號填充處理后的數(shù)據(jù)生成對應(yīng)的數(shù)據(jù)校驗信息;或者,對待發(fā)送的原始數(shù)據(jù)及獲取的已知的插入符號按照第二預(yù)定策略進行運算編碼處理,獲得對應(yīng)的數(shù)據(jù)校驗信息。3、根據(jù)權(quán)利要求1或2所述的方法,其特征在于,發(fā)送所述數(shù)據(jù)校驗信息的步驟具體包括在所述數(shù)據(jù)校驗信息包含的多個修復(fù)符號中選擇一個或多個修復(fù)符號,并發(fā)送選擇的修復(fù)符號。4、根據(jù)權(quán)利要求1或2所述的方法,其特征在于,發(fā)送待發(fā)送的原始數(shù)據(jù)的步驟具體包括將待發(fā)送的原始數(shù)據(jù)獨立于數(shù)據(jù)校驗信息全部發(fā)送;或者,在待發(fā)送的原始數(shù)據(jù)包含的數(shù)據(jù)符號中選擇部分數(shù)據(jù)符號獨立于數(shù)據(jù)校驗信息進行發(fā)送;或者,發(fā)送預(yù)定量的數(shù)據(jù)校驗信息,且根據(jù)所述預(yù)定量的數(shù)據(jù)校驗信息在接收端能夠解碼獲得所述原始數(shù)據(jù)。5、一種基于前向糾錯的數(shù)據(jù)發(fā)送裝置,其特征在于,包括數(shù)據(jù)獲取單元,用于獲取待發(fā)送的原始數(shù)據(jù);校驗信息生成單元,用于根據(jù)所述數(shù)據(jù)獲取單元獲取的待發(fā)送的原始數(shù)據(jù)及已知的插入符號按照預(yù)定的策略生成對應(yīng)的數(shù)據(jù)校驗信息;數(shù)據(jù)發(fā)送單元,用于發(fā)送所述校驗信息生成單元生成的數(shù)據(jù)校驗信息以及數(shù)據(jù)獲取單元獲取的待發(fā)送的原始數(shù)據(jù)。6、根據(jù)權(quán)利要求5所述的裝置,其特征在于,所述校驗信息生成單元具體包括第一源塊填充單元,用于將待發(fā)送的原始數(shù)據(jù)及已知的插入符號按照第一預(yù)定策略寫入到源塊對應(yīng)的存儲空間中作為相應(yīng)的源塊數(shù)據(jù);第一編碼單元,用于對所述第一源塊填充單元發(fā)來的源塊數(shù)據(jù)進行編碼處理,獲得對應(yīng)的數(shù)據(jù)校驗信息;或者,所述校驗信息生成單元具體包括第二源塊填充單元,用于將待發(fā)送的原始數(shù)據(jù)寫入到源塊對應(yīng)的存儲空間中作為相應(yīng)的源塊翁:據(jù);第二編碼單元,用于將所述第二源塊填充單元發(fā)來的源塊數(shù)據(jù)與已知的插入符號按照預(yù)定的第二預(yù)定策略進行運算編碼處理,獲得對應(yīng)的數(shù)據(jù)校驗信息。7、根據(jù)權(quán)利要求5或6所述的裝置,其特征在于,所述數(shù)據(jù)發(fā)送單元還與校驗信息選擇單元連接,該校驗信息選擇單元用于在所述數(shù)據(jù)校驗信息包含的多個修復(fù)符號中選擇一個或多個修復(fù)符號,并將選擇的修復(fù)符號傳遞給所述數(shù)據(jù)發(fā)送單元。8、根據(jù)權(quán)利要求5或6所述的裝置,其特征在于,所述數(shù)據(jù)發(fā)送單元直接與所述數(shù)據(jù)獲取單元連接,將待發(fā)送的原始數(shù)據(jù)全部發(fā)送;或者,所述數(shù)據(jù)發(fā)送單元還與數(shù)據(jù)選擇單元連接,通過該數(shù)據(jù)選擇單元在待發(fā)送的原始數(shù)據(jù)包含的數(shù)據(jù)符號中選擇部分數(shù)據(jù)符號,并通過所述數(shù)據(jù)發(fā)送單元進行發(fā)送;或者,所述數(shù)據(jù)發(fā)送單元與校驗信息生成單元連接,僅發(fā)送預(yù)定量的數(shù)據(jù)校驗信息,且根據(jù)所述預(yù)定量的數(shù)據(jù)校驗信息在接收端能夠解碼獲得所述原始數(shù)據(jù)。9、一種基于前向糾錯的數(shù)據(jù)接收方法,其特征在于,包括獲取數(shù)據(jù)校驗信息,所述數(shù)據(jù)校驗信息是在發(fā)送端根據(jù)待發(fā)送的原始數(shù)據(jù)及已知的插入符號按照預(yù)定的策略生成;根據(jù)已接收到的數(shù)據(jù)校驗信息及已知的插入符號恢復(fù)獲得發(fā)送端需要傳輸?shù)脑紨?shù)據(jù)。10、根據(jù)權(quán)利要求9所述的方法,其特征在于,所述恢復(fù)獲得發(fā)送端發(fā)送的原始數(shù)據(jù)的過程包括從接收到的原始數(shù)據(jù)包中獲取原始數(shù)據(jù),對獲取的原始數(shù)據(jù)進行符號填充處理,并結(jié)合所述數(shù)據(jù)校驗信息進行解碼操作,恢復(fù)獲得丟失的原始數(shù)據(jù),所述符號填充處理是指按照第一預(yù)定策略將已知的插入符號填充到接收到的原始數(shù)據(jù)中;從接收到的原始數(shù)據(jù)包中獲取原始數(shù)據(jù),從接收到的數(shù)據(jù)校驗信息數(shù)據(jù)包中解析獲得數(shù)據(jù)校驗信息,結(jié)合接收到的數(shù)據(jù)校驗信息、接收到的原始數(shù)據(jù)及已知的插入符號按照第二預(yù)定策略恢復(fù)獲得丟失的原始數(shù)據(jù);或者,從接收到的數(shù)據(jù)包中獲取數(shù)據(jù)校驗信息,并對接收到的數(shù)據(jù)校驗信息及已知的插入符號按照第一或第二預(yù)定策略進行解碼數(shù)據(jù)恢復(fù)處理,恢復(fù)獲得發(fā)送端發(fā)送的所有原始數(shù)據(jù)。11、一種基于前向糾錯的數(shù)據(jù)接收裝置,其特征在于,包括校驗信息獲取單元,用于獲取數(shù)據(jù)校驗信息,所述數(shù)據(jù)校驗信息是在發(fā)送端根據(jù)待發(fā)送的原始數(shù)據(jù)及已知的插入符號按照預(yù)定的策略生成;原始數(shù)據(jù)獲取單元,用于根據(jù)所述校驗信息獲取單元獲取的數(shù)據(jù)校驗信息及已知的插入符號恢復(fù)獲得發(fā)送端需要傳輸?shù)脑紨?shù)據(jù)。12、根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述原始數(shù)據(jù)獲取單元具體包括第一原始數(shù)據(jù)接收單元,用于從接收到的數(shù)據(jù)包中獲取發(fā)送端發(fā)送的原始數(shù)據(jù);丟失數(shù)據(jù)恢復(fù)單元,用于對從第一原始數(shù)據(jù)接收單元獲取的原始數(shù)據(jù)進行符號填充處理,并結(jié)合所述數(shù)據(jù)校驗信息進行解碼操作,恢復(fù)獲得丟失的原始數(shù)據(jù),所述符號填充處理是指按照第一預(yù)定策略將已知的插入符號填充到所述第一原始數(shù)據(jù)接收單元接收的原始數(shù)據(jù)中;或者,用于對所述校驗信息獲取單元獲取的數(shù)據(jù)校驗信息及已知的插入符號按照第二預(yù)定策略進行解碼處理,恢復(fù)獲得丟失的原始數(shù)據(jù);或者,所述原始數(shù)據(jù)獲取單元具體包括第二原始數(shù)據(jù)接收單元,用于對所述校驗信息獲取單元獲取的數(shù)據(jù)校驗信息、已知的插入符號和已接收到的原始數(shù)據(jù)按照第一或第二預(yù)定策略進行解碼處理,恢復(fù)獲得發(fā)送端發(fā)送的所有原始數(shù)據(jù)。13、一種基于前向糾錯的數(shù)據(jù)傳輸系統(tǒng),其特征在于,包括權(quán)利要求5-8任一項所述的基于前向糾錯的數(shù)據(jù)發(fā)送裝置及權(quán)利要求9-12任一項所述的基于前向糾錯的數(shù)據(jù)接收裝置。全文摘要一種基于前向糾錯的數(shù)據(jù)傳輸方法、裝置及系統(tǒng),其主要包括在獲取待發(fā)送的原始數(shù)據(jù)后,根據(jù)所述待發(fā)送的原始數(shù)據(jù)及已知的插入符號按照預(yù)定的策略生成對應(yīng)的數(shù)據(jù)校驗信息,并按預(yù)定的策略選擇發(fā)送所述數(shù)據(jù)校驗信息以及待發(fā)送的原始數(shù)據(jù)。相應(yīng)的,接收端則從接收到的數(shù)據(jù)包中獲取原始數(shù)據(jù)(可能會因為傳送過程中的數(shù)據(jù)丟失而不完整)和數(shù)據(jù)校驗信息,并根據(jù)數(shù)據(jù)校驗信息及已知的插入符號恢復(fù)獲得發(fā)送端發(fā)送的完整的原始數(shù)據(jù)。本發(fā)明實施例中,由于其采用了在發(fā)送端增加生成數(shù)據(jù)校驗信息的數(shù)據(jù)信息量的方式,且增加的數(shù)據(jù)信息為發(fā)送端和接收端已知,因而可以使得相應(yīng)的在接收端的差錯恢復(fù)性能大大提高,進而有效改善了FEC技術(shù)的糾刪能力。文檔編號H04L1/00GK101674152SQ200810222068公開日2010年3月17日申請日期2008年9月8日優(yōu)先權(quán)日2008年9月8日發(fā)明者庚張,艾常權(quán),兵陳,魯亞東申請人:華為技術(shù)有限公司