一种动态调整数据接收缓存的方法及视频解码设备与流程

文档序号:12628888阅读:192来源:国知局
一种动态调整数据接收缓存的方法及视频解码设备与流程

本申请涉及移动通信技术领域,特别涉及动态调整数据接收缓存的方法及视频解码设备。



背景技术:

在流媒体视频解码中,需要考虑网络时延和抖动问题。与文件播放不同,流媒体在播放时并未得到完整的视频数据,后续数据到达的准确时间也不可知,如果接收端接收到数据就即刻播放,此时如后续数据未能在需要播放前到达,则会引起视频播放的流畅度恶化,出现视频图像内容跳帧卡顿的现象,甚至出现较长时间的画面定屏。

为了解决上述问题,在流媒体播放中,通常会在接收端缓存一定量的数据后,再开始播放,从而期望通过缓冲数据作为弹性空间,来平滑数据到达的不均匀性。

目前应用广泛的流媒体播放机制是设定一定数据量、一定时长或一定视频帧数的缓冲区,并设定触发播放的解码触发阈值,在接收数据达到该解码触发阈值时开始播放,这种机制如图1所示。可以看出,在缓冲区正常工作的情况下,接收数据到达解码触发阈值时开始播放,在开始接收至开始解码的过程中,固定会引入填充阶段所耗时间的一段时延。

在网络状况较好的理想情况下,缓冲区填充量基本会在阈值附近小幅波动,这是因为网络状况好的情况下,时延稳定,抖动很小。

在网络状况较差的情况下,缓冲区的填充量波动较大,这是由于网络状况差的情况下,时延差异大,抖动大。在极端情况下,将出现缓冲区耗尽,但是后续数据仍未到达,或者大量突发数据同时到达,缓冲区已不能容纳所有接收数据的情况。对此,通常采取的解决方案是增大缓冲区的开始播放阈值,或者增大缓冲区整体大小。但是,在网络状况好的情况下,上述解决方案又将引入不必要的延时,这使得实时视频通信中,通话感受滞后,体验变差。



技术实现要素:

本申请提供了一种动态调整数据接收缓存的方法及视频解码设备,以尽量减少视频解码过程中由于缓存引入的时延。

本申请公开了一种动态调整数据接收缓存的方法,应用于视频解码设备,包括:

按照设定周期对网络的时延抖动进行计算,得到时延抖动数值D;

将数据接收缓存的解码触发阈值调整为对应于2D时长的值。

较佳的,在调整数据接收缓存的解码触发阈值后,该方法还包括:

当缓存的数据超过调整后的解码触发阈值时,判断缓存中是否存在类型为即时解码刷新IDR帧的关键帧,如果存在,则对关键帧之前的帧按照从后至前的顺序逐帧进行丢弃,直至缓存水平满足解码触发阈值的要求;如果不存在,则继续以接收到的数据填充缓存,如缓存填满,仍无IDR帧出现,则对后续接收的非IDR帧均进行丢弃,直至IDR帧出现,并对该IDR帧之前的帧按照从后至前的顺序逐帧进行丢弃,直至缓存水平满足解码触发阈值的要求。

较佳的,所述将数据接收缓存的解码触发阈值调整为对应于2D时长的值包括:

如果解码触发阈值以数据量为单位,则计算2D时长对应的数据量,并将解码触发阈值调整为计算得到的数据量;

如果解码触发阈值以时长为单位,则将解码触发阈值调整为2D;

如果解码触发阈值以数据帧为单位,则计算2D时长对应的数据帧的帧数,并将解码触发阈值调整为计算得到的帧数。

本申请还公开了一种视频解码设备,包括:时延抖动计算模块和阈值调整模块,其中:

所述时延抖动计算模块,用于按照设定周期对网络的时延抖动进行计算,得到时延抖动数值D;

所述阈值调整模块,用于将数据接收缓存的解码触发阈值调整为对应于2D时长的值。

较佳的,该视频解码设备还包括控制模块;

所述控制模块在缓存的数据超过调整后的解码触发阈值时,判断缓存中是否存在类型为即时解码刷新IDR帧的关键帧,如果存在,则对关键帧之前的帧按照从后至前的顺序逐帧进行丢弃,直至缓存水平满足解码触发阈值的要求;如果不存在,则继续以接收到的数据填充缓存,如缓存填满,仍无IDR帧出现,则对后 续接收的非IDR帧均进行丢弃,直至IDR帧出现,并对该IDR帧之前的帧按照从后至前的顺序逐帧进行丢弃,直至缓存水平满足解码触发阈值的要求。

较佳的,所述阈值调整模块用于执行以下操作将数据接收缓存的解码触发阈值调整为对应于2D时长的值:

如果解码触发阈值以数据量为单位,则计算2D时长对应的数据量,并将解码触发阈值调整为计算得到的数据量;

如果解码触发阈值以时长为单位,则将解码触发阈值调整为2D;

如果解码触发阈值以数据帧为单位,则计算2D时长对应的数据帧的帧数,并将解码触发阈值调整为计算得到的帧数。

