RR报文解析(一)

我们首先来看下RTCP的RR报文的格式:
这里写图片描述

接着上一篇,我们来到ModuleRtpRtcpImpl的IncomingRtcpPacket函数中,如下:

int32_t ModuleRtpRtcpImpl::IncomingRtcpPacket(
    const uint8_t* rtcp_packet,
    const size_t length) {

  RTCPUtility::RTCPParserV2 rtcp_parser(rtcp_packet, length, true);  //创建RTCPParserV2 

  const bool valid_rtcpheader = rtcp_parser.IsValid();  //判断头是否有效
  if (!valid_rtcpheader) {
    return -1;
  }
  RTCPHelp::RTCPPacketInformation rtcp_packet_information;
  int32_t ret_val = rtcp_receiver_.IncomingRTCPPacket(
      rtcp_packet_information, &rtcp_parser);   //将rtcp_parser解析出来的内容赋给rtcp_packet_information
  if (ret_val == 0) {
    rtcp_receiver_.TriggerCallbacksFromRTCPPacket(rtcp_packet_information);
  }
  return ret_val;
}

RTCPParserV2 的解析过程比较绕,这里不打算详解,先看下RTCPParserV2 内的一个成员:

class RTCPParserV2 {
private:
    RTCPPacket _packet;
}

union RTCPPacket {
  RTCPPacketRR RR;  //
  RTCPPacketSR SR;
  RTCPPacketReportBlockItem ReportBlockItem;

  RTCPPacketSDESCName CName;
  RTCPPacketBYE BYE;

  //...
};

RTCPPacket 是一个联合体,我们主要看下RR报文有关的RTCPPacketRR和RTCPPacketReportBlo

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值