FU-A打包方式,头部FU-indicator格式为:
+---------------+
|0|1|2|3|4|5|6|7|
+-+-+-+-+-+-+-+-+
|F|NRI| Type |
+---------------+
其中type为0x28可以判断为FU-A格式,其中F,NRI和原来NALU头部的F,NRI一样;
然后通过FU-header判断包的位置:
+---------------+
|0|1|2|3|4|5|6|7|
+-+-+-+-+-+-+-+-+
|S|E|R| Type |
+---------------+
S:开始标志,FU-A打包中第一个包时,这位设置为1;
E:结束标志,FU-A打包中最后一个包时,这位设置为1;
R:保留位;
Type:就是原来NALU的Type,0x5,0x7这些。
所以收包时,收到一个FU-A开的包,并且判断到S位为1,就要启动一次FU-A的收包处理流程。当收到FU-A且E位为1的包时,对之前收到的RTP包进行组合还原原来的包。
对于单一的NALU构成的RTP包就容易,不需要做任何处理直接解出来就行了。
对于多个NALU打到一个RTP的包(STAP方式),也不需要处理,都在一个包里面。
只有FU-A或者FU-B方式的需要特殊处理(目前大部分都是这种格式)。
网友评论