一个音频会话峰(talkspurt)中M位将在第一个包中设置,而一个视频帧中M位在最后一个包中设置。如果它作为一个常量字段则每次变化都要发送整个RTP头,如此会造成压缩效率明显下降。因此,压缩头中的一位将明确地携带M位。如果包通过RTP混合器流动,特别是音频数据,则CSRC列表和CC记数将发生改变。但CSRC列表将在会话峰期间保持不变,所以它只需在发生变化时才发送。
压缩协议压缩协议必须维护一个状态牢靠的压缩方和解压方的共享信息集合。对每个IP/UDP/RTP报文流有一个单独的通过源地址IP、目的地址IP、UDP端口对和RTP SSRC字段组合定义的会话环境。要维护的会话环境数目可通过双方协商而定。每个环境通过一个8位或者16位的标识符来标识,具体范围要根据协商的环境数量决定,所以最大值为65536。未压缩和压缩的包都必须携带环境ID和一个4位的用来检测包通信中丢失的顺序号。每个环境都有自己的顺序号空间,所以单个包的丢失只会影响到一个环境。
每个环境共享的信息包括如下项目:
l
完整的IP, UDP和RTP头,对最后一个由压缩方发送或者解压方重建的包,可能还包括CSRC表。
l
IPv4 ID字段的一次差分结果,当收到环境中的一个未压缩IP头时初始化为1,每次收到一个压缩包中的delta IPv4 ID字段时更新。
l
RTP时间戳字段的一次差分结果,当收到环境中的一个未压缩IP头时初始化为0,每次收到一个压缩包中的delta RTP时间戳字段时更新。
l
最后一个4位顺序号,用来检测双方通信时的包丢失情况。
l
IPv6 UDP包的非差分编码当前产生号。对于IPv4,如果没有使用下面定义的COMPRESSED_NON_TCP包类型,则产生号可设置为0。
l
一个经过双方协商,可选的环境相关的delta编码表。