去抖缓冲区、数据存储方法及装置、数据读取方法及装置的制造方法

文档序号:9508521阅读:340来源:国知局
去抖缓冲区、数据存储方法及装置、数据读取方法及装置的制造方法
【技术领域】
[0001]本发明涉及实时数据传输领域,具体涉及一种去抖缓冲区、数据存储方法及装置、数据读取方法及装置。
【背景技术】
[0002]基于RTP/UDP的实时数据流传输过程中,其发送端会按实际时间获取数据,每一帧数据对应一个时间点,即为时间戳。通过网络将其传输给接收端时,由于网络延时的不确定性,会引入实时数据流的时间抖动和乱序。为了保证实时数据流的质量,需要在实时数据流的接收端缓存一定数量的实时数据包,然后按照固定的时间间隔发送各个包,以附加延时为代价来消除时间抖动和乱序。
[0003]现有技术中有一种使用链表结构的缓存去抖方法,具体过程如下:
[0004]I)当接收到一个实时数据包时,向共享缓存管理申请缓存;
[0005]2)共享缓存管理为该实时数据包分配存储空间,返回指向该存储空间的缓存地址;
[0006]3)得到缓存地址后,把实时数据包写入到共享缓存中去,然后把实时数据包的时间、缓存地址等信息传递给数据包队列调度;
[0007]4)队列调度首先生成一个新的数据包节点,然后按照实时数据包的发送时间顺序把该节点插入到缓存去抖链表的合适位置;
[0008]5)数据包队列调度维护实时数据包的发送时间,在发送时间到来时,队列调度从缓存去抖链表中查找发送的实时数据包。如果查询到了符合发送条件的实时数据包,则从共享缓存中读取该实时数据包并发送出去;
[0009]6)队列调度删除该节点,共享缓存管理回收该实时数据包的存储空间。
[0010]上述利用链表结构的缓存去抖方法可以解决因当前网络情况不好、路由线路过多时RTP/UDP收包包序相差比较大时去抖缓冲会变得很大的问题。但是,链表结构的遍历比较费时间,如果实时数据包对应的数据包节点插入在链表的末尾时,则需要遍历整个链表才能找到实时数据包的插入位置。在将数据包节点插入到链表的合适位置时,由于链表的节点个数和实时数据包发送时间的不确定性,数据包插入操作所花费的时间也具有很大的不确定性。

【发明内容】

