亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

解碼方法和裝置及云存儲方法和系統(tǒng)的制作方法_3

文檔序號:9290087閱讀:來源:國知局
,輸入的數(shù)據(jù)集合中超過了 m個分片,系統(tǒng)會優(yōu)先選擇其中所有的原數(shù)據(jù)分片,盡可能少的使用校驗分片,從而提高了解碼效率。
[0056]在本發(fā)明還提供了一種解碼處理裝置,該裝置用于實現(xiàn)上述實施例及優(yōu)選實施方式,已經(jīng)進行過說明的不再贅述。如以下所使用的,術語“模塊”可以是實現(xiàn)預定功能的軟件和/或硬件的組合。盡管以下實施例所描述的裝置較佳地以軟件來實現(xiàn),但是硬件,或者軟件和硬件的組合的實現(xiàn)也是可能并被構想和實施的。
[0057]圖2為本發(fā)明的一個實施例中的解碼裝置的結構示意圖,如圖2所示,該解碼裝置包括:數(shù)據(jù)獲取模塊21和數(shù)據(jù)解碼模塊22。其中,數(shù)據(jù)獲取模塊21用于讀取輸入緩沖區(qū)的待解碼數(shù)據(jù),將讀取到的包括原數(shù)據(jù)分片和校驗數(shù)據(jù)分片的待解碼數(shù)據(jù)移送至輸出模塊,并在輸出模塊中對待解碼數(shù)據(jù)進行處理;數(shù)據(jù)解碼模塊22用于根據(jù)處理后輸出模塊中原數(shù)據(jù)區(qū)和待解碼區(qū)域中數(shù)據(jù)分片的數(shù)量,選取相應的數(shù)據(jù)分片進行解碼操作,將解碼操作結果組合成全部原數(shù)據(jù)。
[0058]數(shù)據(jù)獲取模塊21具體包括:輸入緩沖區(qū)模塊211、解碼建立模塊212以及判斷和讀取模塊213。
[0059]輸入緩沖區(qū)模塊211,用于存放待解碼的數(shù)據(jù)分片,既包括原數(shù)據(jù)分片,也包括校驗數(shù)據(jù)分片,最小容量為m,最大容量為m+n。數(shù)據(jù)分片進入后存放在輸入緩沖區(qū)內(nèi),當數(shù)據(jù)分片被處理后,移出輸入緩沖區(qū)。輸入緩沖區(qū)內(nèi)的數(shù)據(jù)分片可以按照輸入順序處理,也可按照某種規(guī)則進行處理,例如優(yōu)先處理校驗數(shù)據(jù)分片,是否優(yōu)先可以取決于判斷和讀取模塊。
[0060]解碼建立模塊212,用于建立解碼時需要的數(shù)據(jù),包括獲取原數(shù)據(jù)文件編碼時的元數(shù)據(jù),包括原數(shù)據(jù)分片數(shù)量m、校驗數(shù)據(jù)分片數(shù)量η、文件長度、最后結尾是否補O之類的編碼信息。通過這些元數(shù)據(jù),解碼建立模塊創(chuàng)建原數(shù)據(jù)編碼時的生成矩陣Code[m] [η]。生成矩陣用于在編碼時通過該矩陣生成各個校驗碼。
[0061]判斷和讀取模塊213,用于監(jiān)視輸入緩沖區(qū),判斷解碼操作是否超時,以及是否可以進入到下一步矩陣求逆操作。如果輸入緩沖區(qū)有數(shù)據(jù)分片,則優(yōu)先讀取校驗數(shù)據(jù)分片并處理;否則處理原數(shù)據(jù)分片。此處的優(yōu)先讀取校驗數(shù)據(jù)分片不是必須的,也可以按照先進先出的原則逐個讀取輸入的數(shù)據(jù)分片并處理。處理的原則是:如果是校驗數(shù)據(jù)分片,則將其與輸出模塊待解碼區(qū)域相應位置處的已有數(shù)據(jù)進行異或操作,并將異或結果作為該位置處新的已有數(shù)據(jù);如果是原數(shù)據(jù)分片,則將其移動到輸出模塊原數(shù)據(jù)區(qū)的相應位置處,同時將其分別乘以生成矩陣對應行的全部元素,將各結果分別與輸出模塊待解碼區(qū)域相應位置處的已有數(shù)據(jù)進行異或操作,并將異或結果作為該位置處新的已有數(shù)據(jù)。
[0062]判斷和讀取模塊213循環(huán)處理輸入緩沖區(qū)內(nèi)的所有數(shù)據(jù)分片,包括后來在解碼時新加入的數(shù)據(jù)分片,直到輸入緩沖區(qū)為空或者超時(如果超時,則解碼失敗)。當輸入緩沖區(qū)數(shù)據(jù)分片處理完畢且輸出模塊的原數(shù)據(jù)區(qū)和待解碼區(qū)域的數(shù)據(jù)分片數(shù)量之和大于等于m后,即進入下一步數(shù)據(jù)解碼模塊22進行解碼處理。
[0063]數(shù)據(jù)解碼模塊22具體包括:矩陣求逆模塊221、計算模塊222和輸出模塊223。
[0064]矩陣求逆模塊221,原則是盡可能使用較多的原數(shù)據(jù)分片和較少的待解碼數(shù)據(jù)分片。將輸出模塊內(nèi)全部原數(shù)據(jù)分片都使用后(共計m-k個),再選用輸出模塊待解碼區(qū)域的k個數(shù)據(jù)分片(組成解碼矩陣P’ [k])。根據(jù)丟失的k個原數(shù)據(jù)分片的位置、和選用待解碼區(qū)域的k個數(shù)據(jù)分片的位置,從生成矩陣Code [m] [η]中選取對應的元素構成選定矩陣Gl [k][k],通過傳統(tǒng)矩陣求逆方式獲得其逆矩陣作為解碼矩陣Decode [k] [k];計算模塊222,將待解碼矩陣與解碼矩陣相乘,獲得丟失的那些原數(shù)據(jù)分片。將計算出的原數(shù)據(jù)分片插入輸出模塊原數(shù)據(jù)區(qū)的相應位置處;輸出模塊223,用于將原數(shù)據(jù)區(qū)的全部m個原數(shù)據(jù)分片按順序組裝為原數(shù)據(jù)文件并輸出。
[0065]優(yōu)選地,輸出模塊223進一步包括原數(shù)據(jù)區(qū)2231和待解碼區(qū)域2232。其中原數(shù)據(jù)區(qū)2231共計m個位置,分別對應原有的m個原數(shù)據(jù)分片。輸入緩沖區(qū)內(nèi)的每個原數(shù)據(jù)分片Di,都會被判斷和讀取模塊213通過移動(或復制)到輸出模塊的原數(shù)據(jù)區(qū)2231相應的第i位置處。待解碼區(qū)域2232共計η個位置,分別對應原有的η個校驗數(shù)據(jù)分片。輸入緩沖區(qū)內(nèi)的每個校驗數(shù)據(jù)分片Pj,都會被判斷和讀取模塊213和輸出模塊的待解碼區(qū)域2232相應的第j個位置處已有數(shù)據(jù)Pj’進行XOR操作并將結果保存為新P j’。對于輸入緩沖區(qū)內(nèi)的每個原數(shù)據(jù)分片Di,也會被判斷和讀取模塊213乘以Code[i] [j],并和Pj’進行XOR操作并將結果保存為新Pj’。
[0066]本實施例提供的解碼裝置中解決了現(xiàn)有基于RS糾刪碼的解碼方法和系統(tǒng)中,存在的通訊和解碼過程完全串行,解碼速度慢,系統(tǒng)不靈活,以及編碼率低的問題。由于系統(tǒng)解碼的開始時間不再受制于獲取的第m個分片,可進一步提高解碼速度,特別適用于網(wǎng)絡環(huán)境較差的系統(tǒng),如基于公網(wǎng)的P2P下載環(huán)境和低速網(wǎng)絡。在數(shù)據(jù)通訊領域采用本發(fā)明,可以做到邊收聽數(shù)據(jù)邊解碼,大大提高了解碼效率。
[0067]圖3是本發(fā)明一個優(yōu)選實施例的基于RS糾刪碼的快速解碼方法的流程圖,如圖3所示,該方法包括如下步驟:
[0068]步驟S302,解碼建立模塊獲取文件的元數(shù)據(jù)信息。
[0069]具體地,元數(shù)據(jù)信息包括編碼的分片數(shù)量信息m和η、文件長度、最后結尾是否補O之類的編碼信息。如果原數(shù)據(jù)文件是按照Chunk(大的分塊)存儲的,則也包括Chunk的分片信息和長度。通過m和n,解碼建立模塊建立原來編碼時的生成矩陣Code [m] [η]。編碼時通過該矩陣生成η個校驗碼,同時,也初始化逆矩陣Decode [η] [η],該矩陣最多存放η*η的矩陣信息。目前Decode數(shù)組無數(shù)據(jù)。如果最終輸入緩沖區(qū)內(nèi)有m_k個原數(shù)據(jù)分片,只需要使用k個校驗數(shù)據(jù)分片,則逆矩陣只需要Decode [k] [k]存放數(shù)據(jù)。
[0070]步驟S304,判斷和讀取模塊,檢查輸入緩沖區(qū)是否為空。
[0071 ] 具體地,如果輸入緩沖區(qū)內(nèi)的數(shù)據(jù)為空,則執(zhí)行步驟S308,如果輸入緩沖區(qū)內(nèi)的數(shù)據(jù)不為空,則執(zhí)行步驟S306。
[0072]步驟S306,如果輸入緩沖區(qū)內(nèi)有數(shù)據(jù),判斷和讀取模塊檢查輸入緩沖區(qū)內(nèi)是否有校驗數(shù)據(jù)分片,如果有,則執(zhí)行步驟S310 ;如果沒有,則執(zhí)行步驟S312。
[0073]作為本發(fā)明的另一種實現(xiàn)方案,在本步驟可以做作如下修正:首先順序從輸入緩沖區(qū)內(nèi)取出一個數(shù)據(jù)分片,然后再判斷其是否是校驗數(shù)據(jù)分片。如果是校驗數(shù)據(jù)分片,執(zhí)行步驟S310,否則執(zhí)行步驟S312。
[0074]步驟S308,在輸入緩沖區(qū)為空的情況下,判斷和讀取模塊檢查輸出模塊是否有m個可用數(shù)據(jù)分片。
[0075]具體地,可用數(shù)據(jù)分片總數(shù)是輸出模塊的原數(shù)據(jù)區(qū)和待解碼區(qū)域數(shù)據(jù)分片數(shù)量的總和。如果有大于等于m個數(shù)據(jù)分片,則執(zhí)行步驟S320 ;如果不超過m個,則執(zhí)行步驟S316。
[0076]步驟S310,如果輸入緩沖區(qū)有校驗數(shù)據(jù)分片,判斷和讀取模塊將其與輸出模塊的待解碼區(qū)域的相應位置處的已有數(shù)據(jù)進行異或操作,并將異或結果作為該位置處新的已有數(shù)據(jù),隨后轉(zhuǎn)步驟304。
[0077]步驟S312,如果輸入緩沖區(qū)有原數(shù)據(jù)分片,判斷和讀取模塊將Di移動或復制到輸出模塊的原數(shù)據(jù)區(qū)的相應位置處。轉(zhuǎn)步驟S314。
[0078]步驟S314,判斷和讀取模塊將Di分別乘以Code [i][j],并將結果與輸出模塊的待解碼區(qū)域的相應位置處的已有數(shù)據(jù)進行異或操作,并將異或結果作為該位置處新的已有數(shù)據(jù),即執(zhí)行Pj’ ? = Di*Code[i] [j]操作,接著執(zhí)行步驟S304。
[0079]步驟S316,判斷和讀取模塊判斷解碼操作是否超時。
[0080]具體地,如果沒有超時,則執(zhí)行步驟S304 ;如果超時,則執(zhí)行步驟S318。
[0081]步驟S318,解碼因為超時而失敗,判斷和讀取模塊報告解碼失敗消息。
[0082]此時,解碼操作結束。
[0083]步驟S320,輸出模塊已經(jīng)有至少m個數(shù)據(jù)分片了(包括原數(shù)據(jù)區(qū)和待解碼區(qū)域的數(shù)據(jù)分片)。
[0084]讀取和判斷模
當前第3頁1 2 3 4 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1