一种自适应丢帧方法与装置
技术领域
本发明涉及网络信号处理技术领域,特别是涉及一种自适应丢帧方法与装置。
背景技术
实时传输视频数据时,视频的实时性和流畅性是重要的性能指标。由于网络传输环境的不确定性,几乎所有协议下的视频数据传输都会有丢帧处理。如果不提前进行丢帧处理,等到网络环境不好或者系统效率不好造成缓冲区满了之后再丢帧,则会使向缓冲区写数据时出现连续丢帧的问题,导致画面卡顿现象严重。
现有技术中采用的是每秒固定丢n帧的算法,其中n为非负整数,有可能会出现丢帧过多或者过少的现象。比如,当网络环境较好时,可能不需要丢帧或者丢数目少于n帧的数据即可,此时就可能会出现丢帧过多的问题,当从缓冲区读取数据时,采用读取的帧数据播放视频,就会导致画面不够流畅;当网络环境不好时,丢帧过少极易导致缓冲区的溢出,后续的帧数据可能会大批的被丢弃,造成画面卡顿严重。
发明内容
发明人研究发现,所述现有技术中的丢帧算法,不能很好的反应网络的真实环境,不管网络环境是好还是不好,均每秒固定丢帧,导致视频数据传输时出现丢帧过多或者过少,不能最优的使用网络资源来传输视频数据,视频画面的流畅性较低。为此,本发明提供一种自适应丢帧方法与装置,在不改变现有视频数据传输结构的基础上,解决上述现有技术中因无法获知真实的网络环境造成多丢帧或者少丢帧,导致视频画面流畅性低的技术问题。
为解决上述技术问题,本发明提供一种自适应丢帧方法与装置,本发明提供如下技术方案:
一种自适应丢帧方法,该方法包括:
为缓冲区设置不同的写数据丢帧等级,并为每个写数据丢帧等级设置对应的容量阈值和丢帧策略;
当前时刻向所述缓冲区写入帧数据时,判断所述缓冲区是否已满,若未满,则根据所述缓冲区在当前时刻缓存帧数据的大小,以及,每个写数据丢帧等级对应的容量阈值,确定目标写数据丢帧等级;
按照所述目标写数据丢帧等级对应的目标丢帧策略进行丢帧处理。
优选的,所述按照所述目标写数据丢帧等级对应的目标丢帧策略进行丢帧处理,包括:
判断当前时刻记录的丢帧数目是否小于所述目标丢帧策略对应的丢帧间隔,若小于,丢弃待写入的帧数据;更新记录的丢帧数目;若更新后的丢帧数目与目标丢帧策略对应的丢帧间隔相等,清零记录的写帧数目;
若当前时刻记录的丢帧数目大于或者等于所述目标丢帧策略对应的丢帧间隔,向所述缓冲区中写入所述帧数据;更新记录的写帧数目;若更新后的写帧数目大于或者等于目标丢帧策略对应的写帧间隔,清零记录的丢帧数目。
优选的,当向所述缓冲区写入帧数据时,若所述缓冲区已满,直接丢弃所述帧数据。
优选的,所述方法还包括:
为所述缓冲区设置不同的读数据丢帧等级,并为每个读数据丢帧等级设置对应的容量阈值;
从所述缓冲区中读取数据时,根据读取数据后所述缓冲区缓存帧数据的大小,以及,每个读数据丢帧等级对应的容量阈值确定读数据丢帧等级;
判断所述读数据丢帧等级是否低于读取数据后记录的写数据丢帧等级,若是,则将读取数据后记录的写数据丢帧等级更新为所述读数据丢帧等级;
若否,则保持读取数据后记录的写数据丢帧等级不变。
优选的,按照所述目标写数据丢帧等级对应的目标丢帧策略进行丢帧处理之前,还包括:
判断所述目标写数据丢帧等级是否高于当前时刻记录的写数据丢帧等级,若是,则更新记录的写数据丢帧等级为目标写数据丢帧等级;执行所述按照所述目标写数据丢帧等级对应的目标丢帧策略进行丢帧处理的步骤;
若否,则将当前时刻记录的写数据丢帧等级作为目标写数据丢帧等级,执行所述按照所述目标写数据丢帧等级对应的目标丢帧策略进行丢帧处理的步骤。
本发明还提供一种自适应丢帧装置,其特征在于,所述装置包括:
第一设置模块,用于为缓冲区设置不同的写数据丢帧等级,并为每个写数据丢帧等级设置对应的阈值和丢帧策略;
第一判断模块,用于当前时刻向所述缓冲区写入帧数据时,判断所述缓冲区是否已满;
第一确定模块,用于所述缓冲区未满时,根据所述缓冲区在当前时刻缓存帧数据的大小,以及,每个写数据丢帧等级对应的阈值,确定目标写数据丢帧等级;
丢帧处理模块,用于按照所述目标写数据丢帧等级对应的目标丢帧策略进行丢帧处理。
优选的,所述丢帧处理模块包括:
判断子模块,用于判断当前时刻记录的丢帧数目是否小于所述目标丢帧策略对应的丢帧间隔;
帧数据丢弃子模块,用于当前时刻记录的丢帧数目小于所述目标丢帧策略对应的丢帧间隔时,丢弃所述帧数据;
丢帧数目更新子模块,用于更新记录的丢帧数目;
第一清零子模块,用于更新后的丢帧数目与目标丢帧策略对应的丢帧间隔相等时,清零记录的写帧数目;
帧数据写入子模块,用于当前时刻记录的丢帧数目大于或者等于所述目标丢帧策略对应的丢帧间隔时,向所述缓冲区中写入所述帧数据;
写帧数目更新子模块,用于更新记录的写帧数目;
第二清零子模块,用于更新后的写帧数目大于或者等于目标丢帧策略对应的写帧间隔时,清零记录的丢帧数目。
优选的,所述帧数据丢弃子模块,还用于向所述缓冲区写入帧数据时,若所述缓冲区已满,直接丢弃待写入的帧数据。
优选的,所述装置还包括:
第二设置模块,用于为所述缓冲区设置不同的读数据丢帧等级,并为每个读数据丢帧等级设置对应的阈值;
第二确定模块,用于从所述缓冲区中读取数据时,根据读取数据后所述缓冲区存储帧数据的大小,以及,每个读数据丢帧等级对应的阈值确定读数据丢帧等级;
第二判断模块,用于判断所述读数据丢帧等级是否低于读取数据后记录的写数据丢帧等级;
第一更新模块,用于所述读数据丢帧等级低于读取数据后记录的写数据丢帧等级时,将读取数据后记录的写数据丢帧等级更新为所述读数据丢帧等级;
保持模块,用于所述读数据丢帧等级不低于读取数据后记录的写数据丢帧等级时,保持读取数据后记录的写数据丢帧等级不变。
优选的,所述装置还包括:
第三判断模块,用于按照所述目标写数据丢帧等级对应的目标丢帧策略进行丢帧处理之前,判断所述目标写数据丢帧等级是否高于当前时刻记录的写数据丢帧等级;
第二更新模块,用于所述目标写数据丢帧等级高于当前时刻记录的写数据丢帧等级时,更新记录的写数据丢帧等级为目标写数据丢帧等级;
触发模块,用于所述目标写数据丢帧等级高于当前时刻记录的写数据丢帧等级时,触发所述丢帧处理模块;
第三更新模块,用于所述目标写数据丢帧等级不高于当前时刻记录的写数据丢帧等级时,将当前时刻记录的写数据丢帧等级作为目标写数据丢帧等级;
则所述触发模块,具体用于将当前时刻记录的写数据丢帧作为目标写数据丢帧等级后触发所述丢帧处理模块。
本发明的技术方案中,预先为缓冲区设置不同的写数据丢帧等级,并为每个写数据丢帧等级设置对应的容量阈值值和丢帧策略,每次向所述缓冲区写入帧数据时,在缓冲区未满时,根据缓冲区存储帧数据的大小,以及每个写数据丢帧等级对应的容量阈值,确定对应的目标写数据丢帧等级。然后按照预设的写数据丢帧等级对应的丢帧策略进行丢帧处理即可。缓冲区缓存数据情况可以间接的反映真实的网络环境,比如缓冲区存储数据量较大,可以认为网络环境不是很好,缓冲区存储数据量较小,可以认为网络环境较好。根据缓冲区缓存数据实时情况确定对应的丢帧等级,实时调整丢帧策略,这种动态丢帧方式,可以根据网络环境调整丢帧数,提高了视频画面的流畅性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一种自适应丢帧方法实施例1的流程图;
图2为本发明一种自适应丢帧方法实施例2的流程图;
图3为图2中的方法实施例2对应的写数据流程图;
图4为本发明一种自适应丢帧装置实施例1的结构示意图;
图5为本发明丢帧处理模块的结构示意图;
图6为本发明一种自适应丢帧装置实施例2的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有技术中的丢帧算法,不能很好的反应网络的真实环境,导致视频数据传输时出现丢帧过多或者过少,不能最优的使用网络资源来传输视频数据,使得视频画面的流畅性较低。如果在已知网络真实环境的条件下进行视频数据的传输,可能会增加数据传输的复杂度,因为网络真实环境一般需要接收端的实时反馈来获知。为此,本发明的技术方案在不改变现有视频数据传输结构的基础上,解决上述现有技术中因无法获知真实的网络环境造成多丢帧或者少丢帧,导致视频画面流畅性较低的技术问题。
参考图1所示,为本发明提供的一种自适应丢帧方法实施例1的流程图,本实施例具体可以包括:
步骤101:为缓冲区设置不同的写数据丢帧等级,并为每个写数据丢帧等级设置对应的容量阈值和丢帧策略。
本步骤在实际操作中,可以将缓冲区的总缓存帧数据的容量划分为不同的数据点,将每个数据点作为不同的写数据丢帧等级对应的容量阈值,相邻两个容量阈值可以确定一个写数据丢帧等级,不同的写数据丢帧等级配置不同的丢帧策略,优选的,所述丢帧策略可以为间隔丢帧策略。
举个例子,比如,如果缓冲区总的大小为500KB,可以将0KB到500KB的容量划分为150KB、300KB和450KB三个容量阈值。其中可以将缓冲区缓存数据的容量低于150KB对应的写数据丢帧等级设置为零级;缓冲区缓存数据的容量介于150KB与300KB之间时,对应的写数据丢帧等级设置为一级;可以将零级对应的丢帧策略设置为不丢帧,将一级写数据丢帧等级对应的丢帧策略设置为丢一帧、存一帧(写数据丢帧等级对应的间隔丢帧策略可以根据实际应用由用户自行设置丢帧间隔)。将二级写数据丢帧等级对应的丢帧策略设置为丢两帧、存一帧;将三级写数据丢帧等级对应的丢帧策略设置为丢三帧、存一帧。所述几种写数据丢帧策略中对应的丢帧数即为丢帧间隔,存帧数为写帧间隔。
步骤102:当前时刻向所述缓冲区写入帧数据时,判断所述缓冲区是否已满,若否,进入步骤103。
步骤103:根据所述缓冲区在当前时刻已存储帧数据的大小,以及,每个丢帧等级对应的容量阈值,确定所述缓冲区对应的目标写数据丢帧等级。
在向所述缓冲区写入(缓存)数据时(以帧为单位向缓冲区写入数据),首先要确定在当前时刻,所述缓冲区中已经存储数据容量的大小,可以采用实时记录的形式记录缓冲区缓存数据量的大小。所述缓冲区在当前时刻存储的数据量确定之后,可以确定缓存数据量与每个写数据丢帧等级对应的阈值的大小关系。比如,参考所述步骤101中的举例,如果当前时刻确定的缓冲区缓存数据的容量大小为350KB,此时,缓冲区缓存数据量已经超出300KB,但是还没有达到450KB,缓冲区对应的写数据丢帧等级应该为二级,即丢两帧、存一帧。
步骤104:按照所述目标写数据丢帧等级对应的目标丢帧策略进行丢帧处理。
在实际操作过程中,按照所述目标写数据丢帧等级对应的目标丢帧策略进行丢帧处理,具体可以采用如下方式进行:
判断当前时刻记录的丢帧数目是否小于所述目标丢帧策略对应的丢帧间隔,如果当前时刻记录的丢帧数目小于所述目标丢帧策略对应的丢帧间隔,按照确定的第一目标丢帧等级对应的目标丢帧策略,此时还需要丢帧,即丢弃所述待缓存的帧数据;然后,更新记录的丢帧数目,具体为在现有记录的基础上加1。如果更新后记录的丢帧数目与目标丢帧策略对应的丢帧间隔相等,说明已经不需要丢帧了,此时,清零记录的写帧数目,以便于后续帧数据存储的记录。
若当前时刻记录的丢帧数目大于或者等于所述目标丢帧策略对应的丢帧间隔,可以直接将所述待缓存帧数据写入所述缓冲区,同时更新记录的写帧数目,具体为将写帧数目在原有记录的基础上加1。如果更新后的写帧数目大于或者等于目标丢帧策略对应的写帧间隔,直接清零记录的丢帧数目,以便后续帧数据丢弃数目的记录。
在上段描述中出现了两处“大于或者等于”,其原因是上述操作方式包括了当前时刻目标写数据丢帧等级与上次写入数据时确定的目标写数据丢帧等级相同或者不同的情况。当前时刻目标写数据丢帧等级与上次写入数据时确定的目标写数据丢帧等级不相同时,就会发生所述大于或者等于中的“大于”的情况。举个例子,假设当前时刻确定的目标写数据丢帧等级与上次写入数据时确定的目标写数据丢帧等级相同,对应的丢帧策略为丢3帧、存2帧,如果当前时刻记录的丢帧数目为3,写帧数目为1,则当前时刻待写入的帧数据直接写入缓冲区即可。帧数据写入后,记录的写帧数目就更新为2,达到了丢帧策略对应的写帧间隔,此时,清零记录丢帧数目。后续有帧数据写入缓冲区时,按照丢帧策略,连续丢弃3帧,然后再清零记录的写帧数目。
假设当前时刻确定的目标写数据丢帧等级与上次写入数据时确定的目标写数据丢帧等级不相同,如果当前时刻确定的目标写数据丢帧等级对应的丢帧策略为丢2帧、存1帧,当前时刻记录的丢帧数目大于目标写数据丢帧等级对应的丢帧间隔,可以认为本次帧数据的丢弃数目已经达到目标写数据丢帧等级的要求。然后,将待存储的帧数据写入缓冲区,更新写帧数目的记录,清零记录的丢帧数目。下次向缓冲区中写入数据时,按照目标写数据丢帧等级对应的丢帧数目丢帧即可。
还是假设当前时刻记录的丢帧数目为3,写帧数目为2,如果确定的目标写数据丢帧等级对应的丢帧策略为丢五帧、存2帧(或者大于2帧),此时,认为丢帧数目还没有达到要求,继续丢帧。当丢帧数目达到要求时,向缓冲区写入数据,如果此时写帧数目没有达到要求,则继续向缓冲区写入数据;如果此时写帧数目达到或者超出要求,则清零记录的丢帧数目,后续有帧数据写入缓冲区时,按照丢帧策略,连续丢弃5帧,然后再清零记录的写帧数目。若后续有数据写入缓冲区时,处理过程与上述例子的描述类似。
本实施例的技术方案中,预先为缓冲区设置不同的写数据丢帧等级,并为每个写数据丢帧等级设置对应的容量阈值值和丢帧策略,每次向所述缓冲区写入帧数据时,在缓冲区未满时,根据缓冲区存储帧数据的大小,以及每个写数据丢帧等级对应的容量阈值,确定对应的目标写数据丢帧等级。然后按照预设的写数据丢帧等级对应的丢帧策略进行丢帧处理即可。缓冲区缓存数据情况可以间接的反映真实的网络环境,比如缓冲区存储数据量较大,可以认为网络环境不是很好,缓冲区存储数据量较小,可以认为网络环境较好。根据缓冲区缓存数据实时情况确定对应的丢帧等级,实时调整丢帧策略,这种动态丢帧方式,能够根据网络环境调整丢帧数,提高了视频画面的流畅性。
采用所述实施例1的技术方案进行丢帧处理时,可以提高视频画面的流畅性。但是,在实际操作中,向缓冲区写入数据与从缓冲区读取数据是同时进行的,且读写速度是实时变化且不对称的,这样很容易造成向缓冲区写入数据时,目标写数据丢帧等级在两个相邻等级的丢帧等级之间频繁变化的情况。比如,本次要写入8帧数据,写第一帧的时候确定的丢帧等级为2,在写第6个帧数据时,丢帧等级变为了3,那么,有可能读数据的速度突然加快,导致丢帧等级又变为了2。那么在下次写入数据时,丢帧等级很可能还是会在2和3之间频繁变化。由所述步骤104可知,丢帧等级的每一次变化都有可能会带来丢帧处理的误差,如果丢帧等级频繁变化,丢帧处理的误差也会累加变大。本发明采用设置读数据丢帧等级的方式,来解决上述问题,具体的实现方式由本发明提供的一种自适应丢帧方法实施例2进行描述。
参考图2所示,为本发明提供的一种自适应丢帧方法实施例2的流程图,本实施例中与实施例1中相同步骤的具体实现可以参考实施例1中的实现方式,本实施例中对其不再作具体介绍。本实施例具体可以包括:
步骤201:为缓冲区设置不同的写数据丢帧等级,并为每个写数据丢帧等级设置对应的容量阈值和丢帧策略。
步骤202:为所述缓冲区设置不同的读数据丢帧等级,并为每个读数据丢帧等级设置对应的容量阈值。
可以理解的是,丢帧等级的降低只会在读取数据时发生,因为只有读取数据,缓冲区缓存数据量才会减小。丢帧等级的提升只会在写入数据时,因为只有向缓冲区中写入数据,缓冲区缓存数据量才会增大。读取数据时只负责丢帧等级的变化处理,真正的丢帧处理在写入数据时进行。
参考实施例1中所述步骤101中的举例,在所述步骤202中,进一步的可以将大小为500KB的缓冲区划分,本次划分即是为了界定读数据丢帧等级对应的数据点,比如,缓存数据量少于400KB时,丢帧等级由3降到2,少于250KB时,丢帧等级由2降到1,少于100KB时,不再丢帧,丢帧等级定为0。需要注意的是,写数据时对应的丢帧等级的阈值与读数据对应的丢帧等级的容量阈值不同,有一定的重复区域,这是为了避免在缓冲区缓存数据量处于临界状态时,丢帧等级频繁变化,为丢帧等级的判定提供一定的容差。
步骤203:当从所述缓冲区中读取数据时,确定读数据丢帧等级。
所述读数据丢帧等级是在从所述缓冲区中读取数据时需要确定的,所以确定读数据丢帧等级时使用的是所述步骤202中设定的容量阈值,具体的是根据缓冲区在读取数据后存储帧数据的大小,以及每个读数据丢帧等级对应的容量阈值确定的,其原理与过程可以参考实施例1中目标写数据丢帧等级的确定,这里不再赘述。
步骤204:判断所述读数据丢帧等级是否低于读取数据后记录的写数据丢帧等级,若是,进入步骤205,若否进入步骤206。
在实际操作中,可以记录缓冲区中实际进行的丢帧处理对应的写数据丢帧等级。
步骤205:将读取数据后记录的写数据丢帧等级更新为所述读数据丢帧等级。
步骤206:保持读取数据后记录的写数据丢帧等级不变。
需要说明的是,所述步骤202虽然在步骤201之后,但容易理解,这里并不对所述两个步骤实施顺序的限定。步骤203-步骤206只要在读取数据时进行即可,接续步骤205或步骤206,若要进行数据的写入,可以参考图3所示的流程图,图3所示的流程并不是由多个步骤构成的一个实施例,而是本发明提供的一种自适应丢帧方法实施例2中写入数据部分的流程,所述数据写入流程可以包括:
步骤301:当前时刻向所述缓冲区写入帧数据时,判断所述缓冲区是否已满,若是,进入步骤302,若否,进入步骤303。
步骤302:直接丢弃待写入的帧数据。
步骤303:确定所述缓冲区对应的目标写数据丢帧等级。
步骤304:判断所述目标写数据丢帧等级是否高于当前时刻记录的写数据丢帧等级,若是,进入步骤305,若否,进入步骤306。
步骤305:更新记录的写数据丢帧等级为目标写数据丢帧等级,进入步骤307。
步骤306:将当前时刻记录的写数据丢帧等级作为目标写数据丢帧等级,进入步骤307。
步骤307:按照所述目标写数据丢帧等级对应的目标丢帧策略进行丢帧处理。
本实施例中增加了读数据丢帧等级的判定,目的是要避免缓冲区实际进行的丢帧策略的频繁变化,为了便于对所述步骤203-步骤206、步骤301-步骤306的理解,这里举例进行说明。
假定缓冲区为128KB,丢帧等级划分为4个等级(0,1,2,3),等级0表示不丢帧,等级1表示丢一帧、存一帧,等级2表示丢2帧、存一帧,等级3表示丢3帧、存一帧。写数据丢帧等级对应的容量阈值分别为缓冲区缓冲数据达到48KB、72KB、96KB,读取数据时对应的丢帧等级的容量阈值分为为缓冲区数据达到40KB、64KB、88KB。
当网络状态不好时,缓冲区数据逐渐增加,达到48KB时,丢帧等级提升为1级。需要注意的是,在写入数据时,缓冲区数据增加到40KB时,目标写数据丢帧等级是不变的,40KB是读取数据时判定读数据丢帧等级的阈值。若一次向缓冲写入多个帧数据时,如果在写入过程中的某一时刻,缓冲区存储数据量变为74KB,那么对应的目标写数据丢帧等级为2级。假设此时记录的写数据丢帧等级也为2级。如果此时读取帧数据的速度突然加快(或者说网络状态突然变好),比如,在写入下一帧数据之前,缓冲区缓存帧数据量变为68KB,按照读取数据时的容量阈值,可判定对应的读数据丢帧等级为2级,而对应的目标写数据丢帧等级是1级,为了避免缓冲区实际进行的丢帧处理的频繁变化,这里,在每读出一个帧数据后,均比较确定的读数据丢帧等级是否低于记录的写数据丢帧等级,如果不低于就保持写数据丢帧等级不变,如果低于,则将写数据丢帧等级更新为确定的读数据丢帧等级。
在写入下一帧数据时,根据缓冲区帧数据量68KB可以确定的目标写数据丢帧等级为1级,但是此时目标写数据丢帧等级不高于记录的写数据丢帧等级,所以,并不改变丢帧策略,还是按照2级的丢帧策略进行丢帧处理。继续写入帧数据,缓冲区缓存数据量继续增大,有可能会再次超出72KB,超出72KB时对应的目标丢帧等级仍为2级,这样,缓冲区实际进行的丢帧处理没有发生变化,仍按照2级丢帧。这里40KB与48KB之间的差值8KB就是所述的容差。
本实施例的技术方案中,不仅实现了实施例1带来的有益效果,进一步的,在读取数据时,设置了对应的丢帧等级及其对应的容量阈值。每次从缓冲区中读出数据时,判定是否要降低记录的丢帧等级,写入数据时,判定是否要提高对应的丢帧等级。本实施例中将读写数据联系起来,通过读数据时确定的丢帧等级来制约写数据时对应丢帧等级的频繁变化,为丢帧等级的判定提供一定的容差,尽量避免缓冲区实际进行的丢帧等级的频繁变化。
对应于方法实施例,相应的,本发明还提供一种自适应丢帧装置,参考图4所示,为本发明提供的一种自适应丢帧装置实施例1的结构示意图,所述装置包括:
第一设置模块401,用于为缓冲区设置不同的写数据丢帧等级,并为每个写数据丢帧等级设置对应的容量阈值和丢帧策略;
第一判断模块402,用于当前时刻向所述缓冲区写入帧数据时,判断所述缓冲区是否已满;
第一确定模块403,用于所述缓冲区未满时,根据所述缓冲区在当前时刻缓存帧数据的大小,以及,每个写数据丢帧等级对应的容量阈值,确定目标写数据丢帧等级;
丢帧处理模块404,用于按照所述目标写数据丢帧等级对应的目标丢帧策略进行丢帧处理。
优选的,参考图5所示,为所述丢帧处理模块的结构示意图,所述丢帧处理模块可以包括:
第一判断子模块501,用于判断当前时刻记录的丢帧数目是否小于所述目标丢帧策略对应的丢帧间隔;
帧数据丢弃子模块502,用于当前时刻记录的丢帧数目小于所述目标丢帧策略对应的丢帧间隔时,丢弃所述帧数据;
丢帧数目更新子模块503,用于更新记录的丢帧数目;
第一清零子模块504,用于更新后的丢帧数目与目标丢帧策略对应的丢帧间隔相等时,清零记录的写帧数目;
帧数据写入子模块505,用于当前时刻记录的丢帧数目大于或者等于所述目标丢帧策略对应的丢帧间隔时,向所述缓冲区中写入所述帧数据;
写帧数目更新子模块506,用于更新记录的写帧数目;
第二清零子模块507,用于更新后的写帧数目大于或者等于目标丢帧策略对应的写帧间隔时,清零记录的丢帧数目。
装置中各模块所实现的功能与方法实施例1中方法操作步骤对应,这里不再赘述。
优选的,参考图6所示,为本发明提供的一种自适应丢帧装置实施例2的结构示意图,除了图4所示的模块外,所述装置还可以包括:
第二设置模块601,用于为所述缓冲区设置不同的读数据丢帧等级,并为每个读数据丢帧等级设置对应的容量阈值;
第二确定模块602,用于从所述缓冲区中读取数据时,根据读取数据后所述缓冲区存储帧数据的大小,以及,每个读数据丢帧等级对应的容量阈值确定读数据丢帧等级;
第二判断模块603,用于判断所述读数据丢帧等级是否低于读取数据后记录的写数据丢帧等级;
第一更新模块604,用于所述读数据丢帧等级低于读取数据后记录的写数据丢帧等级时,将读取数据后记录的写数据丢帧等级更新为所述读数据丢帧等级;
保持模块605,用于所述读数据丢帧等级不低于读取数据后记录的写数据丢帧等级时,保持读取数据后记录的写数据丢帧等级不变。
第三判断模块606,用于按照所述目标写数据丢帧等级对应的目标丢帧策略进行丢帧处理之前,判断所述目标写数据丢帧等级是否高于当前时刻记录的写数据丢帧等级;
第二更新模块607,用于所述目标写数据丢帧等级高于当前时刻记录的写数据丢帧等级时,更新记录的写数据丢帧等级为目标写数据丢帧等级;
触发模块608,用于所述目标写数据丢帧等级高于当前时刻记录的写数据丢帧等级时,触发所述丢帧处理模块;
第三更新模块609,用于所述目标写数据丢帧等级不高于当前时刻记录的写数据丢帧等级时,将当前时刻记录的写数据丢帧等级作为目标写数据丢帧等级;
则所述触发模块,具体用于将当前时刻记录的写数据丢帧等级作为目标写数据丢帧等级后触发所述丢帧处理模块。
所述帧数据丢弃子模块,还用于向所述缓冲区写入帧数据时,若所述缓冲区已满,直接丢弃帧数据。
装置中各模块所实现的功能与方法实施例2中方法操作步骤对应,这里不再赘述。
需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对于系统实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。