由上述技术方案可见,本申请提供的应用于视频解码设备的动态调整数据接收缓存的方法,首先,按照设定周期对网络的时延抖动进行计算,得到时延抖动数值D;然后,将数据接收缓存的解码触发阈值调整为对应于2D时长的值。应用本申请公开的技术方案,能够动态调整视频缓冲的解码触发阈值,使得视频解码过程中由于缓存引入的时延尽可能小。

附图说明

图1为现有流媒体播放缓冲机制的示意图;

图2为本发明流媒体播放缓冲机制的示意图;

图3为本申请一较佳视频解码设备的组成结构示意图;

图4为本申请实施例一中调整阈值后对超出阈值部分的数据处理方法;

图5为本申请实施例二中缓冲溢出后对缓存数据的处理方法。

具体实施方式

为使本申请的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本申请作进一步详细说明。

通过分析现有流媒体播放缓冲机制,本申请的发明人发现,为了平滑抖动,缓冲区被定义为一个固定的填充水平(固定数据量、固定时长或固定数据帧),在网络状况较好时,这一填充水平的固定,将导致视频播放引入不必要时延,为此,本申请提出:通过数据统计得到反映当前网络时延抖动状况的指标,并依据该指标调整触发播放的解码触发阈值。进一步的,还可以通过识别缓存中的帧类型来决定是否对接收到的帧进行丢弃。

本发明动态调整数据接收缓存的方法包括:首先,按照设定周期对网络的时 延抖动进行计算,得到目前网络的时延抖动数值D,然后,将数据接收缓存的解码触发阈值调整为对应于2D时长的值,上述计算和调整的过程周期性进行。当缓存的数据超过调整后的解码触发阈值时,判断缓存中是否存在类型为IDR(Instantaneous Decoding Refresh,即时解码刷新)帧的关键帧,如果缓存中存在类型为IDR帧的关键帧,则对关键帧之前的帧按照从后至前的顺序逐帧进行丢弃,直至缓存水平满足阈值要求;如果不存在类型为IDR帧的关键帧,则继续以接收到的数据填充缓存。如缓存填满,仍无IDR帧出现,则对后续接收的非IDR帧均进行丢弃,直至IDR帧出现,并对IDR帧之前的帧按照从后至前的顺序逐帧进行丢弃,直至缓存水平满足阈值要求。

其中,将数据接收缓存的解码触发阈值调整为对应于2D时长的值具体包括:

如果解码触发阈值以数据量为单位,则计算2D时长对应的数据量是多少,并将解码触发阈值调整为计算得到的数据量;

如果解码触发阈值以时长为单位,则直接将解码触发阈值调整为2D;

如果解码触发阈值以数据帧为单位,则计算2D时长对应的数据帧的帧数,并将解码触发阈值调整为计算得到的帧数。

对应于上述方法,本申请还公开了一种视频解码设备,其组成结构如图3所示,该视频解码设备包括:时延抖动计算模块和阈值调整模块,其中:

所述时延抖动计算模块,用于按照设定周期对网络的时延抖动进行计算,得到时延抖动数值D;

所述阈值调整模块,用于将数据接收缓存的解码触发阈值调整为对应于2D时长的值。

较佳的,该视频解码设备还包括控制模块;

所述控制模块在缓存的数据超过调整后的解码触发阈值时,判断缓存中是否存在类型为即时解码刷新IDR帧的关键帧,如果存在,则对关键帧之前的帧按照从后至前的顺序逐帧进行丢弃,直至缓存水平满足解码触发阈值的要求;如果不存在,则继续以接收到的数据填充缓存,如缓存填满,仍无IDR帧出现,则对后续接收的非IDR帧均进行丢弃,直至IDR帧出现,并对该IDR帧之前的帧按照从后至前的顺序逐帧进行丢弃,直至缓存水平满足解码触发阈值的要求。

较佳的,所述阈值调整模块用于执行以下操作将数据接收缓存的解码触发阈值调整为对应于2D时长的值:

如果解码触发阈值以数据量为单位,则计算2D时长对应的数据量,并将解码 触发阈值调整为计算得到的数据量;

如果解码触发阈值以时长为单位,则将解码触发阈值调整为2D;

如果解码触发阈值以数据帧为单位,则计算2D时长对应的数据帧的帧数,并将解码触发阈值调整为计算得到的帧数。

下面结合附图并举实施例,对本发明技术方案的具体实施方式做进一步详细说明。

实施例一:本实施例中,假设解码触发阈值调整后,数据缓存超过解码触发阈值,且缓存数据中包含关键帧类型的帧。

如图4所示,经过动态缓存控制后,解码触发阈值调整到图4所示虚线的位置,调整后,缓存数据已超过该阈值,此时如有一关键帧类型的数据到达缓存,则将关键帧之前的帧按照从后至前的顺序逐帧进行丢弃,直至满足数据量不大于解码触发阈值的程度。这样,使得解码器在不出现解码图像错误的情况下,尽可能保证缓存引入的时延在阈值上下。

实施例二:本实施例假设解码触发阈值调整后,数据缓存溢出。

如图5所示,当数据缓存中没有IDR类型的关键帧,则会持续缓存后续数据,可能会导致缓存区满,缓存区满之后,对后续接受到的非关键帧进行丢弃。当有新的关键帧到达后,处理方式同实施例一,从该关键帧之前按照从后往前的顺序逐帧丢弃非关键帧,直至满足数据量不大于解码触发阈值的程度。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1