專利名稱:P2p流媒體系統(tǒng)中緩存消息的編碼方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及P2P流媒體領(lǐng)域,尤其涉及一種P2P流媒體系統(tǒng)中緩存消息的編碼方 法及系統(tǒng)。
背景技術(shù):
在現(xiàn)有I^eer to Peer (P2P)流媒體系統(tǒng)中,流媒體內(nèi)容被切割成以數(shù)據(jù)塊(chunk) 為單位的連續(xù)的數(shù)據(jù)流在節(jié)點(Peer)間傳輸,每個chunk由唯一的chunk id標識。節(jié) 目內(nèi)容的共享和交換都依賴于節(jié)點間交換的描述節(jié)點緩存狀態(tài)的緩存消息(簡稱BM)來 完成。在某一時刻t,節(jié)點下載到從chunk Idn^ljchimk 之間的部分數(shù)據(jù),與之相對 應(yīng),一個緩存消息(BM)通常包括兩部分重要信息緩存節(jié)目數(shù)據(jù)塊的起始位置(簡稱偏 移量或Offset),以及從這個起始位置開始,數(shù)據(jù)塊的本地下載完成情況(簡稱比特圖或 bitmap)——由0/1比特序列構(gòu)成(0/1分別代表未下載/已下載)。其中bitmap的長度標 志了節(jié)點緩存的長度。緩存越大,抵抗網(wǎng)絡(luò)攪動的能力越強,連續(xù)播放的能力越好?,F(xiàn)有大 多數(shù)系統(tǒng)為了取得好的觀看效果而采用大緩存,但犧牲了播放時延,因此描述緩存狀態(tài)的 BM 一般有較大的長度,如UUke的BM描述大約400多個數(shù)據(jù)塊,PPLive則長達2000個數(shù) 據(jù)塊。如此長的BM給系統(tǒng)帶來較大的協(xié)議開銷。
BM在Peer間的交換頻率影響了數(shù)據(jù)塊的擴散速度和網(wǎng)絡(luò)共享環(huán)境。為了方便數(shù) 據(jù)塊在Peer間的共享,Peer間需要不斷地快速的交換BM,速度越快,越有利于數(shù)據(jù)塊的快 速分發(fā)。根據(jù)測量UUSee是5秒交換一次,PPLive是4秒。
BM的長度和交換頻率決定了這部分信息在P2P流媒體系統(tǒng)中的開銷。現(xiàn)有系統(tǒng) 的這一開銷比較大;若要通過提高BM交互頻率來提高系統(tǒng)性能,則會進一步增大這部分開 銷,因此現(xiàn)有的BM交互方法也限制了通過這一途徑提高系統(tǒng)質(zhì)量的余地。
傳統(tǒng)方法直接在Peer間交互原始的BM消息。為了壓縮原始BM長度,一些系統(tǒng)采 用了不同的壓縮方法對原始BM進行壓縮,如Huffman壓縮、游程編碼和字典壓縮等,這些方 法建立在對原始的BM的0、1序列的簡單特征統(tǒng)計規(guī)律上,采用了通用的數(shù)據(jù)壓縮手段,使 得傳送BM所需的信息長度有所減少;但是,這種壓縮由于沒有考慮到不同BM序列之間的相 關(guān)性,因此系統(tǒng)開銷不能得到很好的降低。發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種P2P流媒體系統(tǒng)中緩存消息的編碼方法及系統(tǒng),基于 本發(fā)明能夠大幅度降低緩存消息間交互信息的長度,進一步降低系統(tǒng)開銷。
本發(fā)明利用了 peer間交互的BM的相關(guān)性,其基本原則是第一、一個Peer無需向 對方發(fā)送(根據(jù)對方的BM確認的)那些對方已經(jīng)下載到的chunk的信息;第二、一個Peer 無需再向?qū)Ψ綀蟾婺切┰?jīng)在上次BM報告中已經(jīng)下載到的chunk信息。
一方面,本發(fā)明一種P2P流媒體系統(tǒng)中緩存消息的編碼方法,包括如下步驟緩存 消息準備步驟,獲取對端最新確認收到的第一緩存消息;讀取所述對端最新發(fā)送的第二緩存消息,獲取待發(fā)送給所述對端的第三緩存消息;最大偏移量值計算步驟,計算所述第二緩 存消息和所述第三緩存消息的最大偏移量值;按需增量序列生成步驟,參照所述第二緩存 消息中所有大于所述最大偏移量值的比特信息,確定對端的已知信息;并剔除所述第三緩 存消息中的所述已知信息,生成按需增量序列;按需增量緩存消息生成步驟,基于所述按需 增量序列,添加第三緩存消息和所述第二緩存消息的偏移量標識符,生成按需增量緩存消 息;發(fā)送步驟,將該按需增量緩存消息發(fā)送至對端。
上述編碼方法,優(yōu)選所述按需增量序列生成步驟中,所述對端的已知信息進一步 通過參照所述第一緩存消息和所述第二緩存消息中所有大于所述最大偏移量值的比特信 息來確定;并且所述按需增量緩存消息發(fā)送步驟中,所述按需增量緩存消息進一步通過如 下方式確定基于所述按需增量序列,添加第三緩存消息、第二緩存消息和第一緩存消息的 偏移量標識符。
上述編碼方法,優(yōu)選所述按需增量序列生成步驟中,所述按需增量序列通過如下 方式確定將第一緩存消息和第二緩存消息中所有大于最大的偏移量值的比特位置進行 “或”運算,空位置按0計算,得到參照序列;依據(jù)所述參照序列中值為0的比特位置,順序提 取第三緩存消息中對應(yīng)位置的比特值,該比特值所組成的序列給即為按需增量序列。
上述編碼方法,優(yōu)選所述按需增量序列生成步驟和所述按需增量緩存消息發(fā)送步 驟之間,還設(shè)置有壓縮步驟,對所述按需增量序列進行壓縮,獲取壓縮的按需增量序列; 并且,所述按需增量緩存消息發(fā)送步驟中,基于所述壓縮的按需增量序列添加所述偏移量 標識符以生成所述按需增量緩存消息。
上述編碼方法,優(yōu)選在所述按需增量緩存消息生成步驟和所述發(fā)送步驟之間,還 設(shè)置有壓縮步驟,對所述按需增量緩存消息進行壓縮處理。
另一方面,本發(fā)明還公開了一種P2P流媒體系統(tǒng)中緩存消息的編碼系統(tǒng),包括緩 存消息準備模塊,獲取對端最新確認收到的第一緩存消息;讀取所述對端最新發(fā)送的第二 緩存消息,獲取待發(fā)送給所述對端的第三緩存消息;最大偏移量值計算模塊,用于計算所述 第二緩存消息和所述第三緩存消息的最大偏移量值;按需增量序列生成模塊,用于參照所 述第二緩存消息中所有大于所述最大偏移量值的比特信息,確定對端的已知信息;并剔除 所述第三緩存消息中的所述已知信息,生成按需增量序列;按需增量緩存消息生成模塊,用 于基于所述按需增量序列,添加第三緩存消息和所述第二緩存消息的偏移量標識符,生成 按需增量緩存消息;發(fā)送模塊,用于將該按需增量緩存消息發(fā)送至對端。
上述編碼系統(tǒng),優(yōu)選所述按需增量序列生成模塊中,所述對端的已知信息進一步 通過參照所述第一緩存消息和所述第二緩存消息中所有大于所述最大偏移量值的比特信 息來確定;并且所述按需增量緩存消息發(fā)送模塊中,所述按需增量緩存消息進一步通過如 下方式確定基于所述按需增量序列,添加第三緩存消息、第二緩存消息和第一緩存消息的 偏移量標識符。
上述編碼系統(tǒng),優(yōu)選所述按需增量序列生成模塊中,所述按需增量序列通過如下 方式確定將第一緩存消息和第二緩存消息中所有大于最大的偏移量值的比特位置進行 “或”運算,空位置按0計算,得到參照序列;依據(jù)所述參照序列中值為0的比特位置,順序提 取第三緩存消息中對應(yīng)位置的比特值,該比特值所組成的序列給即為按需增量序列。
上述編碼系統(tǒng),優(yōu)選所述按需增量序列生成模塊和所述按需增量緩存消息發(fā)送模塊之間,還設(shè)置有第一壓縮模塊,用于對所述按需增量序列進行壓縮,獲取壓縮的按需增 量序列;并且,所述按需增量緩存消息發(fā)送模塊中,基于所述壓縮的按需增量序列添加所述 偏移量標識符以生成所述按需增量緩存消息。
上述編碼系統(tǒng),優(yōu)選在所述按需增量緩存消息生成模塊和所述發(fā)送模塊之間,還 設(shè)置有第二壓縮模塊,對所述按需增量緩存消息進行壓縮處理。
相對于現(xiàn)有技術(shù)而言,本發(fā)明不僅利用一個peer產(chǎn)生的連續(xù)的BM序列之間的相 關(guān)性,而且充分利用了 peer間交互的BM的相關(guān)性,從而能夠大幅度降低交互信息的長度, 降低開銷;并且交互間隔越短、交互頻率越快,由于相關(guān)性越強而使編碼越短。
圖1為本發(fā)明一種P2P流媒體系統(tǒng)中緩存消息的編碼方法實施例的步驟流程圖2為按需增量BM編碼示意圖3為本發(fā)明一種P2P流媒體系統(tǒng)中緩存消息的編碼方法實施例的初始化過程的 流程圖4為本發(fā)明一種P2P流媒體系統(tǒng)中緩存消息的編碼方法實施例的發(fā)送過程流程 圖5為與本發(fā)明P2P流媒體系統(tǒng)中緩存消息的編碼方法實施例的相對應(yīng)的接收過 程流程圖6為本發(fā)明P2P流媒體系統(tǒng)中緩存消息的編碼系統(tǒng)實施例的結(jié)構(gòu)框圖。
具體實施方式
為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和具體實 施方式對本發(fā)明作進一步詳細的說明。
本發(fā)明提出了一種全新的BM壓縮編碼和交互設(shè)計,定義為按需增量BM的設(shè)計,這 種方法建立在深入分析BM序列相關(guān)性的基礎(chǔ)之上;并且普遍適用于現(xiàn)有的基于P2P技術(shù)的 流媒體系統(tǒng)。本發(fā)明基于如下思想在P2P流媒體系統(tǒng)中,BM的主要作用是在peer之間交 互數(shù)據(jù)塊的有無信息,從而使peer可以確認對方有哪些數(shù)據(jù)可供下載?,F(xiàn)有P2P流媒體系 統(tǒng)中,peer間須通報各自完整的BM序列,而沒有考慮對方的需要。實際上,對于一個給定的 peer x,他只需要其鄰居peer y告訴他那些自己沒有而鄰居y有的數(shù)據(jù)塊信息就夠了,這 樣可以在很大程度上減小BM的冗余信息。這正是我們設(shè)計按需增量BM的基本出發(fā)點一 個peer根據(jù)自己最新發(fā)送過的且已得到對方確認的BM(稱為本地參照BM)和最新接收到 的對方的BM(稱為對方參照BM),去除下一個待發(fā)送的BM的冗余信息。因為這一壓縮過程 的主要特點是針對對方的需求而生成的,因此我們稱以上過程為按需增量BM的編碼過程。 基于類似的過程可以進行解碼。
需要注意的是,peer間通過交換按需增量BM而獲得的對對方緩存的認知可能并 不完整,換句話說,peer χ的BMi與peer y根據(jù)接收到的peer χ的對應(yīng)的按需增量解碼 后得到的BMi并不完全相同。但是這些不同之處對雙方的共享信息的可用性不會造成任何 影響,因為那些不同之處一定會發(fā)生在以下這些比特位置這些比特位置對應(yīng)的chunk至 少存在于雙方中的一個peer上;或相應(yīng)比特位置已經(jīng)過期和無效。因此按需增量BM的設(shè)計是可行的。在明確上述區(qū)別之后,為了方便描述,在后面的敘述中,我們在收發(fā)雙方用相 同的符號描述一個對應(yīng)的BM。
P2P流媒體系統(tǒng)中緩存消息的編碼方法實施例
參照圖1,圖1為本發(fā)明一種P2P流媒體系統(tǒng)中緩存消息的編碼方法實施例的步驟 流程圖,包括如下步驟
S110,獲取對端最新確認收到的第一緩存消息;讀取所述對端最新發(fā)送的第二緩 存消息,獲取待發(fā)送給所述對端的第三緩存消息;也就是說,該步驟緩存以往發(fā)送過的若干 個(定義得到對方確認的最新的為第一緩存消息BM1)BM ;緩存以往已解壓縮的接收到的最 近若干個(定義接收到的最新的為第二緩存消息BM2)BM ;從高層模塊接收待發(fā)送的第三緩 存消息BM3 ;S120,計算出BM2和BM3的最大偏移量值max_offset ;S130,參照BM1和BM2所 有大于最大偏移量值max_0ffSet的比特信息,剔除BM3中對端已知的信息,保留對端未知 的信息和新增信息,生成按需增量序列ABMxy ;S140,在所述按需增量序列的基礎(chǔ)上,添加 BM3、BM2和BM1的偏移量標識符,生成按需增量BM ;S150,將按需增量發(fā)送到對端。
事實上,BM1, BM2和BM3是為了便于描述方法的過程才定義的。設(shè)通信雙方為A和 B,那么A會按一定周期向B發(fā)送BM,B也會以同樣的周期發(fā)送BM給A。那么從A端看所有 交互的 BM 序列將是(假定 A 先發(fā)送):BMa1-BMb1-BMA2-BMB2-BMA3-BMB3...
在本發(fā)明中,我們站在某個(假定A的)角度,描述A向B發(fā)送BM的過程,那么A 在壓縮BMai時,須參照的過去的BM(Α的和B的)都是0,因此此時第一緩存BM1為空,BM2也 為空,BM3指的是BMai ;A在壓縮BMa2時,須參照的過去的BM分別是BMai的和BMbi,因此此時 第一緩存BM1指的是BMA1,BM2指的是BMB2, BM3指的是ΒΜΑ2。依次類推。
或者換個說法描述=BM1定義為本端已發(fā)送過的,并且已得到對端確認的最新的 BM ;BM2定義為本端接收到的,對端發(fā)送的最新的BM ;BM3定義為本端待壓縮和發(fā)送(給對 端)的BM ;BM3的壓縮需要參照BM1和BM2的信息。如果不考慮網(wǎng)絡(luò)丟包和時延,那么按時 間順序觀察到的2個發(fā)送的BM(BM1和BM3)之間收到的為ΒΜ2。
按需增量編解碼包含3個處理過程,分別是按需增量編解碼器的初始化、按需增 量的編碼和發(fā)送、按需增量的接收和解碼。下面分步描述不同處理過程。
參照圖2至圖4,進一步對本發(fā)明所涉及的說明按需增量的BM的編碼過程進行詳 細的說明。
按需增量編解碼器的初始化過程
對按需增量編解碼過程涉及到的必須的內(nèi)存、變量和指針等參數(shù)進行初始化。包 括
步驟1 為本地參照BM和對方參照BM分配2個循環(huán)緩存區(qū),總大小至少為 (1^+1 ) XBM最大長度。其中Ic1和1 分別是預(yù)設(shè)的本地和對方參照BM的個數(shù),通常可取Ic1 =1 °
步驟2 初始化“本地參照BM緩存表"BT1,用于存貯最新Ic1個發(fā)送過的原始BM ;初 始化BT1的寫指針WptrjDt1,指向BT1的第一個BM入口位置;初始化BT1的確認指針acked_ Ptr為空,用于記錄來自對方的對最近發(fā)送的BM的確認;
步驟3 初始化“對方參照BM緩存表” BT2,用于存貯最新1 個接收到的已解碼的 BM ;初始化BT2的寫指針wptr_bt2,指向BT2的第一個BM入口位置;初始化BT2的讀指針curr_ptr為空,用于標明報告的最新BM。
桉需增量的編碼和發(fā)送
以peer χ向peer y發(fā)送按需增量BM的編碼過程來說明處理過程。設(shè)peer χ新 產(chǎn)生待發(fā)送的ΒΜ3。
步驟1 分配并初始化按需增量序列bit_seq的緩存;讀入待發(fā)送的BM3,按照 BT1的寫指針WptrjDt1存入BT1,然后WptrjDt1指向BT1的下一入口 ;根據(jù)BT1的確認指針 acked_ptr,讀入peer χ的本地參照ΒΜ,設(shè)為BM1 (這是經(jīng)peer y確認已經(jīng)接收到的peer χ的最新發(fā)送的BM),若acked_ptr為空,則設(shè)置BM1的offset遠遠小于BM3的offset且 bitmap長度為0 ;根據(jù)BT2的讀指針curr_ptr讀取對方參照BM,設(shè)為BM2 (即對方y(tǒng)發(fā)送到 χ的最新BM),如curr_ptr為空,則設(shè)置BM2的offset遠遠小于BM3的offset且bitmap長 度為0 ;
步驟2 計算出BM2和BM3中最大的偏移量值,設(shè)為maxjffset (圖1所示的例子 中為O3)。對peer y而言,只有chunk_id大于該值的數(shù)據(jù)塊才有意義;
步驟3 從chunk id = offset_max開始遞增到BM3標識的最大chunk id范圍內(nèi), 按位對BM1和BM2相應(yīng)的chunk id位置的值進行或操作,若BM1或BM2在相應(yīng)位置上沒有數(shù) 據(jù),則按0值計,最后得到編碼前的參照序列,設(shè)為ref_seq。在這個序列中,1的位置說明 對應(yīng)的chunk本地已經(jīng)擁有或/和對方已經(jīng)擁有,對方y(tǒng) —定也有相同的認知,因此,這些 值為1的位置不需再次告知對方y(tǒng) ;而0的位置說明相應(yīng)數(shù)據(jù)塊雙方過去都沒有,因此,BM3 中對應(yīng)這些0的chunk位置的所有比特值形成的序列就是所需的按需增量序列ABMxy,。
步驟4 根據(jù)ref_Seq對應(yīng)的每個Chunk ID位置i,從左向右,依次檢查ref_Seq 的比特值,如為1則跳過;如為0則取BM3中對應(yīng)數(shù)據(jù)塊位置i的比特值,依次順序存入按 需增量序列bit_seq。
步驟5 在按需增量序列bit_seq的基礎(chǔ)上,附加上BM1, BM2和BM3的offet標識 信息0”03和02,最終形成按需增量BM——Δ BMxy,發(fā)送給對方。需要說明的是,現(xiàn)有Ρ2Ρ流 媒體系統(tǒng)中offset所占長度一般為4個字節(jié),以上3個offset合計共占用12個字節(jié),為 進一步降低開銷,考慮到3個offset間的關(guān)系,可采用相對offset來編碼,如可用BM3的 Offset^BM1和BM2相對BM3Offset的值進行編碼,通??梢允惯@部分開銷進一步降低到8個 字節(jié)或更小。
需要指出的是,雖然按需增量序列ABMxy本身已經(jīng)很短,一般情況下可直接用 于發(fā)送,但是在必要的時候,可以進一步采用壓縮算法進行壓縮處理,如rim-length、 huffman、算術(shù)編碼或字典壓縮等。根據(jù)具體協(xié)議設(shè)計不同,進一步的算法壓縮可以發(fā)生步 驟4或步驟5之后。
下面對與本發(fā)明P2P流媒體系統(tǒng)中緩存消息的編碼方法實施例的相對應(yīng)的接收 過程進行詳細的說明。參照圖5,按需增量BM的接收與解碼過程如下。
下面以peer y接收收到peer χ發(fā)送的按需增量BM的解碼過程。設(shè)peer y接收 到來自peer χ的Δ BMxy。
步驟1 讀入接收到的ABMxy,解析其中的4個重要字段該增量BM信息對應(yīng)的 BM3、BM2, BM1的偏移量標識信息02,O3, O1,以及按需增量0/1序列bit_seq ;初始化變量BM1 處理出錯標識和BM2處理出錯標識為否。peer y的所知的BM3Z^BM2ZiBM1與χ的可能不完全一致,但是對信息的可用性沒有任何影響。
步驟2 如果O3標識的offset遠遠小于仏標識的offset (即BM2的offset遠遠 小于BM3的offset),說明BM2為空,設(shè)置BM2的offset遠遠小于BM3的offset且bitmap 長度為0 ;如果根據(jù)O3在本地緩存表BT1中查找到本次接收到的按需增量的參照BM—— BM2 (Peer y的BM),則取出BM2,它將用于后續(xù)解碼過程,須強調(diào)指出的是,O3同時也是χ對 y發(fā)送過的BM2的證實,說明χ已經(jīng)了解y的標志為O3的BM,因此須設(shè)置aCked_ptr為BT1 的BM2入口其為本地編碼器的本地參照BM ;如果沒有在表中找到O3唯一標識的BM2,則設(shè)置 BM2處理出錯標識為真,并將aCked_ptr指向空;
步驟3 如果O1標識的offset遠遠小于O2標識的offset (即BM1的offset遠遠小 于BM3的offset),說明BM1為空,設(shè)置BM1的offset遠遠小于BM3的offset且bitmap長度 為0 ;如果根據(jù)O1在本地緩存表BT2中查找到本次接收到的按需增量的參照BM——BM1 (Peer X的BM),則取出BM1,它將用于后續(xù)解碼過程;如果沒有在表中找到O1唯一標識的BM1,則設(shè) 置BM1處理出錯標識為真;
步驟4 如果8112或81^的處理出錯標識為真,則解碼失敗,結(jié)束解碼過程;否則,進 入以下解碼過程;
步驟5 計算出BM3和BM2偏移量中的最大值,記為max_offset ;計算出BM3和BM2 偏移量中的最大值,記為max_id ;
步驟6 從chunk id = offset_max開始遞增到max_id范圍內(nèi),按位對BM1和BM2 相應(yīng)的chunk id位置的值進行或操作,若BM1或BM2在相應(yīng)位置上沒有數(shù)據(jù),則按0值計, 最后得到解碼的參照序列,記為ref_Seq。在這個序列中,1的位置說明對應(yīng)的chunk本地 已經(jīng)擁有或/和對方已經(jīng)擁有;而0的位置說明相應(yīng)數(shù)據(jù)塊雙方過去都沒有,因此,按需增 量序列bit_seq正是對應(yīng)這些0的chunk位置的比特序列。需要注意的是,按需增量序列 bit_seq中超出這些0的位置的部分全部是BM3中的新增位置。
步驟7 若BM1為空,則初始化預(yù)處理bitmap序列preBM3,起始比特位置為BM3的 offset (O2);若BM1不為空,則PreBM3為由BM1的bitmap的O2的位置開始到最后一個比特 結(jié)束的全部比特序列。
按照ref_Seq序列中從左到右的每個0的比特位置,按順序?qū)⑹盏降陌葱柙隽啃?列bit_seq的比特值逐個插入到預(yù)處理bitmap序列preBM3的相應(yīng)的bitmap位置上,如果 PreBM3的序列長度不夠,須增加其長度;其次將bit_seq中超出ref_Seq的部分直接添加到 PreBM3序列后面。
最后在BM3的bitmap基礎(chǔ)上增加BM3的offset 02,得到最終的解碼后的BM3信息。
步驟8 將解碼后的BM3根據(jù)寫指針wptr_bt2存入本地緩存BT2,將wptr_bt2指向 下一個入口,并設(shè)置CUrr_ptr指向BM3的該緩存入口(為本地下一次發(fā)送按需增量BM的 對方參考BM)。此時y解碼的BM3與χ的BM3可能不完全一致,但是對信息的可用性沒有任 何影響。
以上是按需增量的接收和解碼過程。是需要指出的是,如果按需增量序列ABMxy 采用了其他算法如Run-LengtKHufTman編碼、算術(shù)編碼或字典壓縮,則須在步驟1中,先按 相應(yīng)流程解碼。
在本發(fā)明的另一實施例中,在上述過程的編碼方法也可以簡化為生成BM1并發(fā)送9到對端;接收對端發(fā)送的BM2 ;產(chǎn)生待發(fā)送給對端的BM3 ;計算出BM2和BM3的最大偏移量值 max_offset ;只參照BM1所有大于最大偏移量值maX_offset的比特信息,剔除BM3中對端已 知的信息,保留對端未知的信息和新增信息,生成按需增量序列ABMxy ;在所述按需增量序 列的基礎(chǔ)上,添加BM3和Ml2的偏移量標識符,生成按需增量BM并發(fā)送到對端。
由上述兩個實施例可以看出,本發(fā)明提出的提出按需增量編碼方法,不僅利用一 個peer產(chǎn)生的連續(xù)的BM序列之間的相關(guān)性,而且充分利用了 peer間交互的BM的相關(guān)性, 從而能夠大幅度降低交互信息的長度,降低開銷;并且交互間隔越短、交互頻率越快,由于 相關(guān)性越強而使編碼越短。
參照圖6,圖6為P2P流媒體系統(tǒng)中緩存消息的編碼系統(tǒng)實施例的結(jié)構(gòu)框圖。該系 統(tǒng)包括緩存消息生成模塊60、最大偏移量值計算模塊62、按需增量序列生成模塊64、按需 增量緩存消息生成模塊66和發(fā)送模塊68。其中
緩存消息生成模塊60用于獲取對端最新確認收到的第一緩存消息;讀取所述對 端最新發(fā)送的第二緩存消息,獲取待發(fā)送給所述對端的第三緩存消息。也就是說,緩存消 息準備模塊60用于緩存以往發(fā)送過的若干個(定義得到對方確認的最新的為第一緩存消 息BM1)BM ;緩存以往已解壓縮的接收到的最近若干個(定義接收到的最新的為第二緩存消 息BM2)BM ;從高層模塊接收待發(fā)送的第三緩存消息BM3 ;最大偏移量值計算模塊62用于計 算所述第二緩存消息BM2和所述第三緩存消息BM3的最大偏移量值;按需增量序列生成模 塊64用于參照所述第二緩存消息BM2中所有大于最大偏移量值max_0ffSet的比特信息, 確定對端的已知信息;并剔除所述第三緩存消息BM3中的所述已知信息,生成按需增量序列 Δ BMxy ;按需增量緩存消息BM生成模塊66用于基于所述按需增量序列△ BMxy,添加第三緩 存消息BM3和所述第二緩存消息BM2的偏移量標識符,生成按需增量緩存消息BM ;發(fā)送模塊 68用于將該按需增量緩存消息BM發(fā)送至對端。
優(yōu)選的一個實施例是,按需增量序列生成模塊64中,參照第一緩存消息BM1和第 二緩存消息BM2中所有大于最大偏移量值max_0ffSet的比特信息,剔除第三緩存消息BM3 中對端早先已知的信息,保留對端還未知的信息和新增信息,生成按需增量序列;相對應(yīng) 地,按需增量緩存消息生成模塊66中,在按需增量序列Δ BMxy的基礎(chǔ)上,添加第三緩存消息 BM3、第二緩存消息BM2和第一緩存消息BM1的偏移量標識符,生成按需增量緩存消息
進一步地,在一個實施例中,增量序列還可以按照下述方式獲取將第一緩存消息 BM1和第二緩存消息BM2中所有大于最大的偏移量值max_0ffSet的比特位置進行“或”運 算,空位置按0計算,得到參照序列ref_seq ;依據(jù)所述參照序列ref_seq中值為0的比特 位置,順序提取第三緩存消息BM3中對應(yīng)位置的比特值,該比特值所組成的序列給即為按需 增量序列。
另外,在一個實施例中,按需增量序列生成模塊64與按需增量緩存消息BM生成模 塊66之間還包括對按需增量序列△ BMxy進行壓縮處理的第一壓縮模塊,按需增量緩存消息 BM生成模塊66基于壓縮之后的按需增量序列Δ ΒΜΧ。
在另外一個實施例中,按需增量緩存消息BM生成模塊66與發(fā)送模塊68之間還包 括第二壓縮模塊,該模塊對按需增量BM進行壓縮處理。
上述系統(tǒng)實施例與方法實施例原理相同,本發(fā)明在此不再贅述,相同之處互相參 照即可。
綜上,本發(fā)明具有如下特點
(1)建立在深入認識BM序列特征基礎(chǔ)之上。不僅利用一個Peer產(chǎn)生的連續(xù)的BM 序列之間的相關(guān)性,更重要的是,充分利用了 Peer間要交互的BM的相關(guān)性,換句話說,利 用Peer間對相同Chunk下載狀態(tài)信息的相關(guān)性進行壓縮,從而能大幅度降低交互信息的長 度,降低開銷;
(2)交互間隔越短(交互頻率越快),編碼越短(因為相關(guān)性越強);
(3)普遍適用于現(xiàn)有的基于P2P技術(shù)的流媒體系統(tǒng)。
以上對本發(fā)明所提供的一種P2P流媒體系統(tǒng)中緩存消息的編碼方法及系統(tǒng)進行 詳細介紹,本文中應(yīng)用了具體實施例對本發(fā)明的原理及實施方式進行了闡述,以上實施例 的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員, 依據(jù)本發(fā)明的思想,在具體實施方式
及應(yīng)用范圍上均會有改變之處。綜上所述,本說明書內(nèi) 容不應(yīng)理解為對本發(fā)明的限制。
權(quán)利要求
1.一種P2P流媒體系統(tǒng)中緩存消息的編碼方法,其特征在于,包括如下步驟緩存消息準備步驟,獲取對端最新確認收到的第一緩存消息;讀取所述對端最新發(fā)送 的第二緩存消息,獲取待發(fā)送給所述對端的第三緩存消息;最大偏移量值計算步驟,計算所述第二緩存消息和所述第三緩存消息的最大偏移量值;按需增量序列生成步驟,參照所述第二緩存消息中所有大于所述最大偏移量值的比特 信息,確定對端的已知信息;并剔除所述第三緩存消息中的所述已知信息,生成按需增量序 列;按需增量緩存消息生成步驟,基于所述按需增量序列,添加第三緩存消息和所述第二 緩存消息的偏移量標識符,生成按需增量緩存消息;發(fā)送步驟,將該按需增量緩存消息發(fā)送至對端。
2.根據(jù)權(quán)利要求1所述的編碼方法,其特征在于,所述按需增量序列生成步驟中,所述對端的已知信息進一步通過參照所述第一緩存消 息和所述第二緩存消息中所有大于所述最大偏移量值的比特信息來確定;并且所述按需增量緩存消息發(fā)送步驟中,所述按需增量緩存消息進一步通過如下方式確 定基于所述按需增量序列,添加第三緩存消息、第二緩存消息和第一緩存消息的偏移量標 識符。
3.根據(jù)權(quán)利要求2所述的編碼方法,其特征在于,所述按需增量序列生成步驟中,所述 按需增量序列通過如下方式確定將第一緩存消息和第二緩存消息中所有大于最大的偏移量值的比特位置進行“或”運 算,空位置按0計算,得到參照序列;依據(jù)所述參照序列中值為0的比特位置,順序提取第三緩存消息中對應(yīng)位置的比特 值,該比特值所組成的序列給即為按需增量序列。
4.根據(jù)權(quán)利要求1至3中任一項所述的編碼方法,其特征在于,所述按需增量序列生成 步驟和所述按需增量緩存消息發(fā)送步驟之間,還設(shè)置有壓縮步驟,對所述按需增量序列進行壓縮,獲取壓縮的按需增量序列;并且,所述按需增量緩存消息發(fā)送步驟中,基于所述壓縮的按需增量序列添加所述偏移量標 識符以生成所述按需增量緩存消息。
5.根據(jù)權(quán)利要求4所述的編碼方法,其特征在于,在所述按需增量緩存消息生成步驟 和所述發(fā)送步驟之間,還設(shè)置有壓縮步驟,對所述按需增量緩存消息進行壓縮處理。
6.一種P2P流媒體系統(tǒng)中緩存消息的編碼系統(tǒng),其特征在于,包括緩存消息準備模塊,獲取對端最新確認收到的第一緩存消息;讀取所述對端最新發(fā)送 的第二緩存消息,獲取待發(fā)送給所述對端的第三緩存消息;最大偏移量值計算模塊,用于計算所述第二緩存消息和所述第三緩存消息的最大偏移 量值;按需增量序列生成模塊,用于參照所述第二緩存消息中所有大于所述最大偏移量值的 比特信息,確定對端的已知信息;并剔除所述第三緩存消息中的所述已知信息,生成按需增 量序列;按需增量緩存消息生成模塊,用于基于所述按需增量序列,添加第三緩存消息和所述 第二緩存消息的偏移量標識符,生成按需增量緩存消息;發(fā)送模塊,用于將該按需增量緩存消息發(fā)送至對端。
7.根據(jù)權(quán)利要求6所述的編碼系統(tǒng),其特征在于,所述按需增量序列生成模塊中,所述對端的已知信息進一步通過參照所述第一緩存消 息和所述第二緩存消息中所有大于所述最大偏移量值的比特信息來確定;并且所述按需增量緩存消息發(fā)送模塊中,所述按需增量緩存消息進一步通過如下方式確 定基于所述按需增量序列,添加第三緩存消息、第二緩存消息和第一緩存消息的偏移量標 識符。
8.根據(jù)權(quán)利要求7所述的編碼系統(tǒng),其特征在于,所述按需增量序列生成模塊中,所述 按需增量序列通過如下方式確定將第一緩存消息和第二緩存消息中所有大于最大的偏移量值的比特位置進行“或”運 算,空位置按0計算,得到參照序列;依據(jù)所述參照序列中值為0的比特位置,順序提取第三緩存消息中對應(yīng)位置的比特 值,該比特值所組成的序列給即為按需增量序列。
9.根據(jù)權(quán)利要求6至8中任一項所述的編碼系統(tǒng),其特征在于,所述按需增量序列生成 模塊和所述按需增量緩存消息發(fā)送模塊之間,還設(shè)置有第一壓縮模塊,用于對所述按需增量序列進行壓縮,獲取壓縮的按需增量序列;并且,所述按需增量緩存消息發(fā)送模塊中,基于所述壓縮的按需增量序列添加所述偏移量標 識符以生成所述按需增量緩存消息。
10.根據(jù)權(quán)利要求9所述的編碼系統(tǒng),其特征在于,在所述按需增量緩存消息生成模塊 和所述發(fā)送模塊之間,還設(shè)置有第二壓縮模塊,對所述按需增量緩存消息進行壓縮處理。
全文摘要
本發(fā)明公開了一種P2P流媒體系統(tǒng)中緩存消息的編碼方法及系統(tǒng)。其中,該方法包括獲取對端最新確認收到的第一緩存消息(BM1);讀取對端最新發(fā)送的第二緩存消息(BM2),獲取待發(fā)送給對端的第三緩存消息(BM3);計算出BM2和BM3的最大偏移量值max_offset;參照BM1和BM2所有大于最大偏移量值max_offset的比特信息,剔除BM3中對端已知的信息,保留對端未知的信息和新增信息,生成按需增量序列ΔBMxy;在按需增量序列的基礎(chǔ)上,添加BM3、BM2和BM1的偏移量標識符,生成按需增量BM;將按需增量發(fā)送到對端。本發(fā)明利用一個peer產(chǎn)生的連續(xù)的BM序列之間的相關(guān)性和peer間交互的BM的相關(guān)性,大幅度降低交互信息的長度,降低系統(tǒng)開銷。
文檔編號H04L29/06GK102035836SQ20101058596
公開日2011年4月27日 申請日期2010年12月13日 優(yōu)先權(quán)日2010年12月13日
發(fā)明者李純喜, 趙永祥, 陳一帥, 陳常嘉 申請人:北京交通大學(xué)