CN101175012B - 一种分帧媒体数据传输方法、系统及装置 - Google Patents
一种分帧媒体数据传输方法、系统及装置 Download PDFInfo
- Publication number
- CN101175012B CN101175012B CN200610114213A CN200610114213A CN101175012B CN 101175012 B CN101175012 B CN 101175012B CN 200610114213 A CN200610114213 A CN 200610114213A CN 200610114213 A CN200610114213 A CN 200610114213A CN 101175012 B CN101175012 B CN 101175012B
- Authority
- CN
- China
- Prior art keywords
- frame
- reading
- writing data
- data district
- write
- 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
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种分帧媒体数据传输方法,该方法包括:A.发送侧对当前帧进行排序,将数据缓冲区分为一个以上的数据读写区,并将当前帧按照确定的顺序写入数据缓冲区中的对应位置;B.发送侧按序读取数据缓冲区,并将读取的帧向接收侧发送,当判断数据缓冲区中当前被读的数据读写区与其后的待读数据读写区间隔为预先设定的数据读写区的个数,且该待读数据读写区没有存储未发送帧时,向该数据读写区中写入补偿帧。通过本发明方法,综合解决了网络中丢帧、乱序和延时等问题,并且还解决了语音静音的问题,提高了媒体数据的传输质量,使终端的主观感受大大提高。本发明还公开了一种分帧媒体数据传输系统及装置。
Description
技术领域
本发明涉及数据传输技术,尤其涉及一种分帧媒体数据传输的方法、系统及装置。
背景技术
目前有不少关于提高媒体数据传输业务质量的方法,例如对网络中的丢帧提出的解决方法为:在不考虑网络延时的情况下,根据连续收到的两帧之间的序号差值来判断需要补偿的帧数;对数据帧乱序提出的解决方法为:设定一个延时时间,在延时时间内将收到的帧进行排队,将超出该延时时间的帧丢弃。但是这两种方法没有综合考虑,只分别适合于仅存在丢帧或仅存在乱序的特定情况中,并且也没有提出出现静音时的解决方法。而在实际网络中,这些因素是综合存在的。如果将这些技术叠加来解决实际问题,由于这些技术都有比较大的延时,这样就会导致数据传输延时过大,数据传输质量下降,且用户主观感受较差。
发明内容
本发明提供一种分帧媒体数据传输方法、系统及装置,以解决现有技术中存在的没有综合考虑丢帧和乱序的问题。
本发明提供一种分帧媒体数据传输方法,该方法包括:
A.发送侧将数据缓冲区分为一个以上的数据读写区;
发送侧根据当前帧与上一收到帧的序号确定两帧之间的序号差,并根据序号差确定当前帧要写入的数据缓冲区中的数据读写区,或者,根据当前帧与上一收到帧的时戳确定两帧之间的静音帧个数,根据当前帧与上一收到帧之间静音帧的个数和写入数据缓冲区的已补偿的静音帧个数,确定还需要补偿的静音帧个数,以及根据当前帧与上一收到帧的序号确定两帧之间的序号差,并根据序号差和所述还需要补偿的静音帧个数确定当前帧要写入的数据读写区;
B.发送侧当判断数据缓冲区中当前被读的数据读写区与其后的待读数据读写区间隔为预先设定的数据读写区的个数,且该待读数据读写区没有存储未发送帧时,向该待读数据读写区中写入补偿帧,并将存储在数据读写区中的帧按照数据缓冲区的存储顺序读取,并向接收侧发送。
所述每一数据读写区对应一状态标识,所述状态标识为空表示对应的数据读写区没有存储未发送帧,所述状态标识为非空表示对应的数据读写区已存储未发送帧;
在读取数据读写区中的帧之前包括步骤:查询该数据读写区状态标识,当状态标识为非空,则读取该数据读写区中的帧;
在向数据读写区中写入帧之前包括步骤:查询该数据读写区状态标识,当状态标识为空,则向该数据读写区中写入帧。
在读取数据读写区中的帧之后包括步骤:将该数据读写区的状态标识置为空;
在向数据读写区中写入帧之后包括步骤:将该数据读写区的状态标识置为非空。
步骤B中所述发送侧按序读取数据缓冲区,并将读取的帧向接收侧发送,是按照预先设定的时间间隔读取和发送的。
在所述步骤A之前包括步骤:
A0、判定所述当前帧是否超过预先设定的最大延时,若超过,则将该当前帧丢弃并结束,若未超过,则对当前帧执行确定当前帧要写入的数据缓冲区中的数据读写区的步骤。
发送侧根据序号差确定当前帧要写入的数据缓冲区中的数据读写区之后,所述方法还包括:
当当前帧要写入的数据缓冲区中的数据读写区状态标识为空时,将当前帧写入,再将当前帧写入的数据缓冲区中的数据读写区状态标识置为非空。
,发送侧根据序号差和所述还需要补偿的静音帧个数确定当前帧要写入的数据读写区之后,所述方法还包括:当当前帧要写入的数据缓冲区中的数据读写区标识为空时,将当前帧写入,并将当前帧写入的数据缓冲区中的数据读写区状态标识置为非空。
步骤B中所述补偿帧包括舒适噪声帧或平滑帧,则所述写入补偿帧的步骤包括:
判断上一收到帧的类型,若上一收到帧为静寂帧,则写入舒适噪声帧,若上一收到帧为媒体数据帧,则写入平滑帧。
本发明提供一种分帧媒体数据传输系统,所述系统包括:
发送单元,用于根据当前帧与上一收到帧的序号确定两帧之间的序号差,并根据序号差确定当前帧要写入的数据缓冲区中的数据读写区,或者,根据当前帧与上一收到帧的时戳确定两帧之间的静音帧个数,根据当前帧与上一收到帧之间静音帧的个数和写入数据缓冲区的已补偿的静音帧个数,确定还需要补偿的静音帧个数,以及根据当前帧与上一收到帧的序号确定两帧之间的序号差,并根据序号差和所述还需要补偿的静音帧个数确定当前帧要写入的数据读写区,并将存储在数据读写区中的帧按照数据缓冲区的存储顺序读取,并向接收侧发送;
缓冲单元,包含一个以上的数据读写区,用于按照发送单元确定的顺序存储帧;
补偿帧发送单元,用于当判断缓冲单元中当前被读的数据读写区与其后的待读数据读写区间隔为预先设定的数据读写区的个数,且该待读数据读写区没有存储未发送帧时,向该待读数据读写区中写入补偿帧。
所述每一数据读写区对应一状态标识,所述状态标识为空表示对应的数据读写区没有存储未发送帧,所述状态标识为非空表示对应的数据读写区已存储未发送帧;
所述发送单元,用于在读取数据读写区中的帧之前,查询该数据读写区状态标识,当状态标识为非空则读取该数据读写区中的帧;在向数据读写区中写入帧之前,查询该数据读写区状态标识,当状态标识为空则向该数据读写区中写入帧;在读取数据读写区中的帧之后,将该数据读写区的状态标识置为空;在向数据读写区中写入帧之后将该数据读写区的状态标识置为非空。
所述发送单元包括:
排序单元,用于根据当前帧与上一收到帧的序号确定两帧之间的序号差,并根据序号差确定当前帧要写入的数据缓冲区中的数据读写区,或者,根据当前帧与上一收到帧的时戳确定两帧之间的静音帧个数,根据当前帧与上一收到帧之间静音帧的个数和写入数据缓冲区的已补偿的静音帧个数,确定还需要补偿的静音帧个数,以及根据当前帧与上一收到帧的序号确定两帧之间的序号差,并根据序号差和所述还需要补偿的静音帧个数确定当前帧要写入的数据读写区,将该当前帧按照确定的存储顺序写入数据读写区中;
帧发送单元,用于按照预先设定的时间间隔向接收侧发送已存储在数据读写区中的帧。
所述发送单元包括:
存储单元,用于存储预先设定的最大延时;
最大延时判定单元,用于判定当前帧是否超过预先设定的最大延时,若超过,则将该当前帧丢弃,若未超过,则将该当前帧发送到排序单元。
所述补偿帧发送单元包括:
帧判定单元,用于判定上一收到帧的类型;
帧发送单元,用于当上一收到帧为静寂帧时,则写入舒适噪声帧,若上一收到帧为媒体数据帧时,则写入平滑帧。
本发明方法通过对当前帧根据序号或根据序号和时戳来进行排序,确定该帧在数据缓冲区的存放顺序,并且在必要时向该数据缓冲区中发送补偿帧的方法,提高了数据传输质量,且传输延时较小,使得终端用户得到更好的体验。
附图说明
图1为本发明分帧媒体数据传输系统结构示意图;
图2为本发明实施例中缓冲单元13结构示意图;
图3为本发明实施例中步骤流程示意图;
图4为本发明实施例中b=1时缓冲单元13结构示意图;
图5为本发明实施例中b>1时缓冲单元13结构示意图;
图6为本发明实施例中b<0时缓冲单元13结构示意图;
图7为本发明实施例中达到预先设定的数据读写区的个数时缓冲单元13结构示意图。
具体实施方式
在数据传输过程中,为了保证较好的传输质量,使用户体验尽可能的好,则从数据缓冲区向外发送帧是连续的。在网络情况较好时,数据缓冲区接收数据和发送数据的时间是匹配的,但是在实际网络传输中乱序、丢帧的情况,在传输音频帧时还可能出现静音情况,这样就会使得缓冲区接收、发送数据时间不匹配,除宪法空或传输错误帧的情况。本发明通过对当前帧进行排序,将该帧按照确定的存储顺序写入数据缓冲区中,同时发送侧读出数据缓冲区的帧,向接收侧发送,当数据缓冲区中当前被读区域与其后的待读区域间隔为预先设定的数据读写区的个数,且该待读区域未存储还未发送的帧时,向该待读区域写入补偿帧。通过本发明方法,同时解决了网络中丢帧和乱序的问题,使得数据传输质量得以提高,用户体验更好。
下面结合说明书附图对本发明作进一步详细描述。
如图1所示,本发明的分帧媒体数据传输系统应用于终端侧或网络侧,该系统包括:发送单元11、补偿帧发送单元12和缓冲单元13.其中,发送单元11用于对当前帧进行排序,并将当前帧按照确定的顺序写入缓冲单元13中的对应位置,并按序读取缓冲单元13,并将读取的帧向接收侧发送;补偿帧发送单元12用于当缓冲单元13中当前被读的数据读写区与其后的待读数据读写区间隔为预先设定的数据读写区的个数,且该待读数据读写区没有存储未发送帧时,向该数据读写区中写入补偿帧;缓冲单元13包含一个以上的数据读写区,用于按照发送单元11确定的顺序存储帧.
每一数据读写区对应一状态状态标识,所述状态状态标识为空表示对应的数据读写区没有存储未发送帧,所述状态状态标识为非空表示对应的数据读写区已存储未发送帧。发送单元11在读取数据读写区中的帧之前,查询该数据读写区状态标识,当状态标识为非空则读取该数据读写区中的帧;在向数据读写区中写入帧之前,查询该数据读写区状态标识,当状态标识为空则向该数据读写区中写入帧;在读取数据读写区中的帧之后,将该数据读写区的状态标识置为空;在向数据读写区中写入帧之后将该数据读写区的状态标识置为非空。
所述发送单元11包括排序单元21和帧发送单元22。其中,排序单元21用于对当前帧进行排序,将该帧按照确定的存储顺序写入数据读写区中;帧发送单元22用于按照预先设定的时间间隔向接收侧发送已存储在数据读写区中的帧。
所述发送单元11包括存储单元23和最大延时判定单元24。其中,存储单元23用于存储预先设定的最大延时;最大延时判定单元24用于判定当前帧是否超过预先设定的最大延时,若超过,则将该帧丢弃,若未超过,则将该帧发送到排序单元。
所述排序单元21包括时戳判定单元31和序号判定单元32。其中,时戳判定单元31用于根据当前帧与上一收到帧的时戳确定两帧之间的静音帧个数,并根据已补偿的静音帧个数确定还需要补偿的静音帧个数;序号判定单元32用于根据当前帧与上一收到帧的序号确定两帧之间的序号差,并根据序号差和所述还需要补偿的静音帧个数确定当前帧要写入的数据读写区,当该数据读写区标识为空时,将当前帧写入,并将该数据读写区标识置为非空。
在本系统中,可以根据时戳和序号来对当前帧进行排序,但当没有静音帧出现时也可以只根据序号来对当前帧进行排序。
所述排序单元21包括序号单独判定单元33,用于根据当前帧与上一收到帧的序号确定两帧之间的序号差,并根据序号差确定当前帧要写入的缓冲单元中的数据读写区,当该数据读写区标识为空时,将当前帧写入,再将该数据读写区标识置为非空。
所述补偿帧发送单元12包括帧判定单元41和帧发送单元42。其中,帧判定单元41用于判定上一收到帧的类型;帧发送单元42用于当上一收到帧为静寂帧时,则写入舒适噪声帧,若上一收到帧为媒体数据帧时,则写入平滑帧。
如图2所示,为本发明实施例的缓冲单元13的结构示意图.在本实施例中,设定该数据传输装置位于网络侧,接收第一终端侧发送的数据,并向第二终端侧发送数据.并同时设定缓冲单元13为环形,包含12个数据读写区,每一个数据读写区与状态标识一一对应,状态标识包括空和非空,存储未发送过的帧的数据读写区设定状态标识为非空,没有存储未发送过的帧的数据读写区设定状态标识为空.写指针指向的数据读写区为非空,读指针指过以后标记为空.为了便于判定在数据读写区中存放帧的位置,可以在该缓冲单元13中设定读指针(R)、写指针(W)和辅助写指针(AW).读指针指向存放即将被发送帧的数据读写区,写指针指向存放当前帧的数据读写区,辅助写指针指向离读指针最近的状态标识为空的数据读写区.
为了保证较好的数据传输质量,则从数据读写区发送的帧必须是连续的,时间间隔固定的,因此该读指针是连续均匀地移动。但是写指针是在有数据进入该数据读写区时才移动,并由于可能出现帧的不连续跳变,因此写指针是不连续不均匀地移动的。由于可能有乱序情况存在,写指针跃过的数据读写区可能为空,所以在每个数据读写区设定状态标识。初始时,辅助写指针和写指针重合,它们与读指针之间的数据读写区状态标识为非空。读走帧的时候要先判断该数据读写区是否为非空,若是才将帧读走,并将该数据读写区的状态标识置为空;写入指针时也要判断该数据读写区是否为空,若是才将帧写入,并将该数据读写区的状态标识置为非空。
由于可能有丢帧和有静音帧的情况存在,会出现一段时间内没有帧写入,或写入的帧通过判断不应该存放在辅助写指针指向的状态标识为空的数据读写区的状况,此时辅助写指针将不会移动,但读指针仍然会均匀移动,就可能会出现读指针超过辅助写指针的情况。此时发送的帧就可能是以前存储的且已发送过的帧,这些帧都不是正确的帧,对于终端用户而言会造成音频噪音或视频错误的情况。
因此在没有数据写入时判断出当前被读的数据读写区与其后的待读数据读写区间隔为预先设定的数据读写区的个数,且该待读数据读写区没有存储未发送帧,准确进行提前补偿,向数据读写区发送补偿帧,使得在没有正确的帧写入时,让终端用户的视频或音频体验尽可能的好。所述补偿帧可以包括舒适噪声帧和平滑帧。
如图3所示,为本发明实施例的步骤流程示意图。本实施例中设定传输的帧为音频帧,因此可能会出现静音帧,且每次从数据读写区发送帧的时间间隔为10ms。
步骤301:判断收到的帧延时是否在系统容忍的范围内。
在初始化时,将读写指针保持一定的间距,这个间距可以是该网络中所能容忍的最大延时的时间转换为的空间间距,也可以是其它事先设定最大延时。设定本实施例中的网络中所能容忍的延时为G=30ms,由于从数据读写区发送数据的时间间隔为10ms,因此设定初始化时读写指针之间的间距为3个数据读写区,且这三个数据读写区的状态标识都为非空。
当有音频帧要进入缓冲单元13时,首先判断该帧的延时是否在系统容忍范围内。判断方法包括以下步骤:
A1、确定该收到的帧与上一收到的帧之间的时间间隔中发送了多少帧c,也就是收到这两帧之间经历多少整数时间。由于发送帧是均匀连续的,因此发送帧的过程可以近似看作一个时钟运动。
例如,该收到的帧与上一收到帧之间的时间间隔中发送了3帧,说明该收到的帧在网络中延时10ms,此时c=3。
A2、确定连续收到两帧的时戳差与抽样之比a.在本实施例中设定在该网络中抽样的数据为8000个抽样/秒,则由于在同一网络中终端侧和网络侧的发送数据时间间隔都为10ms,因此进入该数据传输系统时每一帧中有80个抽样.收到的每一帧都含有一个时戳,若第一帧的时戳为80,则连续的第二帧为160.但是在发送音频帧的时候可能会出现静音帧的情况,当出现一个静音帧时,静音帧虽然也已经加了80但却没有发送,而后发送的帧的时戳为240,此时a=(240-80)/80=2,说明含有一个静音帧.
此时,若连续收到的两音频帧之间没有静音帧,或收到的帧不是音频帧,则a将一直为1。该要进入缓冲单元13的帧相对延时为(c-a)*10ms。
A3、确定上一收到帧的绝对延时。设定初始状态的第一帧的绝对延时为0,则通过步骤A1和A2后,第二帧的绝对延时0+(c-a)*10ms,以此类推,可以得到在本实施例中上一收到帧的绝对延时为d。
A4、将该要进入缓冲单元13的帧的绝对延时d+(c-a)*10ms与G进行比较。当a=0时,说明该帧为重复帧,则将该帧丢弃,不做后续处理;当该数据帧的绝对延时大于G时,说明该帧已经超过系统所能容忍的延时,则将该帧丢弃,不做后续处理。当该数据帧的绝对延时小于G时,记录下该帧的时戳和序号,准备将该帧放入缓冲单元13的数据读写区中,存放的位置在下一步获得。此时,再更新d=d+(c-a)留待下次使用。
步骤302:确定收到的帧在缓冲单元13中的数据读写区的存放位置。
通过上述A4步骤后,只有该数据帧的绝对延时小于G时才执行本步骤,通过判断该帧是否是在出现了乱序、丢帧或静音的情况收到的,来确定该收到的帧在数据读写区的存放位置,该确定方式包括以下步骤:
B1、判断连续收到的两帧之间的序号差b。从步骤A4可以看出,每一个收到的帧都记录下了该帧的序号,因此可以容易得到该收到的帧与上一收到帧的序号差。
B2、对不同的b值分别进行处理。
当b=0时,说明该帧与上一收到帧重复,则将该帧丢弃,不做后续处理。
当b=1时,说明该帧和上一收到帧为连续的帧。此时要通过时戳判断该收到的帧与上一收到帧之间是否有未发送的静音帧。如上述步骤A2得到的数据a-1即为两帧之间静音帧的个数,设e为已经补偿的静音帧个数,此时由于是连续的帧,因此在补偿以前e=0,则向状态标识为空的数据读写区连续补偿a-1个静音帧,存储的位置为在收到的上一收到帧后的连续的数据读写区,并将这些写入静音帧的数据读写区的状态标识置为非空。当补偿完毕后将该收到的帧存放在存储静音帧之后的连续的状态标识为空的数据读写区,并将该数据读写区的状态标识置为非空。此时写指针指向该收到的帧,辅助写指针仍然指向离读指针最近的未存入还未发送帧的数据读写区。
例如,如图4所示,若上一收到帧的序号为4,该收到的帧的序号为5,但通过步骤A2得到a-1=1,说明这两帧之间有1个静音帧,则向存放序号4的帧的状态标识为空的数据读写区后连续存入一个静音帧,再将该收到的帧存入静音帧之后的连续的状态标识为空的数据读写区,再将这两个数据读写区的状态标识置为非空。同时写指针指向该收到的帧所在的数据读写区。
若两帧之间没有静音帧,则将该收到的帧直接存放在上一收到帧之后的状态标识为空的数据读写区中,且写指针指向该收到的帧,辅助写指针仍然指向离读指针最近的状态标识为空的数据读写区。
当b>1时,说明该帧与上一收到帧是不连续的帧,可能是出现的乱序或前面出现了丢帧的情况.此时,同样要通过时戳判断该收到的帧与上一收到帧之间是否有未发送的静音帧.当a-1-(b-1)>0时,则向状态标识为非空的数据读写区连续补偿a-1-(b-1)个静音帧,存储的位置为在收到的上一收到帧后的连续的数据读写区.此时e=-(b-1),当后续有序号介于这两帧之间的帧到达时,判断静音帧时就要考虑该e值.当补偿完毕后再将该收到的帧存储,存储的位置为补偿静音帧之后的第b个状态标识为非空的数据读写区.此时写指针指向该收到的帧,辅助写指针仍然指向离读指针最近的状态标识为空的数据读写区.但是,若此时写指针越过了读指针,说明丢帧太多或乱序情况很严重,则将该帧丢弃,将读写指针复位到初始化值,不作后续处理.判断是否丢帧太多或乱序情况很严重可以有其他方法,例如,可以通过设定b的最大值来确定.
同样如图5所示,设定上一收到帧的序号为3,该收到的帧的序号为5,此时b=2。若判断出a-1-(b-1)=2,即连续收到的两帧之间有2个静音帧,则在存放序号为3的帧的数据读写区后连续存放两个静音帧,再将该收到的帧存放在静音帧后第二个状态标识为非空的数据读写区中。
若两帧之间没有静音帧,则将该收到的帧存放在上一收到帧之后的第二个状态标识为非空的数据读写区中,写指针指向该收到的帧,辅助写指针仍然指向离读指针最近的状态标识为空的数据读写区。
当b<0时,说明是前面乱序的帧现在才收到。此时同样要判断该收到的帧与上一收到帧之间是否有未发送的且还未补偿的静音帧。当a-e-1-(-b-1)>0时,则在存放上一收到帧的数据读写区前连续补偿a-e-1-(-b-1)个静音帧,再将该收到的帧存放在所述静音帧前第-b个状态标识为非空的读据读写区中。若此时已不需要补偿静音帧,则将该收到的帧存放在上一收到帧前第-b个状态标识为非空的数据读写区中。此时,写指针指向该收到的帧,若该收到的帧被丢弃则指向上一收到收到的帧,辅助写指针仍然指向离读指针最近的状态标识为空的数据读写区。
例如,如图6所示,设定连续收到三帧的序号分别为4、6、5,序号为5的帧由于乱序而没有按时收到,且序号4和6之间有一个静音帧,此时收到的序号为5的帧还没有超过最大延时。由于前面收到的序号分别为4和6的帧时已经补偿了它们之间的两个静音帧,因此收到该序号为5的帧时就不用再做静音帧补偿,而是直接存放在序号6之前的第一个状态标识为空的数据读写区中。
步骤303:当数据缓冲区中当前被读的数据读写区与其后的待读数据读写区间隔为预先设定的数据读写区的个数,且该待读数据读写区状态标识为空时,向该区域写入补偿帧。
前述设定了在初始时写指针和辅助写指针重合,它们与读指针之间设定了间距,将此间距转换为时间即为系统所能容忍的最大延时。同时也可以设定读指针与辅助写指针之间的数据读写区的个数,当读指针与辅助写指针之间达到该数据读写区的个数时即进行补偿。在本实施例中设定该数据读写区的个数为一个数据读写区,转换成时间即为10ms。
当读指针与辅助写指针之间只相差一个数据读写区即达到该间隔,且此时没有帧写入,或写入的帧经过步骤301和302的判断不存储在当前辅助写指针指向的状态标识为空的数据读写区中时,向该辅助写指针指向的数据读写区中写入补偿帧。
在写入补偿帧之前,要判断应该是补偿平滑帧还是舒适噪声帧。该判断方法可以为:根据上一收到帧来判断,当上一收到帧为静寂帧时,则后面补偿为舒适噪声帧;当上一收到帧的不为静寂而是语音帧或视频帧等媒体数据帧时,则补偿平滑帧。
当写入补偿帧后,将该数据读写区的状态标识置为非空,同时辅助写指针将指向下一个距离读指针最近的状态标识为空的数据读写区,写指针指指向不变,当此时再接收到数据帧,且判断该帧应该存放在前述已存放补偿帧的数据读写区时,将该帧视作已超过最大延时而丢弃.
如图7中(a)所示,当读指针指向存放帧序号为2的数据读写区时,辅助写指针与读指针之间只有一个数据读写区时,且此时没有帧写入,并判断上一收到帧的类型为静寂帧时,则向该辅助写指针指向的数据读写区写入舒适噪声帧。并将该数据读写区的状态标识置为非空,同时辅助写指针将指向下一个距离读指针最近的状态标识为空的数据读写区,如图7中(b)所示。
步骤304:将存储在数据读写区中的帧按照预先设定的时间间隔和在数据缓冲区的存储顺序向第二终端侧发送。
通过本发明方法,综合解决了网络中丢帧、乱序和延时等问题,并且还解决了语音静音的问题,提高了媒体数据的传输质量,使终端的主观感受大大提高。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (13)
1.一种分帧媒体数据传输方法,其特征在于,该方法包括以下步骤:
A.发送侧将数据缓冲区分为一个以上的数据读写区;
发送侧根据当前帧与上一收到帧的序号确定两帧之间的序号差,并根据序号差确定当前帧要写入的数据缓冲区中的数据读写区,或者,根据当前帧与上一收到帧的时戳确定两帧之间的静音帧个数,根据当前帧与上一收到帧之间静音帧的个数和写入数据缓冲区的已补偿的静音帧个数,确定还需要补偿的静音帧个数,以及根据当前帧与上一收到帧的序号确定两帧之间的序号差,并根据序号差和所述还需要补偿的静音帧个数确定当前帧要写入的数据读写区;
B.发送侧当判断数据缓冲区中当前被读的数据读写区与其后的待读数据读写区间隔为预先设定的数据读写区的个数,且该待读数据读写区没有存储未发送帧时,向该待读数据读写区中写入补偿帧,并将存储在数据读写区中的帧按照数据缓冲区的存储顺序读取,并向接收侧发送。
2.如权利要求1所述方法,其特征在于,所述每一数据读写区对应一状态标识,所述状态标识为空表示对应的数据读写区没有存储未发送帧,所述状态标识为非空表示对应的数据读写区已存储未发送帧;
在读取数据读写区中的帧之前包括步骤:查询该数据读写区状态标识,当状态标识为非空,则读取该数据读写区中的帧;
在向数据读写区中写入帧之前包括步骤:查询该数据读写区状态标识,当状态标识为空,则向该数据读写区中写入帧。
3.如权利要求1所述方法,其特征在于,在读取数据读写区中的帧之后包括步骤:将该数据读写区的状态标识置为空;
在向数据读写区中写入帧之后包括步骤:将该数据读写区的状态标识置为非空。
4.如权利要求1所述方法,其特征在于,步骤B中所述发送侧按序读取数据缓冲区,并将读取的帧向接收侧发送,是按照预先设定的时间间隔读取和发送的。
5.如权利要求1所述方法,其特征在于,在所述步骤A之前包括步骤:
A0、判定所述当前帧是否超过预先设定的最大延时,若超过,则将该当前帧丢弃并结束,若未超过,则对当前帧执行确定当前帧要写入的数据缓冲区中的数据读写区的步骤。
6.如权利要求5所述方法,其特征在于,发送侧根据序号差确定当前帧要写入的数据缓冲区中的数据读写区之后,所述方法还包括:
当当前帧要写入的数据缓冲区中的数据读写区状态标识为空时,将当前帧写入,再将当前帧写入的数据缓冲区中的数据读写区状态标识置为非空。
7.如权利要求1所述方法,其特征在于,发送侧根据序号差和所述还需要补偿的静音帧个数确定当前帧要写入的数据读写区之后,所述方法还包括:当当前帧要写入的数据缓冲区中的数据读写区状态标识为空时,将当前帧写入,并将当前帧写入的数据缓冲区中的数据读写区状态标识置为非空。
8.如权利要求1所述方法,其特征在于,步骤B中所述补偿帧包括舒适噪声帧或平滑帧,则所述写入补偿帧的步骤包括:
判断上一收到帧的类型,若上一收到帧为静寂帧,则写入舒适噪声帧,若上一收到帧为媒体数据帧,则写入平滑帧。
9.一种分帧媒体数据传输系统,其特征在于,所述系统包括:
发送单元,用于根据当前帧与上一收到帧的序号确定两帧之间的序号差,并根据序号差确定当前帧要写入的数据缓冲区中的数据读写区,或者,根据当前帧与上一收到帧的时戳确定两帧之间的静音帧个数,根据当前帧与上一收到帧之间静音帧的个数和写入数据缓冲区的已补偿的静音帧个数,确定还需要补偿的静音帧个数,以及根据当前帧与上一收到帧的序号确定两帧之间的序号差,并根据序号差和所述还需要补偿的静音帧个数确定当前帧要写入的数据读写区,并将存储在数据读写区中的帧按照数据缓冲区的存储顺序读取,并向接收侧发送;
缓冲单元,包含一个以上的数据读写区,用于按照发送单元确定的顺序存储帧;
补偿帧发送单元,用于当缓冲单元中当前被读的数据读写区与其后的待读数据读写区间隔为预先设定的数据读写区的个数,且该待读数据读写区没有存储未发送帧时,向该待读数据读写区中写入补偿帧。
10.如权利要求9所述系统,其特征在于,所述每一数据读写区对应一状态标识,所述状态标识为空表示对应的数据读写区没有存储未发送帧,所述状态标识为非空表示对应的数据读写区已存储未发送帧;
所述发送单元,用于在读取数据读写区中的帧之前,查询该数据读写区状态标识,当状态标识为非空则读取该数据读写区中的帧;在向数据读写区中写入帧之前,查询该数据读写区状态标识,当状态标识为空则向该数据读写区中写入帧;在读取数据读写区中的帧之后,将该数据读写区的状态标识置为空;在向数据读写区中写入帧之后将该数据读写区的状态标识置为非空。
11.如权利要求9所述系统,其特征在于,所述发送单元包括:
排序单元,用于根据当前帧与上一收到帧的序号确定两帧之间的序号差,并根据序号差确定当前帧要写入的数据缓冲区中的数据读写区,或者,根据当前帧与上一收到帧的时戳确定两帧之间的静音帧个数,根据当前帧与上一收到帧之间静音帧的个数和写入数据缓冲区的已补偿的静音帧个数,确定还需要补偿的静音帧个数,以及根据当前帧与上一收到帧的序号确定两帧之间的序号差,并根据序号差和所述还需要补偿的静音帧个数确定当前帧要写入的数据读写区,将该当前帧按照确定的存储顺序写入数据读写区中;
帧发送单元,用于按照预先设定的时间间隔向接收侧发送已存储在数据读写区中的帧。
12.如权利要求11所述系统,其特征在于,所述发送单元包括:
存储单元,用于存储预先设定的最大延时;
最大延时判定单元,用于判定当前帧是否超过预先设定的最大延时,若超过,则将该当前帧丢弃,若未超过,则将该当前帧发送到排序单元。
13.如权利要求9所述系统,其特征在于,所述补偿帧发送单元包括:
帧判定单元,用于判定上一收到帧的类型;
帧发送单元,用于当上一收到帧为静寂帧时,则写入舒适噪声帧,若上一收到帧为媒体数据帧时,则写入平滑帧。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200610114213A CN101175012B (zh) | 2006-11-01 | 2006-11-01 | 一种分帧媒体数据传输方法、系统及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200610114213A CN101175012B (zh) | 2006-11-01 | 2006-11-01 | 一种分帧媒体数据传输方法、系统及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101175012A CN101175012A (zh) | 2008-05-07 |
CN101175012B true CN101175012B (zh) | 2010-05-12 |
Family
ID=39423280
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200610114213A Active CN101175012B (zh) | 2006-11-01 | 2006-11-01 | 一种分帧媒体数据传输方法、系统及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101175012B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102403008B (zh) * | 2010-09-17 | 2015-11-25 | 北京中星微电子有限公司 | 音频播放中数据流断点续接的方法和系统、fifo控制器 |
CN104735470B (zh) * | 2015-02-11 | 2018-06-19 | 海信集团有限公司 | 一种流媒体数据传输方法及装置 |
CN107040784B (zh) * | 2017-03-22 | 2020-12-15 | 深圳市中航世星科技有限公司 | 一种视频缓冲处理方法、系统和装置 |
CN116827883B (zh) * | 2023-08-25 | 2023-11-17 | 明度智云(浙江)科技有限公司 | Scada系统离线数据缓存方法、装置和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5974224A (en) * | 1996-06-24 | 1999-10-26 | Matsushita Electric Industrial Co., Ltd. | Method and apparatus for decoding video signals |
US6353700B1 (en) * | 1998-04-07 | 2002-03-05 | Womble Multimedia, Inc. | Method and apparatus for playing an MPEG data file backward |
CN1828571A (zh) * | 2006-04-18 | 2006-09-06 | 杭州华为三康技术有限公司 | 一种通用串口总线数据传输处理方法 |
-
2006
- 2006-11-01 CN CN200610114213A patent/CN101175012B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5974224A (en) * | 1996-06-24 | 1999-10-26 | Matsushita Electric Industrial Co., Ltd. | Method and apparatus for decoding video signals |
US6353700B1 (en) * | 1998-04-07 | 2002-03-05 | Womble Multimedia, Inc. | Method and apparatus for playing an MPEG data file backward |
CN1828571A (zh) * | 2006-04-18 | 2006-09-06 | 杭州华为三康技术有限公司 | 一种通用串口总线数据传输处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101175012A (zh) | 2008-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100426715C (zh) | 一种丢帧隐藏方法和装置 | |
CN101175012B (zh) | 一种分帧媒体数据传输方法、系统及装置 | |
AU723344B2 (en) | Multiplexing of voice and data minicells | |
US20080243495A1 (en) | Adaptive Voice Playout in VOP | |
KR101202051B1 (ko) | 정보 처리 장치 및 정보 처리 방법, 송신 장치 및 송신 방법, 다중화 장치 및 다중화 방법, 및 기록 매체 | |
WO2003032599A3 (en) | Digital content catering system | |
CN100580773C (zh) | 话音分组发送方法及话音分组发送装置 | |
US20060072578A1 (en) | Reordering packets | |
JP4782973B2 (ja) | オーディオおよびビデオ信号の同期化 | |
US7852882B2 (en) | Jitter buffer adaptation based on audio content | |
EP1344124A1 (en) | Method and a commmunication apparatus in a communication system | |
US6717960B1 (en) | Method for reconstructing an aggregate ATM cell stream and related device | |
CN101790754A (zh) | 用于提供amr-wb dtx同步的系统和方法 | |
CN106375835A (zh) | 一种流媒体播放方法及设备 | |
EP1432191B1 (en) | Data transmission method and apparatus based on a multilink protocol | |
CN100377131C (zh) | 接收分组数据的接收机和控制分组数据发送的方法 | |
TW293213B (zh) | ||
US20210211268A1 (en) | Two-Stage IP De-Jitter Algorithm in a Multiplexer for a Group of Statistically Multiplexed Single Program Transport Streams | |
EP1449378A2 (en) | System and method for compensating packet delay variations | |
CN109327724B (zh) | 音视频同步播放方法和装置 | |
US20040047369A1 (en) | Method and apparatus for using and combining sub-frame processing and adaptive jitter-buffers for improved voice quality in voice -over-packet networks | |
EP1581004B1 (en) | Encoder and its method | |
CN100418340C (zh) | 会议电话语音选择合成的方法 | |
WO2007141303A3 (en) | Methods of receiving and sending digital television services | |
US7280050B2 (en) | Broadcast receiving terminal and method for digital stream data decoding |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |