CN103686443B - 一种提高ts流排序能力的方法和装置 - Google Patents
一种提高ts流排序能力的方法和装置 Download PDFInfo
- Publication number
- CN103686443B CN103686443B CN201310637486.5A CN201310637486A CN103686443B CN 103686443 B CN103686443 B CN 103686443B CN 201310637486 A CN201310637486 A CN 201310637486A CN 103686443 B CN103686443 B CN 103686443B
- Authority
- CN
- China
- Prior art keywords
- tos
- sequence number
- stream packets
- current
- field
- 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
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明提供一种提高TS流排序能力的方法及装置,其中该方法应用于TS流发送端设备,该方法包括:在封装TS流数据包时,使用TOS字段中的两个比特位填充TOS序号,使用CC字段中的四个比特位填充CC序号,该TOS序号和CC序号组成该TS流数据包的序号;其中,该TOS字段为该TS流数据包的IP头中的TOS字段,该两个比特位为该TOS字段中的保留比特位;该CC字段为TS头中的CC字段。本发明的方案在不增加报文封装头的基础上增强了TS流排序丢包处理能力。
Description
技术领域
本发明涉及视频监控技术领域,尤其涉及一种提高TS流排序能力的方法和装置。
背景技术
视频监控数据可以采用TS流的封装方式;通常为了降低报文的封装开销,将TS包直接封装在UDP之上,再封装IP头后在IP视频监控网络中传输,请参图1示例的报文格式。TS包的报文头TS头中,Continuity count(以下简称CC)字段是一个4bit的字段,用来表示报文的顺序。一个TS包(包括TS头和TS载荷)为188字节,而一个IP包长度通常不超过1500字节,所以一个IP包约能封装7个TS包,每个TS包中的CC字段可以按照顺序依次填充。如果第1个IP包包含7个TS包,这7个TS包的CC字段分别为:0000、0001、0010、0011、0100、0101、0110;第2个IP包同样包含7个TS包,这7个TS包的CC字段分别为:0111、1000、1001、1010、1011、1100、1101;第3个IP包同样地具有7个TS包,其CC字段分别为:1110、1111、0000、0001、0010、0011、0100;第4个IP包包含两个TS包,其CC字段为:0101、0110;第5个IP包包含6个TS包,其CC字段分别为:0111、1000、1001、1010、1011、1100。当第2~4个IP包丢失时,由于第5个IP包中的第1个TS包的CC字段为0111,其与第1个IP包中的最后一个TS包的CC字段0110是连续的,所以解码端会认为IP报文并未发生丢失,继续进行解码,这样就会出现花屏卡顿的现象。另外,如果报文出现了乱序,解码端也并不知道应该是第2个IP包在第1个IP包之后还是第5个IP包在第1个IP包之后。
请参考图2,对于上述问题的解决,可以采用UDP+RTP+TS的封装方式,通过RTP中的16位序列号来解决乱序丢包的问题。由于RTP中的序列号有16bit,所以基本上不会出现把丢包当作未丢包,出现乱序也无法正确的进行排序的问题。
视频监控流量一般比较多,多增加一层封装(RTP封装)会增加设备的负担,降低网络的利用率。
发明内容
有鉴于此,本发明提供一种提高TS流排序能力的方法和装置。该方法和装置的实现如下:
一种提高TS流排序能力的方法,该方法应用于TS流发送端设备,该方法包括:在封装TS流数据包时,使用TOS字段中的两个预留比特位填充TOS序号,使用CC字段中的四个比特位填充CC序号,该TOS序号和CC序号组成该TS流数据包的序号;其中,该TOS字段为该TS流数据包的IP头中的TOS字段,该两个比特位为该TOS字段中的保留比特位;该CC字段为TS头中的CC字段。
优选地,上述使用TOS字段中的两个预留比特位填充TOS序号具体为:按照每三个TS流数据包填充相同TOS序号的方式依次循环的填充这两个比特位。
基于同样的构思,本发明还提供一种提高TS流排序能力的装置,该装置应用于TS流发送端设备,该装置包括:
TOS序号填充单元,用于在封装TS流数据包时,使用TOS字段中的两个比特位填充TOS序号;其中,该TOS字段为该TS流数据包的IP头中的TOS字段,该两个比特位为该TOS字段中的保留比特位;
CC序号填充单元,用于使用CC字段中的四个比特位填充CC序号;其中,该CC字段为TS头中的CC字段;
所述TOS序号和CC序号组成该TS流数据包的序号。
优选地,该TOS序号填充单元用TOS字段中的两个比特位填充TOS序号具体为:按照每三个TS流数据包填充相同TOS序号的方式依次循环的填充这两个比特位。
相较于现有技术,本发明方案在不增加媒体流数据包封装头的情况下,提高了媒体流数据包的排序能力,从而使得解码端在显示视频画面的时候清晰流畅。
附图说明
图1是一种TS包封装格式图。
图2是另一种TS包封装格式图。
图3是IP报文头格式图。
图4是本发明实施例媒体流接收端丢包判断和排序流程图。
图5是本发明实施例TS流数据包发送端装置逻辑结构图。
具体实施方式
针对背景技术中提到的问题,本发明提出一种不增加报文封装头而增强解码设备乱序丢包处理能力的方案。以下通过具体实施方式详细描述本发明方案。
TS流发送端在封装TS流数据包时,使用TOS字段中的两个比特位和CC字段中的四个比特位来填充TS流数据包序号;该TOS字段为该TS流数据包IP头中的TOS字段,该两个比特位为该TOS字段中的保留比特位;该CC字段为TS头中的CC字段。
请参图3所示的IPv4报文头,该IP报文头中具有1个字节的TOS字段。该TOS字段中有两个保留比特位可以使用。本发明方案将使用这两个保留比特位来扩大TS流数据包序号的范围,以此来较好的解决TS流数据包乱序后的排序问题。
使用TOS字段中的两个比特位和CC字段中的四个比特位来填充TS流数据包序号具体可以按照如下方法来操作:
TS流发送端在TOS字段的两个比特位中,按照每三个TS流数据包填充相同序号的方式依次循环的填充这两个比特位(这两个比特位的内容构成TOS序号)。比如说第1~3个TS流数据包,TOS保留的两个比特位中填充00;第4~6个TS流数据包,TOS保留的两个比特位中填充01;第7~9个TS流数据包,TOS保留的两个比特位中填充10;第10~12个TS流数据包,TOS保留的两个比特位中填充11。如此完成一轮填充,接下来的TS流数据包按照上述方式继续循环填写,比如说第13~15个TS流数据包,TOS保留的两个比特位中填充00,依次类推。
TS流发送端在TS头的CC字段的四个比特位中,还是按照现有的方式进行数据包序号的填充(CC字段四个比特位的内容构成CC序号)。
从上文描述可以看出,一个TS流数据包的序号包含两部分:一部分为TOS序号,另一部分为CC序号。在解码端进行TS流数据包排序时需要同时关注TOS序号和CC序号。
请参表1,该表给出了一个在TOS保留比特位和CC比特位中填充TS流数据包序号的具体例子。
第1个TS流数据包的TOS保留比特位填充00,第1个TS流数据包包含7个TS包,这7个TS包的CC字段分别填充0000、0001、0010、0011、0100、0101、0110;第2个TS流数据包的TOS保留比特位填充00,第2个TS流数据包也包含7个TS包,其中的第1个TS包的序号承接第1个TS流数据包中最后1个TS包序号(0110)递增填充为0111,第2个TS流数据包的其他6个TS包的序号为:1000、1001、1010、1011、1100、1101;第3个TS流数据包的TOS保留比特位填充00,第3个TS流数据包也包含7个TS包,承接第2个TS流数据包的最后1个TS包序号,继续填充这些TS包的序号分别为:1110、1111、0000、0001、0010、0011、0100。
第4个TS流数据包的TOS保留比特位填充01;第4个TS流数据包包含2个TS包(在本实施例中,对每一帧所封装的第一个TS包将由一个新的TS流数据包来承载,所以第4个TS流数据包仅包含2个TS包是由于本帧已经结束的缘故),其TS包序号为:0101、0110。第5个TS流数据包的TOS序号为01,该TS流数据包包含7个TS包,其序号分别为:0111、1000、1001、1010、1011、1100、1101。以下TS流数据包中TOS序号的填充以及CC序号的填充请参表1,不再详细描述。另外,需要说明的是,之所以第4个TS流数据包中仅包含了2个TS包是因为此时一帧数据已经结束,所以新的一帧数据将由一个新的TS流数据包在承载。
TOS序号 | CC序号 | |
第1个TS流数据包 | 00 | 0000/0001/0010/0011/0100/0101/0110 |
第2个TS流数据包 | 00 | 0111/1000/1001/1010/1011/1100/1101 |
第3个TS流数据包 | 00 | 1110/1111/0000/0001/0010/0011/0100 |
第4个TS流数据包 | 01 | 0101/0110 |
第5个TS流数据包 | 01 | 0111/1000/1001/1010/1011/1100/1101 |
第6个TS流数据包 | 01 | 1110/1111/0000/0001/0010/0011/0100 |
第7个TS流数据包 | 10 | 0101/0110/0111/1000/1001/1010/1011 |
第8个TS流数据包 | 10 | 1100/1101/1110/1111/0000/0001/0010 |
第9个TS流数据包 | 10 | 0011/0100/0101/0110 |
第10个TS流数据包 | 11 | … |
第11个TS流数据包 | 11 | … |
第12个TS流数据包 | 11 | … |
… | … | … |
表1
在对每一帧所封装的第一个TS包由一个新的TS流数据包来承载的情况下,TS流发送端按照每三个TS流数据包填充相同TOS序号的方式进行处理是最优实施方式。在这种方式下,能解决至少12个TS流数据包乱序的情况。请参表2,假设没有TOS序号,则在利用CC序号解决乱序问题时,只能解决3个TS流数据包的乱序问题。如果将TOS序号和CC序号结合起来,则这12个TS流数据包乱序后均能正确被排序。同样的,如果没有TOS序号,则当第2~4个TS流数据包丢失后,解码端并不会正确判断丢包,它可能会把第5个TS流数据包当作第2个TS流数据包进行解码,从而出现图像显示异常。但是当使用了TOS序号后,即便第2~4个TS流数据包丢失,解码端也不会将第5个TS流数据包当作是第2个TS流数据包,因为它的TOS序号是01,而第2个TS流数据包的TOS序号为00,所以解码端可以要求TS流发送端重新发送丢失的TS流数据包,从而进行正确解码确保图像质量。
当然表2是最差的一种情况,即第4个TS流数据包的CC序号就和第1个TS流数据包的CC序号相同了。之所以说是最差的情况是因为不可能出现第3个TS流数据包或者第2个TS流数据包的CC序号和第1个TS流数据包相同,这是由CC具有4个比特位这一因素决定的。在表2的例子中,如果按照每4个TS流数据包填充相同TOS序号的方式来进行处理,在表2情况下就无法正确排序,因为第1个TS流数据包和第4个TS流数据包的TOS序号和CC序号都完全一致,分别为00和0000。所以表2的这个例子需要按照每三个TS流数据包填充相同TOS序号的方式进行处理。
按照每三个TS流数据包填充相同TOS序号的方式进行处理能解决至少12个TS流数据包乱序的情况。在很多情况下,能解决的乱序包数量都大大超过12个。
TOS序号 | CC序号 | |
第1个TS流数据包 | 00 | 0000/0001/0010/0011/0100/0101/0110 |
第2个TS流数据包 | 00 | 0111/1000/1001/1010/1011/1100/1101 |
第3个TS流数据包 | 00 | 1110/1111 |
第4个TS流数据包 | 01 | 0000/0001/0010/0011/0100/0101/0110 |
第5个TS流数据包 | 01 | 0111/1000/1001/1010/1011/1100/1101 |
第6个TS流数据包 | 01 | 1110/1111/0000/0001/0010/0011/0100 |
第7个TS流数据包 | 10 | 0101/0110/0111/1000/1001/1010/1011 |
第8个TS流数据包 | 10 | 1100/1101/1110/1111/0000/0001/0010 |
第9个TS流数据包 | 10 | 0011/0100/0101/0110/0111/1000 |
第10个TS流数据包 | 11 | 1001/1010/1011/1100/1101/1110/1111 |
第11个TS流数据包 | 11 | 0000/0001/0010/0011/0100/0101/0110 |
第12个TS流数据包 | 11 | 0111/1000/1001/1010/1011/1100/1101 |
表2
如果在对每一帧所封装的第一个TS包不需要由一个新的TS流数据包来承载的情况下,能解决至少64个TS流数据包乱序后排序的问题。当然在实际中,出现64个TS流数据包乱序的情况是不多见的,所以对于这种情况本实施例不再详细说明。
上文描述了TS流发送端如何利用IP头中的TOS字段结合TS头中的CC字段来对TS流数据包进行序号的填充;下文将描述媒体流接收端如何来对填充有TOS序号和CC序号的TS流数据包判断是否出现丢包以及排序问题。
媒体流接收端在根据缓存中TS流数据包TOS序号和CC序号进行丢包判断时,均是以一个TS流数据包为最小单位进行的。因为在网络中,如果要发生丢包,必定是丢一个TS流数据包,而不会发生一个TS流数据包中的部分TS包丢失的情况。媒体流接收端在进行TS流数据包排序时需要在缓存中查找TOS序号和CC序号均正确的TS流数据包。
请参图4,图4为媒体流接收端利用TOS序号和CC序号对TS流数据包进行丢包判断和排序的流程图。该流程包括如下步骤:
步骤301、判断当前TOS序号TOS_TAIL对应的计数变量TOS_count是否等于3,如果是,转步骤302,否则,转步骤303。
步骤302、判断缓存中是否存在TOS序号为((TOS_TAIL+1)mod 3)的TS流数据包,如果是,转步骤304;否则,转步骤305。
步骤303、判断缓存中是否存在TOS序号为TOS_TAIL的TS流数据包,如果是,转步骤306;否则,转步骤307。
步骤304、在TOS序号为((TOS_TAIL+1)mod 3)的TS流数据包中进一步判断是否存在CC序号为((CC_INFO+1)mod 16)的TS流数据包,其中CC_INFO为当前的CC序号,如果是,则转步骤308;否则,转步骤309。
步骤305、确认当前丢包;转步骤312。
步骤306、在当前TOS序号的TS流数据包中进一步判断是否存在CC序号为((CC_INFO+1)mod 16)的TS流数据包,其中CC_INFO为当前的CC序号,如果是,则转步骤310,否则,转步骤311。
步骤307、确认当前丢包;转步骤313。
步骤308、确认当前未丢包。该TOS序号为((TOS_TAIL+1)mod 3),CC序号为((CC_INFO+1)mod 16)的TS流数据包为当前待查找的TS流数据包;进一步地,将当前的TOS序号TOS_TAIL设置为该查找到的TS流数据包的TOS序号,将当前的CC序号CC_INFO设置为该查找到的TS流数据包中最后一个TS包的CC序号,将当前的计数变量TOS_count设置为1;返回步骤301。
步骤309、确认当前丢包;转步骤313。
步骤310、确认当前未丢包。当前TOS序号为TOS_TAIL且CC序号为((CC_INFO+1)mod16)的TS流数据包为当前待查找的TS流数据包;进一步地,将当前的TOS序号TOS_TAIL设置为该查找到的TS流数据包的TOS序号,CC序号设置为该查找到的TS流数据包中最后一个TS包的CC序号,TOS_count设置当前值加一;返回步骤301。
步骤311、确认当前丢包;转步骤314。
步骤312、确认缓存中TOS序号为((TOS_TAIL+2)mod 3)的TS流数据包的个数icount;转步骤315。
步骤313、确认缓存中TOS序号为((TOS_TAIL+1)mod 3)的TS流数据包的个数icount;转步骤315。
步骤314、确认缓存中TOS序号为TOS_TAIL的TS流数据包的个数icount;转步骤315。
步骤315、判断icount是否为1个,如果是,转步骤316;否则转步骤317。
步骤316、该TS流数据包即为当前查找的TS流数据包,将当前的TOS序号TOS_TAIL设置为该查找到的TS流数据包的TOS序号,CC序号设置为该查找到的TS流数据包中最后一个TS包的CC序号,TOS_count设置为(4-icount);返回步骤301。
步骤317、判断icount是否为2,如果是,转步骤318,否则转步骤319。
步骤318、将这两个TS流数据包依据CC序号进行排序,排在最前面的即为当前查找的TS流数据包;将当前的TOS序号TOS_TAIL设置为该查找到的TS流数据包的TOS序号,CC序号设置为该查找到的TS流数据包中最后一个TS包的CC序号,TOS_count设置为(4-icount);返回步骤301。
步骤319、判断icount是否为3,如果是,转步骤320,否则转步骤321。
步骤320、将这三个TS流数据包依据CC序号进行排序,排在最前面的即为当前查找的TS流数据包;将当前的TOS序号TOS_TAIL设置为该查找到的TS流数据包的TOS序号,CC序号设置为该查找到的TS流数据包中最后一个TS包的CC序号,TOS_count设置为(4-icount);返回步骤301。
步骤321、将缓存中的首个TS流数据包作为当前查找的TS流数据包;将当前的TOS序号TOS_TAIL设置为该查找到的TS流数据包的TOS序号,CC序号设置为该查找到的TS流数据包中最后一个TS包的CC序号,TOS_count设置为1;返回步骤301。
以下通过一个例子来说明上述实施步骤。
上述步骤中的当前TOS序号TOS_TAIL为上一轮排序执行完成后所赋的值,TOS_count为每一个TOS序号TOS_TAIL对应的计数变量,每执行一次丢包或者排序检测,同一个TOS序号对应的计数变量TOS_count加1,当前CC序号CC_INFO为上一轮排序执行完成后所赋的值。假设当前的TOS序号TOS_TAIL=01,该序号对应的TOS_count为1,当前的CC序号CC_INFO=0110。当前缓存中的TS流数据包按照如下顺序存在:
TOS序号 | CC序号 | |
第1个TS流数据包 | 01 | 0111/1000/1001/1010/1011/1100/1101 |
第2个TS流数据包 | 01 | 1110/1111/0000/0001/0010/0011/0100 |
第3个TS流数据包 | 10 | 0011/0100/0101/0110/0111/1000 |
第4个TS流数据包 | 11 | 0000/0001/0010/0011/0100/0101/0110 |
第5个TS流数据包 | 11 | 0111/1000/1001/1010/1011/1100/1101 |
第6个TS流数据包 | 11 | 1001/1010/1011/1100/1101/1110/1111 |
第7个TS流数据包 | 10 | 0101/0110/0111/1000/1001/1010/1011 |
表3
执行第一轮查找:
执行步骤301,由于当前的TOS_count=1,不为3,所以执行步骤303:判断是否存在TOS序号为当前TOS_TAIL,即01的TS流数据包,发现缓存中的第1个和第2个数据包都是TOS序号为01的TS流数据包,所以执行步骤306:在当前TOS序号的TS流数据包中,即第1个和第2个TS流数据包中,进一步判断是否存在首TS包的CC序号为((CC_INFO+1)mod 16)=((0110+1)mod 16)=0111的TS流数据包,结果发现存在,即第1个TS流数据包,所以进一步执行步骤310:确认当前未丢包,该第1个TS流数据包(TOS序号为01,首TS包CC序号为0111)即为当前待查找的TS流数据包。在该轮查找结束后,将TOS_TAIL赋值为01;CC序号设置为该查找到的TS流数据包中最后一个TS包的CC序号,即CC_INFO重新赋值为1101;TOS_count设置为2。
执行第二轮查找:
当前TOS_TAIL=01,TOS_count=2,CC_INFO=1101。
执行步骤301、由于当前的TOS_count=2,不为3,所以执行步骤303:判断是否存在TOS序号为当前TOS_TAIL,即01的TS流数据包,发现缓存中的第2个数据包是TOS序号为01的TS流数据包(第1个数据包已经被搬移出缓存执行解码或者在缓存中被标记为查找到的数据包),所以执行步骤306:在当前TOS序号的TS流数据包中,即第2个TS流数据包中,进一步判断是否存在首TS包的CC序号为((CC_INFO+1)mod 16)=((1101+1)mod 16)=1110的TS流数据包,结果为该第2个TS流数据包,所以进一步执行步骤310:确认当前未丢包,该第2个TS流数据包(TOS序号为01,首TS包CC序号为1110)即为当前待查找的TS流数据包。在该轮查找结束后,将TOS_TAIL赋值为01;CC序号设置为该查找到的TS流数据包中最后一个TS包的CC序号,即CC_INFO重新赋值为0100;TOS_count设置为3。
执行第三轮查找:
当前TOS_TAIL=01,TOS_count=3,CC_INFO=0100。
执行步骤301,由于当前TOS_count=3,所以执行步骤302:判断缓存中是否存在TOS序号为((TOS_TAIL+1)mod 3)的TS流数据包,即TOS序号为10的TS流数据包,结果发现第3和第7个TS流数据包为满足条件的包;进一步执行步骤304:在TOS序号为10的TS流数据包中进一步判断是否存在首TS包CC序号为((CC_INFO+1)mod 16)=(0100+1)mod 16=0101的TS流数据包,结果发现第7个TS流数据包满足条件。所以进一步执行步骤308:确认当前未丢包,该TOS序号为10,首TS包CC序号为0101的TS流数据包为当前待查找的TS流数据包;进一步地,将当前的TOS序号TOS_TAIL设置为10,将当前的CC序号CC_INFO设置为该查找到的TS流数据包中最后一个TS包的CC序号,即1011,将当前的计数变量TOS_count设置为1。
执行第4轮查找:
当前TOS_TAIL=10,TOS_count=1,CC_INFO=1011。
执行步骤301,由于当前TOS_count=1,不等于3,所以执行步骤303:判断缓存中是否存在TOS序号为TOS_TAIL,即10的TS流数据包,判断结果为是,所以执行步骤306:在当前TOS序号的TS流数据包中进一步判断是否存在首TS包的CC序号为((CC_INFO+1)mod 16)=((1011+1)mod16)=1100的TS流数据包,判断结果为否,所以执行步骤311:步骤311、确认当前丢包,转步骤314:确认缓存中TOS序号为TOS_TAIL的TS流数据包的个数icount;本例中TOS序号为10的TS流数据包为1,所以该第3个TS流数据包为当前待查找的TS流数据包。TOS序号TOS_TAIL值不变,即将TOS_TAIL设置为10,CC序号设置为该查找到的TS流数据包中最后一个TS包的CC序号,即CC_INFO=1000,TOS_count设置为(4-icount),其中icount的值为TOS序号为TOS_TAIL的TS流数据包的个数,即TOS_count=4-1=3,返回步骤301。
以上4轮查找简单阐述了一下丢包判断和排序的流程。
本发明在不增加媒体流数据包封装头的情况下,提高了媒体流数据包的排序能力,从而使得解码端在显示视频画面的时候清晰流畅。
请参图5,图5是封装TS流数据包序号的逻辑装置,该装置包括TOS序号填充单元和CC序号填充单元。该TOS序号填充单元用于在封装TS流数据包时,使用TOS字段中的两个比特位填充TOS序号;其中,该TOS字段为该TS流数据包的IP头中的TOS字段,该两个比特位为该TOS字段中的保留比特位;该CC序号填充单元,用于使用CC字段中的四个比特位填充CC序号;其中,该CC字段为TS头中的CC字段;所述TOS序号和CC序号组成该TS流数据包的序号。该TOS序号填充单元用TOS字段中的两个比特位填充TOS序号具体为:按照每三个TS流数据包填充相同TOS序号的方式依次循环的填充这两个比特位。
从图4流程图以及上述例子可以看出,媒体流接收端可以对利用TOS序号和CC序号封装的TS流数据包进行排序。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (6)
1.一种提高TS流排序能力的方法,该方法应用于TS流发送端设备,其特征在于,该方法包括:在封装TS流数据包时,使用TOS字段中的两个预留比特位填充TOS序号,使用CC字段中的四个比特位填充CC序号,该TOS序号和CC序号组成该TS流数据包的序号;其中,该TOS字段为该TS流数据包的IP头中的TOS字段,该两个比特位为该TOS字段中的保留比特位;该CC字段为TS头中的CC字段。
2.如权利要求1所述的方法,其特征在于,所述使用TOS字段中的两个预留比特位填充TOS序号具体为:按照每三个TS流数据包填充相同TOS序号的方式依次循环的填充这两个比特位。
3.一种对应用权利要求1或2方法的TS流进行排序的方法,该方法应用于解码端设备,其特征在于,该方法包括:在缓存中查找TOS序号和CC序号正确的TS流数据包,所述TOS序号是由该TS流数据包的IP头中的TOS字段的两个预留比特位填充的,所述CC序号是由TS头中的CC字段的四个比特位填充的。
4.如权利要求3所述的方法,其特征在于,所述TOS序号为所述TOS字段中的两个预留比特位按照每三个TS流数据包填充相同TOS序号的方式依次循环的填充的,在缓存中查找TOS序号和CC序号正确的TS流数据包包括如下步骤:
步骤A、判断当前TOS序号TOS_TAIL对应的计数变量TOS_count是否等于3,如果是,转步骤B,否则,转步骤C;
步骤B、判断缓存中是否存在TOS序号为((TOS_TAIL+1)mod 3)的TS流数据包,如果是,转步骤D;否则,转步骤E;
步骤C、判断缓存中是否存在TOS序号为TOS_TAIL的TS流数据包,如果是,转步骤F;否则,转步骤G;
步骤D、在TOS序号为((TOS_TAIL+1)mod 3)的TS流数据包中进一步判断是否存在CC序号为((CC_INFO+1)mod 16)的TS流数据包,其中CC_INFO为当前的CC序号,如果是,则转步骤H;否则,转步骤I;
步骤E、确认当前丢包;转步骤L;
步骤F、在当前TOS序号的TS流数据包中进一步判断是否存在CC序号为((CC_INFO+1)mod 16)的TS流数据包,其中CC_INFO为当前的CC序号,如果是,则转步骤J,否则,转步骤K;
步骤G、确认当前丢包;转步骤M;
步骤H、确认当前未丢包;该TOS序号为((TOS_TAIL+1)mod 3),CC序号为((CC_INFO+1)mod 16)的TS流数据包为当前待查找的TS流数据包;进一步地,将当前的TOS序号TOS_TAIL设置为该查找到的TS流数据包的TOS序号,将当前的CC序号CC_INFO设置为该查找到的TS流数据包中最后一个TS包的CC序号,将当前的计数变量TOS_count设置为1;返回步骤A;
步骤I、确认当前丢包;转步骤M;
步骤J、确认当前未丢包;当前TOS序号为TOS_TAIL且CC序号为((CC_INFO+1)mod 16)的TS流数据包为当前待查找的TS流数据包;进一步地,将当前的TOS序号TOS_TAIL设置为该查找到的TS流数据包的TOS序号,CC序号设置为该查找到的TS流数据包中最后一个TS包的CC序号,TOS_count设置当前值加一;返回步骤A;
步骤K、确认当前丢包;转步骤N;
步骤L、确认缓存中TOS序号为((TOS_TAIL+2)mod 3)的TS流数据包的个数icount;转步骤O;
步骤M、确认缓存中TOS序号为((TOS_TAIL+1)mod 3)的TS流数据包的个数icount;转步骤O;
步骤N、确认缓存中TOS序号为TOS_TAIL的TS流数据包的个数icount;转步骤O;
步骤O、判断icount是否为1个,如果是,转步骤P;否则转步骤Q;
步骤P、该TS流数据包即为当前查找的TS流数据包,将当前的TOS序号TOS_TAIL设置为该查找到的TS流数据包的TOS序号,CC序号设置为该查找到的TS流数据包中最后一个TS包的CC序号,TOS_count设置为(4-icount);返回步骤A;
步骤Q、判断icount是否为2,如果是,转步骤R,否则转步骤S;
步骤R、将这两个TS流数据包依据CC序号进行排序,排在最前面的即为当前查找的TS流数据包;将当前的TOS序号TOS_TAIL设置为该查找到的TS流数据包的TOS序号,CC序号设置为该查找到的TS流数据包中最后一个TS包的CC序号,TOS_count设置为(4-icount);返回步骤A;
步骤S、判断icount是否为3,如果是,转步骤T,否则转步骤U;
步骤T、将这三个TS流数据包依据CC序号进行排序,排在最前面的即为当前查找的TS流数据包;将当前的TOS序号TOS_TAIL设置为该查找到的TS流数据包的TOS序号,CC序号设置为该查找到的TS流数据包中最后一个TS包的CC序号,TOS_count设置为(4-icount);返回步骤A;
步骤U、将缓存中的首个TS流数据包作为当前查找的TS流数据包;将当前的TOS序号TOS_TAIL设置为该查找到的TS流数据包的TOS序号,CC序号设置为该查找到的TS流数据包中最后一个TS包的CC序号,TOS_count设置为1;返回步骤A。
5.一种提高TS流排序能力的装置,该装置应用于TS流发送端设备,其特征在于,该装置包括:
TOS序号填充单元,用于在封装TS流数据包时,使用TOS字段中的两个比特位填充TOS序号;其中,该TOS字段为该TS流数据包的IP头中的TOS字段,该两个比特位为该TOS字段中的保留比特位;
CC序号填充单元,用于使用CC字段中的四个比特位填充CC序号;其中,该CC字段为TS头中的CC字段;
所述TOS序号和CC序号组成该TS流数据包的序号。
6.如权利要求5所述的装置,其特征在于,该TOS序号填充单元用TOS字段中的两个比特位填充TOS序号具体为:按照每三个TS流数据包填充相同TOS序号的方式依次循环的填充这两个比特位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310637486.5A CN103686443B (zh) | 2013-12-02 | 2013-12-02 | 一种提高ts流排序能力的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310637486.5A CN103686443B (zh) | 2013-12-02 | 2013-12-02 | 一种提高ts流排序能力的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103686443A CN103686443A (zh) | 2014-03-26 |
CN103686443B true CN103686443B (zh) | 2017-02-08 |
Family
ID=50322503
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310637486.5A Active CN103686443B (zh) | 2013-12-02 | 2013-12-02 | 一种提高ts流排序能力的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103686443B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105657457A (zh) * | 2016-04-01 | 2016-06-08 | 浙江创佳数字技术有限公司 | 一种调整ts流文件的方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101321036A (zh) * | 2008-06-28 | 2008-12-10 | 华为技术有限公司 | 一种数据包处理方法、装置和系统 |
CN101511013A (zh) * | 2009-03-26 | 2009-08-19 | 华为技术有限公司 | 视频报文的处理方法、设备和系统 |
CN102111618A (zh) * | 2011-01-20 | 2011-06-29 | 德科仕通信(上海)有限公司 | 提高计算视频ts丢包数准确度的方法及系统 |
-
2013
- 2013-12-02 CN CN201310637486.5A patent/CN103686443B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101321036A (zh) * | 2008-06-28 | 2008-12-10 | 华为技术有限公司 | 一种数据包处理方法、装置和系统 |
CN101511013A (zh) * | 2009-03-26 | 2009-08-19 | 华为技术有限公司 | 视频报文的处理方法、设备和系统 |
CN102111618A (zh) * | 2011-01-20 | 2011-06-29 | 德科仕通信(上海)有限公司 | 提高计算视频ts丢包数准确度的方法及系统 |
Non-Patent Citations (1)
Title |
---|
基于无线网络的实时视频传输系统的设计;王峰,蔡敬菊,魏宇星,刘云峰;《微电子学与计算机》;20120701;第29卷(第5期) * |
Also Published As
Publication number | Publication date |
---|---|
CN103686443A (zh) | 2014-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102229109B1 (ko) | 송신 장치, 수신 장치 및 그 신호 처리 방법 | |
US7688856B2 (en) | Data transmission method using packet aggregation | |
EP2656556B1 (en) | An improvement on ip fragmentation in gtp tunnel | |
CN107257326A (zh) | 用于传送和接收媒体数据的接口装置和方法 | |
CN103650432A (zh) | 用于在多媒体系统中生成前向纠错包的方法和用于发送和接收前向纠错包的方法及装置 | |
CN108306895A (zh) | 数据传输方法及装置 | |
CN103929681A (zh) | 一种提升低速网络中rtp视频流处理效率的方法 | |
CN1897568A (zh) | 一种实现虚交换的方法和装置 | |
CN108282892A (zh) | 无线资源控制消息的传输方法、中央单元及分布式单元 | |
CN103916375B (zh) | Hfc网络下行数据多通道封装与传输方法 | |
CN106063280A (zh) | 发送广播信号的装置、接收广播信号的装置、发送广播信号的方法以及接收广播信号的方法 | |
CN106102018A (zh) | 一种宽带集群通信中的通信配置方法和装置 | |
US20120151537A1 (en) | Method and system for asynchronous and isochronous data transmission in a high speed video network | |
CN106131710A (zh) | 一种视频数据重传的方法及其系统 | |
CN1972408A (zh) | 一种移动多媒体广播系统的数据传送方法 | |
CN103686443B (zh) | 一种提高ts流排序能力的方法和装置 | |
CN107295364A (zh) | 用于弹幕视频的实时流传输控制方法、控制装置 | |
CN101534291A (zh) | Ip报文的发送、接收的方法及装置 | |
CN107094144B (zh) | 基带帧的封装方法及解封装方法 | |
CN106899380A (zh) | 一种volte视频电话传输方法及其系统 | |
CN106878803A (zh) | 无线传输视/音频的方法、装置以及系统 | |
CN114339488A (zh) | 光传输网络中以太网业务保护方法和装置 | |
CN103825768B (zh) | 报文传输方法和装置 | |
CN107707933A (zh) | 发送、接收视频流的方法及装置 | |
CN107197392A (zh) | 在弹幕视频流传输过程中的丢包方法及丢包装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | 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 | ||
CB03 | Change of inventor or designer information | ||
CB03 | Change of inventor or designer information |
Inventor after: Zhang Pengguo Inventor after: Zhou Di Inventor after: Du Chaohua Inventor before: Zhou Di Inventor before: Du Chaohua |