[0011]因此,本发明要解决的技术问题在于克服现有技术中链表结构的去抖动缓冲区的链表遍历缓慢而导致数据存储和读取效率低的缺陷,从而提供一种去抖缓冲区。
[0012]本发明要解决的技术问题在于克服现有技术中链表结构的去抖动缓冲区的链表遍历缓慢而导致数据存储和读取效率低的缺陷,从而提供一种数据存储方法及装置。
[0013]本发明要解决的技术问题在于克服现有技术中链表结构的去抖动缓冲区的链表遍历缓慢而导致数据存储和读取效率低的缺陷,从而提供一种数据读取方法及装置。
[0014]为此,本发明提供了如下技术方案:
[0015]—种去抖缓冲区,包括:
[0016]—个或多个数据链表,用于存储数据;
[0017]环形数据索引,包括按环形依次排列的多个数据索引,环形数据索引的起始位置能够设置,每个数据链表对应一个数据索引。
[0018]优选地,每个数据链表中存储的数据的时间戳一致,且时间戳不同的数据按时间顺序依次存储在不同数据索弓I对应的数据链表中。
[0019]优选地,相邻两个数据索引对应的时间戳的时间间隔一致。
[0020]—种数据存储方法,包括如下步骤:
[0021]判断去抖缓冲区内的数据链表是否为空;
[0022]如果为空,则将待插入数据存储在一个数据链表中,将该数据的时间戳作为最小时间戳,并将该数据链表对应的数据索引设置为起始位置;
[0023]如果不为空,则计算待插入数据的时间戳与最小时间戳的差值;
[0024]根据差值确定待插入数据对应的数据索引;
[0025]将待插入数据存储进其对应的数据索引所对应的数据链表中。
[0026]优选地,根据差值确定待插入数据对应的数据索引的步骤包括:
[0027]如果差值为正值,则将差值除以环形数据索引中相邻两个数据索引之间的时间间隔获取商值Tl ;
[0028]如果商值Tl小于环形数据索引中的数据索引的总数,则起始位置后第Tl个数据索引为待插入数据对应的数据索引。
[0029]优选地,根据差值确定待插入数据对应的数据索引的步骤包括:如果待插入数据的时间戳与最小时间戳的差值为负值,则抛弃该待插入数据。
[0030]优选地,如果商值Tl大于环形数据索引中的数据索引的总数,则丢弃该待插入数据或最小时间戳对应的数据。
[0031]优选地,相同时间戳的待插入数据按照序号顺序插入同一数据链表中。
[0032]一种数据读取方法,包括如下步骤:
[0033]判断去抖缓冲区内的数据链表是否为空;
[0034]当不为空时,则将当前时间与上次读取时间的间隔除以环形数据索引中相邻两个数据索引之间的时间间隔获取商值T2 ;
[0035]依次取出起始位置对应的数据索引至第T2个数据索引对应的数据链表中存储的数据;
[0036]将剩余数据中时间戳最小数据对应的数据索引设置为起始位置。
[0037]一种数据存储装置,包括:
[0038]第一判断单元,判断去抖缓冲区内的数据链表是否为空;
[0039]第一存储单元,如果为空,则将待插入数据存储在一个数据链表中,将该数据的时间戳作为最小时间戳,并将该数据链表对应的数据索引设置为起始位置;
[0040]差值计算单元,如果不为空,则计算待插入数据的时间戳与最小时间戳的差值;
[0041]插入位置获取单元,用于根据差值确定待插入数据对应的数据索引;
[0042]第二存储单元,用于将待插入数据存储进其对应的数据索引所对应的数据链表中。
[0043]优选地,插入位置获取单元包括:
[0044]商值计算子单元,如果差值为正值,则将差值除以环形数据索引中相邻两个数据索引之间的时间间隔获取商值Tl ;
[0045]插入位置确定子单元,如果商值Tl小于环形数据索引中的数据索引的总数,则起始位置后第Tl个数据索引为待插入数据对应的数据索引。
[0046]—种数据读取装置,包括:
[0047]判断单元,用于判断去抖缓冲区内的数据链表是否为空;
[0048]第二商值获取单元,当不为空时,则将当前时间与上次读取时间的间隔除以环形数据索引中相邻两个数据索引之间的时间间隔获取商值T2 ;
[0049]读取单元,用于依次取出起始位置对应的数据索引至第T2个数据索引对应的数据链表中存储的数据;
[0050]设置单元,用于将剩余数据中最小时间戳对应的数据索引设置为起始位置。
[0051]本发明技术方案,具有如下优点:
[0052]I.本发明提供的去抖缓冲区,由于在链表结构缓冲的基础上增加了环形数据索弓丨,使得数据可以按照其时间戳插入到相应数据索引对应的数据链表中,而不需要通过一一对比来排序,数据读取时也是按照时间戳在相应的数据索引去读取数据,而不需要逐个查看。因此可以加快遍历速度,减少数据插入和读取时间,从而提升缓冲效率。
[0053]2.本发明提供的数据存储方法及装置,由于环形数据索引中相邻两个数据索引对应的时间戳的时间间隔一致,因此可以根据待插入数据的时间戳与当前缓冲区中最小时间戳的差值来计算其插入位置,不需要逐个比较,加快了存储速度,从而将接收到的数据按其时间戳的顺序依次存储在环形数据索引中相应数据索引对应的数据链表中。
[0054]3.本发明提供的数据读取方法及装置,只需要根据当前时间与上次读取时间的间隔确定要读取的数据的时间间隔,即可直接依次读取出相应数据并发送出去,数据读取时不需要进行排序,因为在数据存
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1