专利名称:码流中数据包的发送控制方法和装置的制作方法
技术领域:
本发明涉及通信技术领域,尤其涉及一种码流中数据包的发送控制方 法和装置。
背景技术:
在基于IP (Internet Protocol,因特网协议)的视频监控、视频会议等 应用中,视频监控终端或视频会议终端等设备的编码单元对摄像头传送过 来的模拟视频信号进行数字化处理,并按指定格式如MPEG4、 H264等压 缩编码封装成数据包发送。该过程中,设备的釆样总是按照特定的频率例 如每秒25帧采样,因此编码单元会在采样的瞬间输出大量的IP包,以每 秒25帧为例,帧间间隔为40ms,则一个帧所产生的多个数据包并没有均 匀分布在这40ms中,而是集中在釆样的几个ms的瞬间。实时产生的视频 流的这个特点对IP网络来说是一个不利的因素,因为这会导致瞬态的流量 过大,如果超过网络节点的转发緩冲能力,就会造成丢包并引起视频质量 的下降。
另外,目前一般所说的视频流的码率指的是平均码率,如一个GOP (Group Of Pictures,图组)周期内的平均码率。在一个GOP周期内,数据 总是集中在采样的瞬间,所以在I帧和P帧的瞬间,其码率要比平均码率 高出很多。对此,理想的数据发送效果在于编码单元将一个GOP周期中 产生的包均匀地在一个GOP周期内发送完毕。
针对该问题,现有技术中提出了一种基于緩沖和延时发送的方法,把 在采样瞬间产生的包緩存起来,并按一定的时间间隔和预设的若干缓存包 数量门限逐步发送。而实际中由于GOP周期开始处的I帧总是产生很多包, 所以开始时,产生过程总是领先于发送过程,之后,发送过程渐渐超过产 生过程,在GOP周期的结束处达到一致。因此现有技术的上述基于緩冲和
延时发送的方法中,只通过预设若干关于緩存包数量的门限,很难实现理 想的数据发送效果。
发明内容
本发明提供 一 种码流中数据包的发送控制方法和装置,用于对码流中 数据包的发送进行控制,使得所产生的数据包能够按照以 一定的发送速度 均匀地发送。
本发明提供一种码流中数据包的发送控制方法,包括 根据码流中数据包的发送情况,判断码流中数据包的发送速度; 根据所述码流中数据包的发送速度,调整发送周期内累计发送数据包 长度的门限;
根据所述门限,对当前发送周期内累计发送数据包的长度进行控制。 其中,所述根据码流中数据包的发送速度,调整发送周期内累计发送
数据包长度的门限前还包括
设置发送周期内累计发送数据包长度的门限的初始值。
其中,所述发送周期内累计发送数据包长度的门限的初始值,由发送
周期以及平均码率确定。
其中,所述根据码流中数据包的发送情况,判断码流中数据包的发送
速度包括;
当接收到的连续两个I帧首包的间隔大于预设的I帧首包时间间隔时, 判断所述码流中数据包的发送速度为慢速。
其中,所述根据码流中数据包的发送情况,判断码流中数据包的发送 速度包括;
当等待数字信号处理芯片发送除I帧首包外的其他数据包时,判断所 述码流中数据包的发送速度为快速。
其中,所述根据码流中数据包的发送速度,调整发送周期内累计发送 数据包长度的门限包括
判断所述码流中数据包的发送速度为慢速时,增加所述发送周期内累
计发送数据包长度的门限;
判断所述码流中数据包的发送速度为快速时,减少所述发送周期内累 计发送数据包长度的门限。
其中,所述根据门限,对当前发送周期内累计发送数据包的长度进行
控制包括
当前发送周期内累计发送数据包的长度超过所述门限时,将所述发送 周期内累计发送数据包的长度与所述门限的差值更新为发送周期内累计发 送数据包的长度,或将发送周期内累计发送数据包的长度设置为零;并定 时等待一个发送周期;
当前发送周期内累计发送数据包的长度未超过所述门限时,从数字信 号处理芯片取出下一个数据包进行发送,并将所述下一个数据包的长度累 加到所述当前发送周期内累计发送数据包的长度。
本发明还提供一种码流中数据包的发送控制装置,包括
发送速度判断单元,用于根据码流中数据包的发送情况,判断码流中 数据包的发送速度;
门限调整单元,用于根据所述发送速度判断单元判断的发送速度,调 整发送周期内累计发送数据包长度的门限;
发送控制单元,用于根据所述门限调整单元调整的门限,对当前发送 周期内累计发送数据包的长度进行控制。
其中,还包括
初始门限设置单元,用于设置发送周期内累计发送数据包长度的门限 的初始值并提供给所述门限调整单元;所述发送周期内累计发送数据包长 度的门限的初始值,由发送周期以及平均码率确定。
其中,所述发送速度判断单元包括
第一判断子单元,用于当接收到的连续两个I帧首包的间隔大于预设 的I帧首包时间间隔时,判断所述码流中数据包的发送速度为慢速;
第二判断子单元,用于当等待数字信号处理芯片发送除I帧首包外的 其他数据包时,判断所述码流中数据包的发送速度为快速。
其中,所述门限调整单元包括
第一调整子单元,用于在所述发送速度判断单元判断所述码流中数据 包的发送速度为慢速时,增加所述发送周期内累计发送数据包长度的门限;
第二调整子单元,用于在所述发送速度判断单元判断所述码流中数据 包的发送速度为快速时,减少所述发送周期内累计发送数据包长度的门P艮。
其中,所述发送控制单元包括
第 一发送控制子单元,用于当前发送周期内累计发送数据包的长度超 过所述门限时,将所述发送周期内累计发送数据包的长度与所述门限的差 值更新为发送周期内累计发送数据包的长度;并定时等待一个发送周期;
第二发送控制子单元,用于当前发送周期内累计发送数据包的长度未 超过所述门限时,从数字信号处理芯片取出下一个数据包进行发送,并将 所述下一个数据包的长度累加到所述当前发送周期内累计发送数据包的长 度。
与现有技术相比,本发明具有以下优点
根据码流中数据包的发送速度,对一个发送周期内累计发送数据包长 度的门限进行动态调整,实现了对码流中数据包发送的有效控制,使得所 产生的数据包能够按照以 一 定的发送速度均匀地发送。
图1为本发明码流中数据包的发送控制方法的流程图; 图2为本发明码流中数据包的发送控制方法的另 一 流程图; 图3为本发明码流中数据包的发送控制装置的结构示意图; 图4为本发明码流中数据包的发送控制装置的另 一 结构示意图。
具体实施例方式
以下结合附图和实施例,对本发明的实施方式作进一步说明。 本发明提供一种码流中数据包的发送控制方法,如图1所示,包括以 下步骤
步骤sl01、根据码流中数据包的发送情况,判断码流中数据包的发送速度。
具体的发送速度判断方法可以为
(1 )当接收到的连续两个I帧首包的间隔大于预设的I帧首包时间间 隔时,判断所述码流中数据包的发送速度为慢速。
(2)当等待数字信号处理芯片DSP发送除I帧首包外的其他数据包 时,判断所述码流中数据包的发送速度为快速。
关于发送速度的判断方法并不限于上述两种,也可以使用其他方法对 码流中数据包的发送速度进行判断。
步骤sl02、根据码流中数据包的发送速度,调整发送周期内累计发送 数据包长度的门限。
具体的,发送周期内累计发送数据包长度的门限的初始值可以由发送 周期以及平均码率确定。
门限的调整方法具体为
(1) 当判断所述码流中数据包的发送速度为慢速时,增加所述发送周 期内累计发送数据包长度的门限。
(2) 当判断所述码流中数据包的发送速度为快速时,减少所述发送周 期内累计发送数据包长度的门限。
上述码流中数据包的发送速度具体是指当基于平均码率不断有数据 包生成时,在一个发送周期内能够向外发送多少数量的数据包。 一个发送 周期内发送的数据包数量越多,则发送速度越快; 一个发送周期内发送的 数据包数量越少,则发送速度越慢。
步骤sl03、根据所述门限,对当前发送周期内累计发送数据包的长度 进行控制。本发明所述方法的一个基本要求在于每当累计发送数据包的 长度等于或超过门限时,等待一个发送周期。
具体的,该控制包括
(1) 当前发送周期内累计发送数据包的长度等于或超过所述门限时, 将所述发送周期内累计发送数据包的长度与所述门限的差值更新为发送周 期内累计发送数据包的长度(即将本次超过门限多发送的数据包长度,累 加到下一个发送周期内的累计发送数据包长度中),或将发送周期内累计发 送数据包的长度设置为零(即从零开始对下一发送周期内的累计发送数据
包长度进行统计);并定时等待一个发送周期。
(2) 当前发送周期内累计发送数据包的长度未超过所述门限时,从 DSP取出下 一个数据包进行发送,并将所述下 一个数据包的长度累加到所 述当前发送周期内累计发送数据包的长度。
以下对本发明中码流中数据包的发送控制方法进行详细介绍,如图2 所示,包括以下步骤
步骤s201、获取系统时钟粒度T;根据平均码率,获取在时间T内所 能发送的字节数L。若以T作为一个发送周期,则本发明中的一个基本要 求为每发送L个字节,定时等待时间T。
具体的,根据编码格式、分辨率等的设置,可以获取到平均码率,进 而可以获取时间T中产生的数据量L。例如,在ARM CPU ( Central Processing Unit,中央处理单元)的Linux嵌入式系统中,T=10ms,假设 平均码率为10bytes/ms,则在时间T内所产生并需要发送的字节数L=100 bytes 。
步骤s202、初始化发送周期内累计发送数据包长度的门限为KL,初 始化发送周期内累计发送数据包长度为0,初始化接收到前一个I帧首包 的时间为无效值。
具体的,理论上在时间T内所能发送的字节数L,等同于每发送L个 字节则等待时间T。但进一步考虑到发送字节的动作本身也需要时间(假 设发送L个字节所需的时间为t),则实际上发送L个字节所需的时间为 T+t,因此需要调整时间T内发送的字节的数量为KL, K= (T+t) /T。初 始化发送周期内累计发送数据包长度的门限为KL,本实施例中设系数
K=1.2。
以上述ARM CPU的Linux嵌入式系统为例,在T=10ms内所能产生 并需要发送的字节为100bytes,在发送数据不占用时间的假设下,可以认 为这100个字节在每个10ms开始的一瞬间发送完成,并在每发送100个 字节后等待时间10ms;则依照该假设,可将每个10ms内所产生的全部数 据发送完成。但考虑到实际中发送100个字节也需要时间tms,因此若每 发送100个字节后等待时间10ms,则只能将每个10ms内产生的100个字 节进行发送,而该发送100个字节的时间t ms内产生的字节(数量为10t 个字节)将没有时间进行发送。基于该考虑,需要对10ms内发送的字节 的数量进行调整。假设发送100个字节所需的时间为t=lms,则调整时间 T=10ms内发送的字节的数量为100x(10+l)/10-110个字节,即每发送110 个字节后等待时间10ms。因此可以初始化发送周期内累计发送数据包长度 的门限为110个字节。
当然,该门限值KL的设置只是一个较粗略的设置,与直接将门限值 设置为L相比更加符合实际情况。在后续的过程中,将根据实际的数据发 送速度对该门限值进行调整,以满足实际需要。
初始化周期内累计发送数据包长度SUM二O,之后每发送一个包,对周 期内累计发送数据包长度SUM进行累加。
在未接收到I帧首包时,初始化接收到前一个I帧首包的时间TIME 为无效值。接收到第 一 个I帧首包时,将接收到前 一 个I帧首包的时间TIME 设置为有效值并记录接收到I帧首包的时间。之后每次接收到一个I帧首 包,对接收到I帧首包的时间TIME进行记录。
步骤s203、从DSP芯片取包发送,对发送周期内累计发送数据包长度 进行累加。
具体的,设包长X,则对周期内累计发送数据包长度SUM进行累加 SUM = SUM+X。
步骤s204、判断接收到的包是否为I帧首包且接收到前一个I帧首包 的时间为有效值,是则进行步骤s205,否则进行步骤s207。
步骤s205、获取当前时间,判断当前时间与接收到前一个I帧首包的 时间之差是否大于GOP间隔,是则进行步骤s206,否则进行步骤s207。
具体的,设当前时间为CUR—TIME并计算(CURJHME-TIME)的值, 判断该值是否大于GOP间隔(即理论的I帧首包时间间隔)。另外,还需 要将CUR—TIME的值赋给TIME,以对接收到前一个I帧首包的时间进行 更新。
步骤s206、增加K的值。例如设步长为O.l,贝'j K=K+0.1。该步长的 大小可以根据需要进行调整。
具体的,当(CUR—TIME-TIME )的值大于GOP间隔即理论的I帧首 包时间间隔时,可以认为码流中数据包的发送速度过慢,则增加K的值, 从而增加了发送周期内累计发送数据包长度的门限。
步骤s207、判断是否需要等待DSP出数据,是则进行步骤s208,否 则进行步骤s209。
步骤s208、减小K的值。例如设步长为0.1,则K=K-0.1。该步长的 大小可以根据需要进行调整。
具体的,当需要等待DSP出数据时,可以认为码流中数据包的发送速 度过快,则减小K的值,从而减小了发送周期内累计发送数据包长度的门 限。需要说明的是,当一个GOP结束等待下一个GOP的I帧首包时,这 时的等待是正常等待,不能认为是数据包的发送速度过快。
步骤s209、判断发送周期内累计发送数据包长度SUM是否大于等于 发送周期内累计发送数据包长度的门限KL,是则进行步骤s210,否则进 行步骤s203。
步骤s210、初始化SUM的值并定时等待时间T,之后进行步骤s203。 可以初始化SUM的值为SUM=0、或SUM-SUM-KL。将SUM的值初 始化为SUM-KL的考虑在于将本次超过门限KL多发送的数据包长度值 SUM-KL,累加到下一个发送周期内的累计发送数据包长度SUM中。
需要说明的是,本发明的上述流程中,通过乘以变化的系数K对发送 周期内累计发送数据包长度的门限进行调整,但该门限的调整方法并不限
于此,也可以通过其他方法如通过增加或减少固定值等对门限进行调整。
对于其他调整方法,其实质与上述图2所示的流程相似,在此不进行重复介绍。
通过使用本发明提供的方法,根据码流中数据包的发送速度,对一个 发送周期内累计发送数据包长度的门限进行动态调整,实现了对码流中数 据包发送的有效控制,使得所产生的数据包能够按照以一定的发送速度均 匀地发送。另外本发明提供的方法中,将发送相邻的I帧首包时间间隔是
否大于一个GOP周期作为判断是否发送过慢的依据、将是否等待DSP出 包作为判断是否发送过快的依据,因此当发送速度达到一个合适的值时, 上述方法所涉及的门限也将稳定,此时一个GOP周期中产生的包将恰好在 一个GOP周期中被全部发送出去。这是因为如果一个GOP周期中产生的 包在一个GOP周期中没有全部发送出去,则必然导致发送相邻的I帧首包 时间间隔大于一个GOP周期被判断为发送过慢;而如果一个GOP周 期中产生的包在不到一个GOP周期即全部发送完成,则将导致等待DSP 出数据,并被判断为发送过快。因此,本发明的方法使得一个GOP周期中 产生的包能够均匀地在一个GOP周期内进行发送。
本发明中还提供一种码流中数据包的发送控制装置,其结构如图3所 示,包括
发送速度判断单元IO,用于根据码流中数据包的发送情况,判断码流 中数据包的发送速度。
门限调整单元20,用于根据码流中数据包的发送速度,调整发送周期 内累计发送数据包长度的门限。
发送控制单元30,用于根据所述门限调整单元20调整的门限,对当 前发送周期内累计发送数据包的长度进行控制。
本发明中发送控制装置的结构还可以如图4所示,进一步包括
初始门限设置单元40,用于设置发送周期内累计发送数据包长度的门 限的初始值并提供给门限调整单元20;所述发送周期内累计发送数据包长 度的门限的初始值,由发送周期以及平均码率确定。
另外,上述发送速度判断单元IO还可以具体包括
第一判断子单元11,用于当接收到的连续两个I帧首包的间隔大于预 设的I帧首包时间间隔时,判断所述码流中数据包的发送速度为慢速。
第二判断子单元12,用于当等待DSP发送除I帧首包外的其他数据包 时,判断所述码流中数据包的发送速度为快速。
另外,上述门限调整单元20还可以具体包括
第一调整子单元21,用于在发送速度判断单元10判断所述码流中数 据包的发送速度为慢速时,增加所述发送周期内累计发送数据包长度的门限。
第二调整子单元22,用于在发送速度判断单元10判断所述码流中数 据包的发送速度为快速时,减少所述发送周期内累计发送数据包长度的门 限。
另外,上述发送控制单元30还可以具体包括
第 一发送控制子单元31,用于当前发送周期内累计发送数据包的长度 等于或超过所述门限时,将所述发送周期内累计发送数据包的长度与所述 门限的差值更新为发送周期内累计发送数据包的长度;并定时等待一个发 送周期。
第二发送控制子单元32,用于当前发送周期内累计发送数据包的长度 未超过所述门限时,从DSP取出下一个数据包进行发送,并将所述下一个 数据包的长度累加到所述当前发送周期内累计发送数据包的长度。
通过使用本发明提供的装置,根据码流中数据包的发送速度,对一个 发送周期内累计发送数据包长度的门限进行动态调整,实现了对码流中数 据包发送的有效控制,使得所产生的数据包能够按照以一定的发送速度均 匀地发送。另外,使得一个GOP周期中产生的包能够均匀地在一个GOP 周期内进行发送。
过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发 明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实 现基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,
该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM, U盘, 移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计 算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的 普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进 和润饰,这些改进和润饰也应视为本发明的保护范围。
权利要求
1、一种码流中数据包的发送控制方法,其特征在于,包括根据码流中数据包的发送情况,判断码流中数据包的发送速度;根据所述码流中数据包的发送速度,调整发送周期内累计发送数据包长度的门限; 根据所述门限,对当前发送周期内累计发送数据包的长度进行控制。
2、 如权利要求l所述的方法,其特征在于,所述根据码流中数据包的 发送速度,调整发送周期内累计发送数据包长度的门限前还包括设置发送周期内累计发送数据包长度的门限的初始值。
3、 如权利要求2所述的方法,其特征在于,所述发送周期内累计发送 数据包长度的门限的初始值,由发送周期以及平均码率确定。
4、 如权利要求l所述的方法,其特征在于,所述根据码流中数据包的 发送情况,判断码流中数据包的发送速度包括;当接收到的连续两个I帧首包的间隔大于预设的I帧首包时间间隔时, 判断所述码流中数据包的发送速度为慢速。
5、 如权利要求l所述的方法,其特征在于,所述根据码流中数据包的 发送情况,判断码流中数据包的发送速度包括;当等待数字信号处理芯片发送除I帧首包外的其他数据包时,判断所 述码流中数据包的发送速度为快速。
6、 如权利要求1或4或5所述的方法,其特征在于,所述根据码流中 数据包的发送速度,调整发送周期内累计发送数据包长度的门限包括判断所述码流中数据包的发送速度为慢速时,增加所述发送周期内累 计发送数据包长度的门限;判断所述码流中数据包的发送速度为快速时,减少所述发送周期内累 计发送数据包长度的门限。
7、 如权利要求l所述的方法,其特征在于,所述根据门限,对当前发 送周期内累计发送数据包的长度进行控制包括当前发送周期内累计发送数据包的长度等于或超过所述门限时,将所 述发送周期内累计发送数据包的长度与所述门限的差值更新为发送周期内累计发送数据包的长度,或将发送周期内累计发送数据包的长度设置为零; 并定时等待一个发送周期;当前发送周期内累计发送数据包的长度未超过所述门限时,从数字信 号处理芯片取出下 一个数据包进行发送,并将所述下 一个数据包的长度累 加到所述当前发送周期内累计发送数据包的长度。
8、 一种码流中数据包的发送控制装置,其特征在于,包括 发送速度判断单元,用于根据码流中数据包的发送情况,判断码流中数据包的发送速度;门限调整单元,用于根据所述发送速度判断单元判断的发送速度,调 整发送周期内累计发送数据包长度的门限;发送控制单元,用于根据所述门限调整单元调整的门限,对当前发送 周期内累计发送数据包的长度进行控制。
9、 如权利要求8所述的装置,其特征在于,还包括初始门限设置单元,用于设置发送周期内累计发送数据包长度的门限 的初始值并提供给所述门限调整单元;所述发送周期内累计发送数据包长 度的门限的初始值,由发送周期以及平均码率确定。
10、 如权利要求8所述的装置,其特征在于,所述发送速度判断单元 包括第一判断子单元,用于当接收到的连续两个I帧首包的间隔大于预设 的I帧首包时间间隔时,判断所述码流中数据包的发送速度为慢速;第二判断子单元,用于当等待数字信号处理芯片发送除I帧首包外的其他数据包时,判断所述码流中数据包的发送速度为快速。
11、 如权利要求8或IO所述的装置,其特征在于,所述门限调整单元 包括第一调整子单元,用于在所述发送速度判断单元判断所述码流中数据 包的发送速度为慢速时,增加所述发送周期内累计发送数据包长度的门限;第二调整子单元,用于在所述发送速度判断单元判断所述码流中数据 包的发送速度为快速时,减少所述发送周期内累计发送数据包长度的门限。
12、如权利要求8所述的装置,其特征在于,所述发送控制单元包括 第 一发送控制子单元,用于当前发送周期内累计发送数据包的长度等 于或超过所述门限时,将所述发送周期内累计发送数据包的长度与所述门 限的差值更新为发送周期内累计发送数据包的长度,或将发送周期内累计 发送数据包的长度设置为零;并定时等待一个发送周期;第二发送控制子单元,用于当前发送周期内累计发送数据包的长度未 超过所述门限时,从数字信号处理芯片取出下一个数据包进行发送,并将 所述下一个数据包的长度累加到所述当前发送周期内累计发送数据包的长 度。
全文摘要
本发明公开了一种码流中数据包的发送控制方法和装置。该方法包括根据码流中数据包的发送情况,判断码流中数据包的发送速度;根据所述码流中数据包的发送速度,调整发送周期内累计发送数据包长度的门限;根据所述门限,对当前发送周期内累计发送数据包的长度进行控制。通过使用本发明,对码流中数据包的发送进行了有效控制,使得所产生的数据包能够按照以一定的发送速度均匀地发送。
文档编号H04L1/00GK101364855SQ200810211649
公开日2009年2月11日 申请日期2008年9月22日 优先权日2008年9月22日
发明者许锡雷 申请人:杭州华三通信技术有限公司