国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      P2p流媒體系統(tǒng)中緩存消息的編碼方法及系統(tǒng)的制作方法

      文檔序號(hào):7768555閱讀:283來源:國知局
      專利名稱: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é)點(diǎn)(Peer)間傳輸,每個(gè)chunk由唯一的chunk id標(biāo)識(shí)。節(jié) 目內(nèi)容的共享和交換都依賴于節(jié)點(diǎn)間交換的描述節(jié)點(diǎn)緩存狀態(tài)的緩存消息(簡稱BM)來 完成。在某一時(shí)刻t,節(jié)點(diǎn)下載到從chunk Idn^ljchimk 之間的部分?jǐn)?shù)據(jù),與之相對(duì) 應(yīng),一個(gè)緩存消息(BM)通常包括兩部分重要信息緩存節(jié)目數(shù)據(jù)塊的起始位置(簡稱偏 移量或Offset),以及從這個(gè)起始位置開始,數(shù)據(jù)塊的本地下載完成情況(簡稱比特圖或 bitmap)——由0/1比特序列構(gòu)成(0/1分別代表未下載/已下載)。其中bitmap的長度標(biāo) 志了節(jié)點(diǎn)緩存的長度。緩存越大,抵抗網(wǎng)絡(luò)攪動(dòng)的能力越強(qiáng),連續(xù)播放的能力越好?,F(xiàn)有大 多數(shù)系統(tǒng)為了取得好的觀看效果而采用大緩存,但犧牲了播放時(shí)延,因此描述緩存狀態(tài)的 BM 一般有較大的長度,如UUke的BM描述大約400多個(gè)數(shù)據(jù)塊,PPLive則長達(dá)2000個(gè)數(shù) 據(jù)塊。如此長的BM給系統(tǒng)帶來較大的協(xié)議開銷。
      BM在Peer間的交換頻率影響了數(shù)據(jù)塊的擴(kuò)散速度和網(wǎng)絡(luò)共享環(huán)境。為了方便數(shù) 據(jù)塊在Peer間的共享,Peer間需要不斷地快速的交換BM,速度越快,越有利于數(shù)據(jù)塊的快 速分發(fā)。根據(jù)測量UUSee是5秒交換一次,PPLive是4秒。
      BM的長度和交換頻率決定了這部分信息在P2P流媒體系統(tǒng)中的開銷?,F(xiàn)有系統(tǒng) 的這一開銷比較大;若要通過提高BM交互頻率來提高系統(tǒng)性能,則會(huì)進(jìn)一步增大這部分開 銷,因此現(xiàn)有的BM交互方法也限制了通過這一途徑提高系統(tǒng)質(zhì)量的余地。
      傳統(tǒng)方法直接在Peer間交互原始的BM消息。為了壓縮原始BM長度,一些系統(tǒng)采 用了不同的壓縮方法對(duì)原始BM進(jìn)行壓縮,如Huffman壓縮、游程編碼和字典壓縮等,這些方 法建立在對(duì)原始的BM的0、1序列的簡單特征統(tǒng)計(jì)規(guī)律上,采用了通用的數(shù)據(jù)壓縮手段,使 得傳送BM所需的信息長度有所減少;但是,這種壓縮由于沒有考慮到不同BM序列之間的相 關(guān)性,因此系統(tǒng)開銷不能得到很好的降低。發(fā)明內(nèi)容
      本發(fā)明的目的在于提供一種P2P流媒體系統(tǒng)中緩存消息的編碼方法及系統(tǒng),基于 本發(fā)明能夠大幅度降低緩存消息間交互信息的長度,進(jìn)一步降低系統(tǒng)開銷。
      本發(fā)明利用了 peer間交互的BM的相關(guān)性,其基本原則是第一、一個(gè)Peer無需向 對(duì)方發(fā)送(根據(jù)對(duì)方的BM確認(rèn)的)那些對(duì)方已經(jīng)下載到的chunk的信息;第二、一個(gè)Peer 無需再向?qū)Ψ綀?bào)告那些曾經(jīng)在上次BM報(bào)告中已經(jīng)下載到的chunk信息。
      一方面,本發(fā)明一種P2P流媒體系統(tǒng)中緩存消息的編碼方法,包括如下步驟緩存 消息準(zhǔn)備步驟,獲取對(duì)端最新確認(rèn)收到的第一緩存消息;讀取所述對(duì)端最新發(fā)送的第二緩存消息,獲取待發(fā)送給所述對(duì)端的第三緩存消息;最大偏移量值計(jì)算步驟,計(jì)算所述第二緩 存消息和所述第三緩存消息的最大偏移量值;按需增量序列生成步驟,參照所述第二緩存 消息中所有大于所述最大偏移量值的比特信息,確定對(duì)端的已知信息;并剔除所述第三緩 存消息中的所述已知信息,生成按需增量序列;按需增量緩存消息生成步驟,基于所述按需 增量序列,添加第三緩存消息和所述第二緩存消息的偏移量標(biāo)識(shí)符,生成按需增量緩存消 息;發(fā)送步驟,將該按需增量緩存消息發(fā)送至對(duì)端。
      上述編碼方法,優(yōu)選所述按需增量序列生成步驟中,所述對(duì)端的已知信息進(jìn)一步 通過參照所述第一緩存消息和所述第二緩存消息中所有大于所述最大偏移量值的比特信 息來確定;并且所述按需增量緩存消息發(fā)送步驟中,所述按需增量緩存消息進(jìn)一步通過如 下方式確定基于所述按需增量序列,添加第三緩存消息、第二緩存消息和第一緩存消息的 偏移量標(biāo)識(shí)符。
      上述編碼方法,優(yōu)選所述按需增量序列生成步驟中,所述按需增量序列通過如下 方式確定將第一緩存消息和第二緩存消息中所有大于最大的偏移量值的比特位置進(jìn)行 “或”運(yùn)算,空位置按0計(jì)算,得到參照序列;依據(jù)所述參照序列中值為0的比特位置,順序提 取第三緩存消息中對(duì)應(yīng)位置的比特值,該比特值所組成的序列給即為按需增量序列。
      上述編碼方法,優(yōu)選所述按需增量序列生成步驟和所述按需增量緩存消息發(fā)送步 驟之間,還設(shè)置有壓縮步驟,對(duì)所述按需增量序列進(jìn)行壓縮,獲取壓縮的按需增量序列; 并且,所述按需增量緩存消息發(fā)送步驟中,基于所述壓縮的按需增量序列添加所述偏移量 標(biāo)識(shí)符以生成所述按需增量緩存消息。
      上述編碼方法,優(yōu)選在所述按需增量緩存消息生成步驟和所述發(fā)送步驟之間,還 設(shè)置有壓縮步驟,對(duì)所述按需增量緩存消息進(jìn)行壓縮處理。
      另一方面,本發(fā)明還公開了一種P2P流媒體系統(tǒng)中緩存消息的編碼系統(tǒng),包括緩 存消息準(zhǔn)備模塊,獲取對(duì)端最新確認(rèn)收到的第一緩存消息;讀取所述對(duì)端最新發(fā)送的第二 緩存消息,獲取待發(fā)送給所述對(duì)端的第三緩存消息;最大偏移量值計(jì)算模塊,用于計(jì)算所述 第二緩存消息和所述第三緩存消息的最大偏移量值;按需增量序列生成模塊,用于參照所 述第二緩存消息中所有大于所述最大偏移量值的比特信息,確定對(duì)端的已知信息;并剔除 所述第三緩存消息中的所述已知信息,生成按需增量序列;按需增量緩存消息生成模塊,用 于基于所述按需增量序列,添加第三緩存消息和所述第二緩存消息的偏移量標(biāo)識(shí)符,生成 按需增量緩存消息;發(fā)送模塊,用于將該按需增量緩存消息發(fā)送至對(duì)端。
      上述編碼系統(tǒng),優(yōu)選所述按需增量序列生成模塊中,所述對(duì)端的已知信息進(jìn)一步 通過參照所述第一緩存消息和所述第二緩存消息中所有大于所述最大偏移量值的比特信 息來確定;并且所述按需增量緩存消息發(fā)送模塊中,所述按需增量緩存消息進(jìn)一步通過如 下方式確定基于所述按需增量序列,添加第三緩存消息、第二緩存消息和第一緩存消息的 偏移量標(biāo)識(shí)符。
      上述編碼系統(tǒng),優(yōu)選所述按需增量序列生成模塊中,所述按需增量序列通過如下 方式確定將第一緩存消息和第二緩存消息中所有大于最大的偏移量值的比特位置進(jìn)行 “或”運(yùn)算,空位置按0計(jì)算,得到參照序列;依據(jù)所述參照序列中值為0的比特位置,順序提 取第三緩存消息中對(duì)應(yīng)位置的比特值,該比特值所組成的序列給即為按需增量序列。
      上述編碼系統(tǒng),優(yōu)選所述按需增量序列生成模塊和所述按需增量緩存消息發(fā)送模塊之間,還設(shè)置有第一壓縮模塊,用于對(duì)所述按需增量序列進(jìn)行壓縮,獲取壓縮的按需增 量序列;并且,所述按需增量緩存消息發(fā)送模塊中,基于所述壓縮的按需增量序列添加所述 偏移量標(biāo)識(shí)符以生成所述按需增量緩存消息。
      上述編碼系統(tǒng),優(yōu)選在所述按需增量緩存消息生成模塊和所述發(fā)送模塊之間,還 設(shè)置有第二壓縮模塊,對(duì)所述按需增量緩存消息進(jìn)行壓縮處理。
      相對(duì)于現(xiàn)有技術(shù)而言,本發(fā)明不僅利用一個(gè)peer產(chǎn)生的連續(xù)的BM序列之間的相 關(guān)性,而且充分利用了 peer間交互的BM的相關(guān)性,從而能夠大幅度降低交互信息的長度, 降低開銷;并且交互間隔越短、交互頻率越快,由于相關(guān)性越強(qiáng)而使編碼越短。


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