国产精品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>

      去抖緩沖區(qū)、數(shù)據(jù)存儲方法及裝置、數(shù)據(jù)讀取方法及裝置的制造方法

      文檔序號:9508521閱讀:433來源:國知局
      去抖緩沖區(qū)、數(shù)據(jù)存儲方法及裝置、數(shù)據(jù)讀取方法及裝置的制造方法
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及實(shí)時(shí)數(shù)據(jù)傳輸領(lǐng)域,具體涉及一種去抖緩沖區(qū)、數(shù)據(jù)存儲方法及裝置、數(shù)據(jù)讀取方法及裝置。
      【背景技術(shù)】
      [0002]基于RTP/UDP的實(shí)時(shí)數(shù)據(jù)流傳輸過程中,其發(fā)送端會按實(shí)際時(shí)間獲取數(shù)據(jù),每一幀數(shù)據(jù)對應(yīng)一個(gè)時(shí)間點(diǎn),即為時(shí)間戳。通過網(wǎng)絡(luò)將其傳輸給接收端時(shí),由于網(wǎng)絡(luò)延時(shí)的不確定性,會引入實(shí)時(shí)數(shù)據(jù)流的時(shí)間抖動和亂序。為了保證實(shí)時(shí)數(shù)據(jù)流的質(zhì)量,需要在實(shí)時(shí)數(shù)據(jù)流的接收端緩存一定數(shù)量的實(shí)時(shí)數(shù)據(jù)包,然后按照固定的時(shí)間間隔發(fā)送各個(gè)包,以附加延時(shí)為代價(jià)來消除時(shí)間抖動和亂序。
      [0003]現(xiàn)有技術(shù)中有一種使用鏈表結(jié)構(gòu)的緩存去抖方法,具體過程如下:
      [0004]I)當(dāng)接收到一個(gè)實(shí)時(shí)數(shù)據(jù)包時(shí),向共享緩存管理申請緩存;
      [0005]2)共享緩存管理為該實(shí)時(shí)數(shù)據(jù)包分配存儲空間,返回指向該存儲空間的緩存地址;
      [0006]3)得到緩存地址后,把實(shí)時(shí)數(shù)據(jù)包寫入到共享緩存中去,然后把實(shí)時(shí)數(shù)據(jù)包的時(shí)間、緩存地址等信息傳遞給數(shù)據(jù)包隊(duì)列調(diào)度;
      [0007]4)隊(duì)列調(diào)度首先生成一個(gè)新的數(shù)據(jù)包節(jié)點(diǎn),然后按照實(shí)時(shí)數(shù)據(jù)包的發(fā)送時(shí)間順序把該節(jié)點(diǎn)插入到緩存去抖鏈表的合適位置;
      [0008]5)數(shù)據(jù)包隊(duì)列調(diào)度維護(hù)實(shí)時(shí)數(shù)據(jù)包的發(fā)送時(shí)間,在發(fā)送時(shí)間到來時(shí),隊(duì)列調(diào)度從緩存去抖鏈表中查找發(fā)送的實(shí)時(shí)數(shù)據(jù)包。如果查詢到了符合發(fā)送條件的實(shí)時(shí)數(shù)據(jù)包,則從共享緩存中讀取該實(shí)時(shí)數(shù)據(jù)包并發(fā)送出去;
      [0009]6)隊(duì)列調(diào)度刪除該節(jié)點(diǎn),共享緩存管理回收該實(shí)時(shí)數(shù)據(jù)包的存儲空間。
      [0010]上述利用鏈表結(jié)構(gòu)的緩存去抖方法可以解決因當(dāng)前網(wǎng)絡(luò)情況不好、路由線路過多時(shí)RTP/UDP收包包序相差比較大時(shí)去抖緩沖會變得很大的問題。但是,鏈表結(jié)構(gòu)的遍歷比較費(fèi)時(shí)間,如果實(shí)時(shí)數(shù)據(jù)包對應(yīng)的數(shù)據(jù)包節(jié)點(diǎn)插入在鏈表的末尾時(shí),則需要遍歷整個(gè)鏈表才能找到實(shí)時(shí)數(shù)據(jù)包的插入位置。在將數(shù)據(jù)包節(jié)點(diǎn)插入到鏈表的合適位置時(shí),由于鏈表的節(jié)點(diǎn)個(gè)數(shù)和實(shí)時(shí)數(shù)據(jù)包發(fā)送時(shí)間的不確定性,數(shù)據(jù)包插入操作所花費(fèi)的時(shí)間也具有很大的不確定性。

      【發(fā)明內(nèi)容】

      [0011]因此,本發(fā)明要解決的技術(shù)問題在于克服現(xiàn)有技術(shù)中鏈表結(jié)構(gòu)的去抖動緩沖區(qū)的鏈表遍歷緩慢而導(dǎo)致數(shù)據(jù)存儲和讀取效率低的缺陷,從而提供一種去抖緩沖區(qū)。
      [0012]本發(fā)明要解決的技術(shù)問題在于克服現(xiàn)有技術(shù)中鏈表結(jié)構(gòu)的去抖動緩沖區(qū)的鏈表遍歷緩慢而導(dǎo)致數(shù)據(jù)存儲和讀取效率低的缺陷,從而提供一種數(shù)據(jù)存儲方法及裝置。
      [0013]本發(fā)明要解決的技術(shù)問題在于克服現(xiàn)有技術(shù)中鏈表結(jié)構(gòu)的去抖動緩沖區(qū)的鏈表遍歷緩慢而導(dǎo)致數(shù)據(jù)存儲和讀取效率低的缺陷,從而提供一種數(shù)據(jù)讀取方法及裝置。
      [0014]為此,本發(fā)明提供了如下技術(shù)方案:
      [0015]—種去抖緩沖區(qū),包括:
      [0016]—個(gè)或多個(gè)數(shù)據(jù)鏈表,用于存儲數(shù)據(jù);
      [0017]環(huán)形數(shù)據(jù)索引,包括按環(huán)形依次排列的多個(gè)數(shù)據(jù)索引,環(huán)形數(shù)據(jù)索引的起始位置能夠設(shè)置,每個(gè)數(shù)據(jù)鏈表對應(yīng)一個(gè)數(shù)據(jù)索引。
      [0018]優(yōu)選地,每個(gè)數(shù)據(jù)鏈表中存儲的數(shù)據(jù)的時(shí)間戳一致,且時(shí)間戳不同的數(shù)據(jù)按時(shí)間順序依次存儲在不同數(shù)據(jù)索弓I對應(yīng)的數(shù)據(jù)鏈表中。
      [0019]優(yōu)選地,相鄰兩個(gè)數(shù)據(jù)索引對應(yīng)的時(shí)間戳的時(shí)間間隔一致。
      [0020]—種數(shù)據(jù)存儲方法,包括如下步驟:
      [0021]判斷去抖緩沖區(qū)內(nèi)的數(shù)據(jù)鏈表是否為空;
      [0022]如果為空,則將待插入數(shù)據(jù)存儲在一個(gè)數(shù)據(jù)鏈表中,將該數(shù)據(jù)的時(shí)間戳作為最小時(shí)間戳,并將該數(shù)據(jù)鏈表對應(yīng)的數(shù)據(jù)索引設(shè)置為起始位置;
      [0023]如果不為空,則計(jì)算待插入數(shù)據(jù)的時(shí)間戳與最小時(shí)間戳的差值;
      [0024]根據(jù)差值確定待插入數(shù)據(jù)對應(yīng)的數(shù)據(jù)索引;
      [0025]將待插入數(shù)據(jù)存儲進(jìn)其對應(yīng)的數(shù)據(jù)索引所對應(yīng)的數(shù)據(jù)鏈表中。
      [0026]優(yōu)選地,根據(jù)差值確定待插入數(shù)據(jù)對應(yīng)的數(shù)據(jù)索引的步驟包括:
      [0027]如果差值為正值,則將差值除以環(huán)形數(shù)據(jù)索引中相鄰兩個(gè)數(shù)據(jù)索引之間的時(shí)間間隔獲取商值Tl ;
      [0028]如果商值Tl小于環(huán)形數(shù)據(jù)索引中的數(shù)據(jù)索引的總數(shù),則起始位置后第Tl個(gè)數(shù)據(jù)索引為待插入數(shù)據(jù)對應(yīng)的數(shù)據(jù)索引。
      [0029]優(yōu)選地,根據(jù)差值確定待插入數(shù)據(jù)對應(yīng)的數(shù)據(jù)索引的步驟包括:如果待插入數(shù)據(jù)的時(shí)間戳與最小時(shí)間戳的差值為負(fù)值,則拋棄該待插入數(shù)據(jù)。
      [0030]優(yōu)選地,如果商值Tl大于環(huán)形數(shù)據(jù)索引中的數(shù)據(jù)索引的總數(shù),則丟棄該待插入數(shù)據(jù)或最小時(shí)間戳對應(yīng)的數(shù)據(jù)。
      [0031]優(yōu)選地,相同時(shí)間戳的待插入數(shù)據(jù)按照序號順序插入同一數(shù)據(jù)鏈表中。
      [0032]一種數(shù)據(jù)讀取方法,包括如下步驟:
      [0033]判斷去抖緩沖區(qū)內(nèi)的數(shù)據(jù)鏈表是否為空;
      [0034]當(dāng)不為空時(shí),則將當(dāng)前時(shí)間與上次讀取時(shí)間的間隔除以環(huán)形數(shù)據(jù)索引中相鄰兩個(gè)數(shù)據(jù)索引之間的時(shí)間間隔獲取商值T2 ;
      [0035]依次取出起始位置對應(yīng)的數(shù)據(jù)索引至第T2個(gè)數(shù)據(jù)索引對應(yīng)的數(shù)據(jù)鏈表中存儲的數(shù)據(jù);
      [0036]將剩余數(shù)據(jù)中時(shí)間戳最小數(shù)據(jù)對應(yīng)的數(shù)據(jù)索引設(shè)置為起始位置。
      [0037]一種數(shù)據(jù)存儲裝置,包括:
      [0038]第一判斷單元,判斷去抖緩沖區(qū)內(nèi)的數(shù)據(jù)鏈表是否為空;
      [0039]第一存儲單元,如果為空,則將待插入數(shù)據(jù)存儲在一個(gè)數(shù)據(jù)鏈表中,將該數(shù)據(jù)的時(shí)間戳作為最小時(shí)間戳,并將該數(shù)據(jù)鏈表對應(yīng)的數(shù)據(jù)索引設(shè)置為起始位置;
      [0040]差值計(jì)算單元,如果不為空,則計(jì)算待插入數(shù)據(jù)的時(shí)間戳與最小時(shí)間戳的差值;
      [0041]插入位置獲取單元,用于根據(jù)差值確定待插入數(shù)據(jù)對應(yīng)的數(shù)據(jù)索引;
      [0042]第二存儲單元,用于將待插入數(shù)據(jù)存儲進(jìn)其對應(yīng)的數(shù)據(jù)索引所對應(yīng)的數(shù)據(jù)鏈表中。
      [0043]優(yōu)選地,插入位置獲取單元包括:
      [0044]商值計(jì)算子單元,如果差值為正值,則將差值除以環(huán)形數(shù)據(jù)索引中相鄰兩個(gè)數(shù)據(jù)索引之間的時(shí)間間隔獲取商值Tl ;
      [0045]插入位置確定子單元,如果商值Tl小于環(huán)形數(shù)據(jù)索引中的數(shù)據(jù)索引的總數(shù),則起始位置后第Tl個(gè)數(shù)據(jù)索引為待插入數(shù)據(jù)對應(yīng)的數(shù)據(jù)索引。
      [0046]—種數(shù)據(jù)讀取裝置,包括:
      [0047]判斷單元,用于判斷去抖緩沖區(qū)內(nèi)的數(shù)據(jù)鏈表是否為空;
      [0048]第二商值獲取單元,當(dāng)不為空時(shí),則將當(dāng)前時(shí)間與上次讀取時(shí)間的間隔除以環(huán)形數(shù)據(jù)索引中相鄰兩個(gè)數(shù)據(jù)索引之間的時(shí)間間隔獲取商值T2 ;
      [0049]讀取單元,用于依次取出起始位置對應(yīng)的數(shù)據(jù)索引至第T2個(gè)數(shù)據(jù)索引對應(yīng)的數(shù)據(jù)鏈表中存儲的數(shù)據(jù);
      [0050]設(shè)置單元,用于將剩余數(shù)據(jù)中最小時(shí)間戳對應(yīng)的數(shù)據(jù)索引設(shè)置為起始位置。
      [0051]本發(fā)明技術(shù)方案,具有如下優(yōu)點(diǎn):
      [0052]I.本發(fā)明提供的去抖緩沖區(qū),由于在鏈表結(jié)構(gòu)緩沖的基礎(chǔ)上增加了環(huán)形數(shù)據(jù)索弓丨,使得數(shù)據(jù)可以按照其時(shí)間戳插入到相應(yīng)數(shù)據(jù)索引對應(yīng)的數(shù)據(jù)鏈表中,而不需要通過一一對比來排序,數(shù)據(jù)讀取時(shí)也是按照時(shí)間戳在相應(yīng)的數(shù)據(jù)索引去讀取數(shù)據(jù),而不需要逐個(gè)查看。因此可以加快遍歷速度,減少數(shù)據(jù)插入和讀取時(shí)間,從而提升緩沖效率。
      [0053]2.本發(fā)明提供的數(shù)據(jù)存儲方法及裝置,由于環(huán)形數(shù)據(jù)索引中相鄰兩個(gè)數(shù)據(jù)索引對應(yīng)的時(shí)間戳的時(shí)間間隔一致,因此可以根據(jù)待插入數(shù)據(jù)的時(shí)間戳與當(dāng)前緩沖區(qū)中最小時(shí)間戳的差值來計(jì)算其插入位置,不需要逐個(gè)比較,加快了存儲速度,從而將接收到的數(shù)據(jù)按其時(shí)間戳的順序依次存儲在環(huán)形數(shù)據(jù)索引中相應(yīng)數(shù)據(jù)索引對應(yīng)的數(shù)據(jù)鏈表中。
      [0054]3.本發(fā)明提供的數(shù)據(jù)讀取方法及裝置,只需要根據(jù)當(dāng)前時(shí)間與上次讀取時(shí)間的間隔確定要讀取的數(shù)據(jù)的時(shí)間間隔,即可直接依次讀取出相應(yīng)數(shù)據(jù)并發(fā)送出去,數(shù)據(jù)讀取時(shí)不需要進(jìn)行排序,因?yàn)樵跀?shù)據(jù)存
      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1