getItemList();
private:
/**
* 打印字段详情
* 使用net2Host转换成主机字节序后才可使用此函数
*/
std::string dumpString() const;
/**
* 网络字节序转换为主机字节序
* @param size 字节长度,防止内存越界
*/
void net2Host(size_t size);
} PACKED; RtcpSR
V(2bit)
Version,表示RTCP版本号,当前规范定义的版本号为2,需要注意的是RTP数据包中的版本号与RTCP数据包的中的版本号是一致的。
P(1bit)
填充位,表示是否需要填充,0表示不填充,其不属于控制信息。在某些情况下(如加密)需要进行填充,在填充的情况下,Padding的最后一个字节用于计算应该忽略多少个字节!
RC(5bit)
接收方报告计数,表示在该数据包中的接收方报告块的数量,该字段0值是有效的,但没有实际意义!
PT(8bit)
RTCP的数据包的分组类型,RTCP包含的分组类型如下:
BYE分组为结束分组,表示关闭一个数据流;
APP分组为特定应用分组,使应用程序能够自定义新的分组类型;
SDES分组为源描述分组,其作用是给出参加会话者的描述;
SR分组为发送端报告分组:发送端每发送一个RTP数据包,就要发送个一个发送端报告分组SR;
RR为接收端分组报告,接收端分组报告 ,每收到一个RTP流,就产生一个RR分组。
length(16bit)
RTCP数据包的大小。该字段中大小的表示比较有意思,使用4个字节为1组,长度共有几个4个字节的组,然后用该长度减去1,即为RTCP包中的长度!举个例子:假设RTCP数据包的长度为32个字节,32/4=8,总共有8组4个字节,8-1=7,此时RTCP数据包中length的值为7。
SSRC(32bit)
同步源标识
NTP时标
NTP时间戳
RTP时标
RTP时间戳
发送者包计数
从开始传输到当前SR包生成的时间段内,发送端发送的RTP数据包的总个数!如果发送者更改其SSRC,则该计数要被重置
发送者数据8位组计数
从开始传输到当前SR包生成的时间段内,发送端发送的总的数据的大小的八位组计数,不包含头信息以及填充信息!如果发送者更改可SSRC,需要重置该值!该字段可以用来估计平均码率!
report block 使用的较少,只对一些英文单词做简单的介绍:
fraction lost:丢包率
cumulative number of packets lost :累计丢失的数据包数
extended highest sequence number received:接收到的扩展最高序列号
interarrival jitter:到达间隔抖动
profile-specific extensions :特定于配置文件的扩展