CN105743815B - 抖动缓冲数据处理的方法和装置 - Google Patents

抖动缓冲数据处理的方法和装置 Download PDF

Info

Publication number
CN105743815B
CN105743815B CN201610210838.2A CN201610210838A CN105743815B CN 105743815 B CN105743815 B CN 105743815B CN 201610210838 A CN201610210838 A CN 201610210838A CN 105743815 B CN105743815 B CN 105743815B
Authority
CN
China
Prior art keywords
sequence number
expected
packet
data packet
current
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610210838.2A
Other languages
English (en)
Other versions
CN105743815A (zh
Inventor
马利军
马洋涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201610210838.2A priority Critical patent/CN105743815B/zh
Publication of CN105743815A publication Critical patent/CN105743815A/zh
Application granted granted Critical
Publication of CN105743815B publication Critical patent/CN105743815B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/52Queue scheduling by attributing bandwidth to queues
    • H04L47/522Dynamic queue service slot or variable bandwidth allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/624Altering the ordering of packets in an individual queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及一种抖动缓冲数据处理的方法和装置,包括:当数据接收端接收到数据包时,获取数据包对应的当前序列号;获取当前预期包及其对应的第一预期序列号,判断当前序列号与第一预期序列号之间的大小关系,如果当前序列号小于第一预期序列号,则丢弃数据包,等待接收下一个数据包;如果当前序列号等于第一预期序列号,则将数据包提交至应用层,设置新的预期包,新的预期包对应的第二预期序列号为当前序列号加递增数值;如果当前序列号大于第一预期序列号,则将数据包压入抖动缓冲区,根据抖动缓冲区中的数据包的序列号与当前预期序列号的大小关系弹出抖动缓冲区中的数据包至应用层,并根据弹出的数据包更新预期包,提高了网络传输的实时性。

Description

抖动缓冲数据处理的方法和装置
技术领域
本发明涉及计算机技术领域,特别是涉及一种抖动缓冲数据处理的方法和装置。
背景技术
随着计算机技术的发展,人们通过各种实时通讯应用进行交流和娱乐,如在线音视频传输系统、语音和视频电话应用。由于数据传输过程中网络拥塞、乱序等问题,接收端对收到的网络数据包需要进行抖动缓存才能正常使用。
现有的抖动缓冲区的长度是固定的,无论网络状况好坏,都会缓存固定数量的数据包,从而造成固定长度的时延,给网络质量好的用户造成了不必要的延迟,降低了系统的实时性。
发明内容
基于此,有必要针对上述技术问题,提供一种抖动缓冲数据处理的方法和装置,提高网络传输的实时性。
一种抖动缓冲数据处理的方法,所述方法包括:
当数据接收端接收到数据包时,获取所述数据包对应的当前序列号;
获取当前预期包及其对应的第一预期序列号,判断所述当前序列号与第一预期序列号之间的大小关系,如果所述当前序列号小于第一预期序列号,则丢弃所述数据包,等待接收下一个数据包;
如果所述当前序列号等于第一预期序列号,则将所述数据包提交至应用层,设置新的预期包,所述新的预期包对应的第二预期序列号为当前序列号加递增数值;
如果所述当前序列号大于第一预期序列号,则将所述数据包压入抖动缓冲区,根据抖动缓冲区中的数据包的序列号与当前预期序列号的大小关系弹出所述抖动缓冲区中的数据包至应用层,并根据弹出的数据包更新预期包。
一种抖动缓冲数据处理的装置,所述装置包括:
获取模块,用于当数据接收端接收到数据包时,获取所述数据包对应的当前序列号,获取当前预期包及其对应的第一预期序列号;
判断模块,用于判断所述当前序列号与第一预期序列号之间的大小关系,如果所述当前序列号小于第一预期序列号,则进入丢弃模块,如果所述当前序列号等于第一预期序列号,则进入数据提交模块,如果所述当前序列号大于第一预期序列号,则进入数据缓冲模块;
丢弃模块,用于丢弃所述数据包,等待接收下一个数据包;
数据提交模块,用于则将所述数据包提交至应用层,设置新的预期包,所述新的预期包对应的第二预期序列号为当前序列号加递增数值;
数据缓冲模块,用于将所述数据包压入抖动缓冲区,根据抖动缓冲区中的数据包的序列号与当前预期序列号的大小关系弹出所述抖动缓冲区中的数据包至应用层,并根据弹出的数据包更新预期包。
上述抖动缓冲数据处理的方法和装置,通过当数据接收端接收到数据包时,获取数据包对应的当前序列号,获取当前预期包及其对应的第一预期序列号,判断当前序列号与第一预期序列号之间的大小关系,如果当前序列号小于第一预期序列号,则丢弃数据包,等待接收下一个数据包,如果当前序列号等于第一预期序列号,则将数据包提交至应用层,设置新的预期包,新的预期包对应的第二预期序列号为当前序列号加递增数值,如果当前序列号大于第一预期序列号,则将数据包压入抖动缓冲区,根据抖动缓冲区中的数据包的序列号与当前预期序列号的大小关系弹出抖动缓冲区中的数据包至应用层,并根据弹出的数据包更新预期包,抖动缓冲区的长度不使用固定值,根据接收到的数据包的当前序列号与当前预期序列号的大小关系以及抖动缓冲区中的数据包的序列号与当前预期序列号的大小关系自动调整抖动缓冲区长度,从而达到网络状况智能适应,优质网络用户可达到高实时,提高了数据传输的实时性。
附图说明
图1为一个实施例中抖动缓冲数据处理的方法的应用环境图;
图2为一个实施例中图1中终端的内部结构图;
图3为一个实施例中图1中服务器的内部结构图;
图4为一个实施例中抖动缓冲数据处理的方法的流程图;
图5为一个实施例中根据接收的数据包是否是第一个数据包进行相应处理的流程图;
图6为一个实施例中根据抖动缓冲区中的数据包的序列号与当前预期序列号的大小关系弹出抖动缓冲区中的数据包至应用层,并根据弹出的数据包更新预期包的流程图;
图7为一个实施例中弹出抖动缓冲区中的数据包的流程图;
图8为一个具体的实施例中抖动缓冲数据处理的方法的过程示意图;
图9为一个实施例中抖动缓冲数据处理的装置的结构框图;
图10为一个实施例中获取模块的结构框图;
图11为一个实施例中数据缓冲模块的结构框图;
图12为另一个实施例中数据缓冲模块的结构框图。
具体实施方式
图1为一个实施例中抖动缓冲数据处理的方法运行的应用环境图。如图1所示,该应用环境包括终端110、服务器120,其中终端110和服务器120通过网络进行通信。
终端110可为智能手机、平板电脑、笔记本电脑、台式计算机等,但并不局限于此。终端110可通过网络从服务器120接收数据,如音视频数据等,或向服务器120发送数据等,服务器120可以响应终端110发送的视频传输请求等。
在一个实施例中,图1中的终端110的内部结构如图2所示,该终端110包括通过系统总线连接的处理器、图形处理单元、存储介质、内存、网络接口、显示屏幕和输入设备。其中,终端110的存储介质存储有操作系统,还包括第一抖动缓冲数据处理的装置,该装置用于实现一种适用于终端的抖动缓冲数据处理的方法。该处理器用于提供计算和控制能力,支撑整个终端110的运行。终端110中的图形处理单元用于至少提供显示界面的绘制能力,内存为存储介质中的第一抖动缓冲数据处理的装置的运行提供环境,网络接口用于与服务器120进行网络通信,如接收服务器120发送的音视频数据等。显示屏幕用于显示应用界面等,输入设备用于接收用户输入的命令或数据等。对于带触摸屏的终端110,显示屏幕和输入设备可为触摸屏。
在一个实施例中,图1中的服务器120的内部结构如图3所示,该服务器120包括通过系统总线连接的处理器、存储介质、内存和网络接口。其中,该服务器120的存储介质存储有操作系统、数据库和第二抖动缓冲数据处理的装置,数据库用于存储数据,如音视频数据,第二抖动缓冲数据处理的装置用于实现一种适用于服务器120的抖动缓冲数据处理的方法。该服务器120的处理器用于提供计算和控制能力,支撑整个服务器120的运行。该服务器120的内存为存储介质中的第二抖动缓冲数据处理的装置的运行提供环境。该服务器120的网络接口用于与外部的终端110通过网络连接通信,比如向终端110发送数据等。
在一个实施例中,如图4所示,提供了一种抖动缓冲数据处理的方法,以应用于上述应用环境中的终端或服务器来举例说明,包括以下步骤:
步骤S210,当数据接收端接收到数据包时,获取数据包对应的当前序列号,获取当前预期包及其对应的第一预期序列号。
具体的,每个数据包都有唯一的序列号,用于标识发送数据包的前后顺序,序列号随着数据包发送的先后顺序递增,递增的数值可以自定义,如每次递增1。预期包是指在正确的接收顺序下,相对于当前接收的数据包所对应的下一个数据包。预期序列号是正确的接收顺序下,下一个待接收的数据包对应的序列号。每当应用层接收到新的数据包后,都会更新预期包的预期序列号,从而保证下一个提交到应用层的数据包是与发送顺序相匹配的数据包。
步骤S220,判断当前序列号与第一预期序列号之间的大小关系,如果当前序列号小于第一预期序列号,则进入步骤S230,如果当前序列号等于第一预期序列号,则进入步骤S240,如果当前序列号大于第一预期序列号,则进入步骤S250。
具体的,如果当前序列号小于第一预期序列号,则说明当前接收到的数据包已经过期,进入步骤S230丢弃这个数据包。如果当前序列号等于第一预期序列号,则说明当前接收到的数据包刚好是应用层需要的正确接收顺序的数据包,则进入步骤S240,将此数据包提交给应用层。如果当前序列号大于第一预期序列号,则说明当前接收到的数据包是预期包之后发送的数据包但是先到达了接收端,此时进入步骤S250进行缓存。
步骤S230,丢弃数据包,等待接收下一个数据包。
具体的,如第一预期序列号pre_seqno为4,接收到的数据包对应的当前序列号seqno为1,seqno<pre_seqno,则说明此数据包已经过期,丢弃数据包,等待接收下一个数据包。
步骤S240,将数据包提交至应用层,设置新的预期包,新的预期包对应的第二预期序列号为当前序列号加递增数值。
具体的,如果接收到的数据包刚好是预期包,则直接提交至应用层,不用放入抖动缓冲区,免去了抖动缓冲区带来的延迟,实时性可以达到极限值。由于应用层接收到了数据包,则需要设置新的预期包,新的预期包的第二预期序列号为当前序列号加递增数值。这个递增数值与发送端连续发送的2个数据包的序列号的差值保持一致。
步骤S250,将数据包压入抖动缓冲区,根据抖动缓冲区中的数据包的序列号与当前预期序列号的大小关系弹出抖动缓冲区中的数据包至应用层,并根据弹出的数据包更新预期包。
具体的,每当应用层接收到的新的数据包时,设定了新的预期包后,都先根据抖动缓冲区中的数据包的序列号与当前预期序列号的大小关系检测当前预期包是否在抖动缓冲区中,如果是,则直接将抖动缓冲区的此数据包弹出至应用层,弹出此数据包后,更新当前预期包的序列号。在更新当前预期包的序列号后,可继续判断当前预期包是否在抖动缓冲区,可依次弹出抖动缓冲区中的多个数据包,可以自定义每次弹出的个数,通过弹出抖动缓冲区中的数据包,达到自动缩减抖动缓冲区的长度,自适应调整以达到最高实时性。
本实施例中,通过当数据接收端接收到数据包时,获取数据包对应的当前序列号,获取当前预期包及其对应的第一预期序列号,判断当前序列号与第一预期序列号之间的大小关系,如果当前序列号小于第一预期序列号,则丢弃数据包,等待接收下一个数据包,如果当前序列号等于第一预期序列号,则将数据包提交至应用层,设置新的预期包,新的预期包对应的第二预期序列号为当前序列号加递增数值,如果当前序列号大于第一预期序列号,则将数据包压入抖动缓冲区,根据抖动缓冲区中的数据包的序列号与当前预期序列号的大小关系弹出抖动缓冲区中的数据包至应用层,并根据弹出的数据包更新预期包,抖动缓冲区的长度不使用固定值,根据接收到的数据包的当前序列号与当前预期序列号的大小关系以及抖动缓冲区中的数据包的序列号与当前预期序列号的大小关系自动调整抖动缓冲区长度,从而达到网络状况智能适应,优质网络用户可达到高实时,提高了数据传输的实时性。
在一个实施例中,如图5所示,当数据接收端接收到数据包时,获取数据包对应的当前序列号的步骤之后,还包括:
步骤S310,判断数据包是否是数据接收端接收到的第一个数据包,如果是,则进入步骤S320,否则进入步骤S330。
具体的,如果是数据接收端接收到的第一个数据包,则直接进入步骤S320,提交至应用层。只有在接收到的数据包不是第一个数据包的情况下才会进入步骤S330,获取当前预期包及其对应的第一预期序列号,从而根据后续的步骤判断是否需要提交至应用层。
步骤S320,将数据包提交至应用层,设置初始预期包,初始预期包对应的初始预期序列号为当前序列号加递增数值。
具体的,在接收到第一个数据包时,直接提交至应用层,此数据包作为基准包,并且初始化预期包,初始预期序列号为当前序列号加递增数值,代表下一个应用层预期需要接收的数据包。
步骤S330,获取当前预期包及其对应的第一预期序列号。
在一个实施例中,如图6所示,步骤S250包括:
步骤S251,当应用层接收到数据包时,判断抖动缓冲区中是否为空,如果为空,则进入步骤S254,如果不为空,则进入步骤S252。
具体的,如果抖动缓冲区中为空,则没有数据包可以弹出至应用层,进入步骤S255等待接收下一个数据包。
步骤S252,判断抖动缓冲区中的数据包对应的最小序列号与当前预期序列号之间的大小关系,如果最小序列号等于当前预期序列号,则进入步骤S253,如果最小序列号大于当前预期序列号,则进入步骤S254。
具体的,弹出抖动缓冲区中的数据包时,先判断抖动缓冲区中序列号最小的数据包是否是预期包,因为如果最小的序列号不是预期序列号,则较大的序列号更不可能是预期序列号,可加快抖动缓冲区中是否存在预期包的判断速度。
步骤S253,将最小序列号对应的数据包弹出至应用层,并设置新的预期包,新的预期包对应的第三预期序列号为最小序列号加递增数值。
具体的,如果最小序列号与当前预期序列号相等,则说明此最小序列号对应的数据包为预期包,可直接弹出至应用层。并设置新的预期包,新的预期包对应的第三预期序列号为最小序列号加递增数值。在弹出最小序列号对应的数据包后,由于当前预期序列号已经更新可继续进入步骤S253,在符合条件时弹出下一个数据包。
步骤S254,等待接收下一个数据包。
具体的,如果最小序列号大于当前预期序列号,则不用比较其它的序列号,只用等待接收下一个数据包。
本实施例中,通过比较最小序列号与当前预期序列号的关系弹出抖动缓冲区中的数据包,加快了弹出效率。
在一个实施例中,步骤S250中将数据包压入抖动缓冲区的步骤之后,还包括:将抖动缓冲区中的数据包按照序列号的大小排序。
具体的,在等待接收数据包的同时将抖动缓冲区中的数据包按照序列号的大小排序,从而在后续可直接获取抖动缓冲区中数据包的最小序列号,加快了弹出抖动缓冲区中数据包的速度。
在一个实施例中,如图7所示,在步骤S253判断出最小序列号大于当前预期序列号的步骤之后,还包括:
步骤S410,获取应用层上一次接收到数据包的时刻至当前时间的时间间隔,判断时间间隔是否超过预设阈值,如果是,则进入步骤S420,如果时间间隔没有超过预设阈值,则进入步骤S430。
具体的,如果应用层距离上一次接收到数据的时间间隔超过预设阈值,则很可能是在传输的过程中预期数据包丢失,导致始终不能向应用层提交下一个数据包。检测出这种情况出现,则进入步骤S420。
步骤S420,将最小序列号对应的数据包弹出至应用层。
具体的,在预期数据包丢失的情况下,可直接将最小序列号对应的数据包弹出至应用层以保证应用层对数据包使用的连续性,如数据包是视频数据,则可保证视频播放不中断。
步骤S430,等待接收下一个数据包。
下面以一个具体的实施例来说明抖动缓冲数据处理的方法的过程,结合图8所示,包括以下步骤:
步骤S510:数据接收端接收到第一个数据包,获取此数据包对应的当前序列号为seqno。
步骤S520:将数据包提交至应用层,设置预期包,预期包对应的预期序列号pre_seqno为seqno+1。
步骤S530:当应用层接收到数据包时,判断抖动缓冲区中是否为空,如果为空,则进入步骤S540,如果不为空,则判断抖动缓冲区中的数据包对应的最小序列号min_seqno与当前预期序列号pre_seqno之间的大小关系,如果min_seqno>pre_seqno,则进入步骤S540。如果min_seqno与pre_seqno相等,则当前序列号seqno=min_seqno,且进入步骤S520。
步骤S540,等待接收下一个数据包。
步骤S550,当数据接收端接收到数据包时,获取数据包对应的当前序列号seqno,获取当前预期包及其对应的当前预期序列号pre_seqno,判断当前序列号seqno与当前预期序列号pre_seqno之间的大小关系,如果seqno<pre_seqno,则丢弃数据包,等待接收下一个数据包,如果seqno与pre_seqno相等,则进入步骤S520。如果seqno>pre_seqno,则进入步骤S560。
步骤S560,将数据包压入抖动缓冲区,返回步骤S540等待接收下一个数据包。
在一个实施例中,如图9所示,提供了一种抖动缓冲数据处理的装置,包括:
获取模块610,用于当数据接收端接收到数据包时,获取数据包对应的当前序列号,获取当前预期包及其对应的第一预期序列号。
判断模块620,用于判断当前序列号与第一预期序列号之间的大小关系,如果当前序列号小于第一预期序列号,则进入丢弃模块,如果当前序列号等于第一预期序列号,则进入数据提交模块,如果当前序列号大于第一预期序列号,则进入数据缓冲模块。
丢弃模块630,用于丢弃数据包,等待接收下一个数据包。
数据提交模块640,用于则将数据包提交至应用层,设置新的预期包,新的预期包对应的第二预期序列号为当前序列号加递增数值。
数据缓冲模块650,用于将数据包压入抖动缓冲区,根据抖动缓冲区中的数据包的序列号与当前预期序列号的大小关系弹出抖动缓冲区中的数据包至应用层,并根据弹出的数据包更新预期包。
在一个实施例中,如图10所示,获取模块610包括:
判断单元611,用于判断数据包是否是数据接收端接收到的第一个数据包,如果是,则进入初始单元612,否则获取当前预期包及其对应的第一预期序列号。
初始单元612,用于将数据包提交至应用层,设置初始预期包,初始预期包对应的初始预期序列号为当前序列号加递增数值。
在一个实施例中,如图11所示,数据缓冲模块650包括:
缓冲区判断单元651,用于当应用层接收到数据包时,判断抖动缓冲区中是否为空,如果为空,则进入等待单元654,如果不为空,则进入序列号判断单元652。
序列号判断单元652,用于判断抖动缓冲区中的数据包对应的最小序列号与当前预期序列号之间的大小关系,如果最小序列号等于当前预期序列号,则进入弹出单元653,如果最小序列号大于当前预期序列号,则进入等待单元554。
弹出单元653,用于将最小序列号对应的数据包弹出至应用层,并设置新的预期包,新的预期包对应的第三预期序列号为最小序列号加递增数值。
等待单元654,用于等待接收下一个数据包。
在一个实施例中,数据缓冲模块还用于将抖动缓冲区中的数据包按照序列号的大小排序。
在一个实施例中,如图12所示,数据缓冲模块650还包括:
时间判断单元655,用于获取应用层上一次接收到数据包的时刻至当前时间的时间间隔,判断时间间隔是否超过预设阈值,如果是,则进入弹出单元,否则进入等待单元。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述程序可存储于一计算机可读取存储介质中,如本发明实施例中,该程序可存储于计算机系统的存储介质中,并被该计算机系统中的至少一个处理器执行,以实现包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (12)

1.一种抖动缓冲数据处理的方法,其特征在于,所述方法包括:
当数据接收端接收到数据包时,获取所述数据包对应的当前序列号;
获取当前预期包及其对应的第一预期序列号,判断所述当前序列号与第一预期序列号之间的大小关系,如果所述当前序列号小于第一预期序列号,则丢弃所述数据包,等待接收下一个数据包;
如果所述当前序列号等于第一预期序列号,则将所述数据包提交至应用层,设置新的预期包,所述新的预期包对应的第二预期序列号为当前序列号加递增数值;
如果所述当前序列号大于第一预期序列号,则将所述数据包压入抖动缓冲区,根据抖动缓冲区中的数据包的序列号与当前预期序列号的大小关系弹出所述抖动缓冲区中的数据包至应用层,并根据弹出的数据包更新预期包,每当应用层接收到的新的数据包时,设定了新的预期包后,都先根据抖动缓冲区中的数据包的序列号与当前预期序列号的大小关系检测当前预期包是否在抖动缓冲区中,如果是,则直接将抖动缓冲区的此数据包弹出至应用层,弹出此数据包后,更新当前预期包的序列号,在更新当前预期包的序列号后,继续判断当前预期包是否在抖动缓冲区,可依次弹出抖动缓冲区中的多个数据包,自定义每次弹出的个数,通过弹出抖动缓冲区中的数据包,自动缩减抖动缓冲区的长度,所述抖动缓冲区的长度根据接收到的数据包的当前序列号与当前预期序列号的大小关系以及抖动缓冲区中的数据包的序列号与当前预期序列号的大小关系自动调整。
2.根据权利要求1所述的方法,其特征在于,所述当数据接收端接收到数据包时,获取所述数据包对应的当前序列号的步骤之后,还包括:
判断所述数据包是否是数据接收端接收到的第一个数据包,如果是,则将所述数据包提交至应用层,设置初始预期包,所述初始预期包对应的初始预期序列号为当前序列号加递增数值;
如果所述数据包不是数据接收端接收到的第一个数据包,则进入所述获取当前预期包及其对应的第一预期序列号的步骤。
3.根据权利要求1所述的方法,其特征在于,所述根据抖动缓冲区中的数据包的序列号与当前预期序列号的大小关系弹出抖动缓冲区中的数据包至应用层,并根据弹出的数据包更新预期包的步骤包括:
当应用层接收到数据包时,判断抖动缓冲区中是否为空,如果为空,则等待接收下一个数据包;
如果不为空,则判断所述抖动缓冲区中的数据包对应的最小序列号与当前预期序列号之间的大小关系,如果所述最小序列号等于当前预期序列号,则将所述最小序列号对应的数据包弹出至应用层,并设置新的预期包,所述新的预期包对应的第三预期序列号为所述最小序列号加递增数值;
如果所述最小序列号大于当前预期序列号,则等待接收下一个数据包。
4.根据权利要求1所述的方法,其特征在于,所述将所述数据包压入抖动缓冲区的步骤之后,还包括:
将所述抖动缓冲区中的数据包按照序列号的大小排序。
5.根据权利要求3所述的方法,其特征在于,所述如果所述最小序列号大于当前预期序列号的步骤之后,还包括:
获取应用层上一次接收到数据包的时刻至当前时间的时间间隔;
判断所述时间间隔是否超过预设阈值,如果是,则进入所述将所述最小序列号对应的数据包弹出至应用层的步骤;
如果所述时间间隔没有超过预设阈值,则进入所述等待接收下一个数据包的步骤。
6.一种抖动缓冲数据处理的装置,其特征在于,所述装置包括:
获取模块,用于当数据接收端接收到数据包时,获取所述数据包对应的当前序列号,获取当前预期包及其对应的第一预期序列号;
判断模块,用于判断所述当前序列号与第一预期序列号之间的大小关系,如果所述当前序列号小于第一预期序列号,则进入丢弃模块,如果所述当前序列号等于第一预期序列号,则进入数据提交模块,如果所述当前序列号大于第一预期序列号,则进入数据缓冲模块;
丢弃模块,用于丢弃所述数据包,等待接收下一个数据包;
数据提交模块,用于则将所述数据包提交至应用层,设置新的预期包,所述新的预期包对应的第二预期序列号为当前序列号加递增数值;
数据缓冲模块,用于将所述数据包压入抖动缓冲区,根据抖动缓冲区中的数据包的序列号与当前预期序列号的大小关系弹出所述抖动缓冲区中的数据包至应用层,并根据弹出的数据包更新预期包,每当应用层接收到的新的数据包时,设定了新的预期包后,都先根据抖动缓冲区中的数据包的序列号与当前预期序列号的大小关系检测当前预期包是否在抖动缓冲区中,如果是,则直接将抖动缓冲区的此数据包弹出至应用层,弹出此数据包后,更新当前预期包的序列号,在更新当前预期包的序列号后,继续判断当前预期包是否在抖动缓冲区,可依次弹出抖动缓冲区中的多个数据包,自定义每次弹出的个数,通过弹出抖动缓冲区中的数据包,自动缩减抖动缓冲区的长度,所述抖动缓冲区的长度根据接收到的数据包的当前序列号与当前预期序列号的大小关系以及抖动缓冲区中的数据包的序列号与当前预期序列号的大小关系自动调整。
7.根据权利要求6所述的装置,其特征在于,所述获取模块包括:
判断单元,用于判断所述数据包是否是数据接收端接收到的第一个数据包,如果是,则进入初始单元,否则获取当前预期包及其对应的第一预期序列号;
初始单元,用于将所述数据包提交至应用层,设置初始预期包,所述初始预期包对应的初始预期序列号为当前序列号加递增数值。
8.根据权利要求6所述的装置,其特征在于,所述数据缓冲模块包括:
缓冲区判断单元,用于当应用层接收到数据包时,判断抖动缓冲区中是否为空,如果为空,则进入等待单元,如果不为空,则进入序列号判断单元;
序列号判断单元,用于判断所述抖动缓冲区中的数据包对应的最小序列号与当前预期序列号之间的大小关系,如果所述最小序列号等于当前预期序列号,则进入弹出单元,如果所述最小序列号大于当前预期序列号,则进入等待单元;
弹出单元,用于将所述最小序列号对应的数据包弹出至应用层,并设置新的预期包,所述新的预期包对应的第三预期序列号为所述最小序列号加递增数值;
等待单元,用于等待接收下一个数据包。
9.根据权利要求6所述的装置,其特征在于,所述数据缓冲模块还用于将所述抖动缓冲区中的数据包按照序列号的大小排序。
10.根据权利要求8所述的装置,其特征在于,所述数据缓冲模块还包括:
时间判断单元,用于获取应用层上一次接收到数据包的时刻至当前时间的时间间隔,判断所述时间间隔是否超过预设阈值,如果是,则进入弹出单元,否则进入等待单元。
11.一种计算机设备,其特征在于,包括存储介质和处理器,所述存储介质中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行权利要求1至5中任一项权利要求所述方法的步骤。
12.一种计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行权利要求1至5中任一项权利要求所述方法的步骤。
CN201610210838.2A 2016-04-06 2016-04-06 抖动缓冲数据处理的方法和装置 Active CN105743815B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610210838.2A CN105743815B (zh) 2016-04-06 2016-04-06 抖动缓冲数据处理的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610210838.2A CN105743815B (zh) 2016-04-06 2016-04-06 抖动缓冲数据处理的方法和装置

Publications (2)

Publication Number Publication Date
CN105743815A CN105743815A (zh) 2016-07-06
CN105743815B true CN105743815B (zh) 2021-09-10

Family

ID=56252856

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610210838.2A Active CN105743815B (zh) 2016-04-06 2016-04-06 抖动缓冲数据处理的方法和装置

Country Status (1)

Country Link
CN (1) CN105743815B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106992987A (zh) * 2017-04-15 2017-07-28 北京科罗菲特科技有限公司 一种基于usb的信息传输设备及方法
CN109714326A (zh) * 2018-12-21 2019-05-03 北京明朝万达科技股份有限公司 一种应用层数据顺序组包方法、装置、设备及存储介质
CN109672590A (zh) * 2019-01-10 2019-04-23 平安科技(深圳)有限公司 数据采集方法、装置、设备及计算机可读存储介质
CN109818884A (zh) * 2019-02-01 2019-05-28 深圳市比速智网技术有限公司 多链路数据传输方法、发送装置、接收装置及存储介质
CN109936514B (zh) * 2019-04-29 2022-06-21 新华三信息安全技术有限公司 一种报文处理方法和装置
CN112235234A (zh) * 2020-07-30 2021-01-15 视联动力信息技术股份有限公司 数据处理方法、装置、电子设备及计算机可读存储介质
CN114501114A (zh) * 2022-02-11 2022-05-13 福建星网智慧科技有限公司 一种音频网络自适应方法和存储设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1677953A (zh) * 2004-04-02 2005-10-05 华为技术有限公司 适配网络尖峰的动态抖动缓存的实现方法
CN101146024A (zh) * 2006-09-11 2008-03-19 中兴通讯股份有限公司 业务特定面向连接协议中对有序数据序号的判断处理方法
CN101175104A (zh) * 2006-10-31 2008-05-07 华为技术有限公司 一种抖动缓存装置和抖动缓存管理方法
CN101304557A (zh) * 2008-04-25 2008-11-12 华为技术有限公司 一种分组传输控制方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6765885B2 (en) * 2001-02-09 2004-07-20 Asustek Computer Inc. Determination of acceptable sequence number ranges in a communications protocol
CN1960315B (zh) * 2005-10-31 2010-08-25 康佳集团股份有限公司 流媒体去抖动方法
CN101686494B (zh) * 2008-09-22 2012-07-04 电信科学技术研究院 一种分组数据汇聚协议层处理数据包的方法和装置
JP2013511857A (ja) * 2009-09-23 2013-04-04 エアロバイロメント,インコーポレイテッド 性能監視を使用するマルチパスネットワーク常用冗長性
CN104506455B (zh) * 2014-12-26 2017-11-14 深圳市兰丁科技有限公司 数据包排序去抖方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1677953A (zh) * 2004-04-02 2005-10-05 华为技术有限公司 适配网络尖峰的动态抖动缓存的实现方法
CN101146024A (zh) * 2006-09-11 2008-03-19 中兴通讯股份有限公司 业务特定面向连接协议中对有序数据序号的判断处理方法
CN101175104A (zh) * 2006-10-31 2008-05-07 华为技术有限公司 一种抖动缓存装置和抖动缓存管理方法
CN101304557A (zh) * 2008-04-25 2008-11-12 华为技术有限公司 一种分组传输控制方法及装置

Also Published As

Publication number Publication date
CN105743815A (zh) 2016-07-06

Similar Documents

Publication Publication Date Title
CN105743815B (zh) 抖动缓冲数据处理的方法和装置
CN110972102B (zh) 资源选择方法及终端
WO2020007340A1 (zh) Pucch冲突的处理方法和终端
EP3547715B1 (en) Method and apparatus for reducing continuous-wakeup delay of bluetooth loudspeaker, and bluetooth loudspeaker
CN103440867A (zh) 语音识别方法及系统
WO2021237433A1 (zh) 消息推送方法、装置、电子设备及计算机可读介质
CN107426113B (zh) 报文接收方法及网络设备
CN108418743B (zh) 一种聊天室消息分发方法、装置及电子设备
WO2020135776A1 (zh) 交互数据的传输方法、装置、终端及服务器
WO2023103419A1 (zh) 基于消息队列的5g消息批量发送方法、装置及电子设备
US20210256057A1 (en) Method for playing audio, device, terminal, server and storage medium
CN112333114B (zh) 数据传输方法、装置、存储介质、终端及网络接入点设备
CN103975569A (zh) 用于仲裁时间敏感数据传输的方法和装置
CN108039998B (zh) 邮件处理方法及收件侧终端、发件侧终端和邮件系统
WO2021052128A1 (zh) 通知消息控制方法及相关装置
WO2018103378A1 (zh) 数据发送方法及移动终端
WO2011153860A1 (zh) 处理网络拥塞的方法、装置和核心网络实体
CN109889613B (zh) 一种消息推送方法、装置和移动终端
WO2020134865A1 (zh) 一种交互数据分发控制方法、装置、电子设备及存储介质
CN108781348B (zh) 一种调度方法及终端
WO2021068873A1 (zh) 资源共享方法、终端及网络设备
CN114363379A (zh) 车辆数据传输的方法、装置、电子设备及介质
CN109657173B (zh) 一种网络资源加载方法及装置
CN109413592B (zh) 一种广播方法和移动终端
CN110661731A (zh) 一种报文处理方法及其装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant