Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(332)

Unified Diff: webrtc/modules/rtp_rtcp/source/rtcp_receiver.cc

Issue 2340763002: Split RtcpReceiver::HandleSenderReceiverReport into two functions (Closed)
Patch Set: nit Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/modules/rtp_rtcp/source/rtcp_receiver.cc
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_receiver.cc b/webrtc/modules/rtp_rtcp/source/rtcp_receiver.cc
index 71cf86f3ec872cbfc9380cfcf6b1fb128a583d9e..38cac452e6bc4b7a07ed48f784b45e800209228d 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_receiver.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_receiver.cc
@@ -299,8 +299,10 @@ int32_t RTCPReceiver::IncomingRTCPPacket(
// next top level packet.
switch (pktType) {
case RTCPPacketTypes::kSr:
+ HandleSenderReport(*rtcpParser, rtcpPacketInformation);
+ break;
case RTCPPacketTypes::kRr:
- HandleSenderReceiverReport(*rtcpParser, rtcpPacketInformation);
+ HandleReceiverReport(*rtcpParser, rtcpPacketInformation);
break;
case RTCPPacketTypes::kSdes:
HandleSDES(*rtcpParser, rtcpPacketInformation);
@@ -374,24 +376,18 @@ int32_t RTCPReceiver::IncomingRTCPPacket(
return 0;
}
-void RTCPReceiver::HandleSenderReceiverReport(
+void RTCPReceiver::HandleSenderReport(
RTCPUtility::RTCPParserV2& rtcpParser,
RTCPPacketInformation& rtcpPacketInformation) {
RTCPUtility::RTCPPacketTypes rtcpPacketType = rtcpParser.PacketType();
const RTCPUtility::RTCPPacket& rtcpPacket = rtcpParser.Packet();
- assert((rtcpPacketType == RTCPPacketTypes::kRr) ||
- (rtcpPacketType == RTCPPacketTypes::kSr));
+ RTC_DCHECK(rtcpPacketType == RTCPPacketTypes::kSr);
// SR.SenderSSRC
// The synchronization source identifier for the originator of this SR packet
- // rtcpPacket.RR.SenderSSRC
- // The source of the packet sender, same as of SR? or is this a CE?
-
- const uint32_t remoteSSRC = (rtcpPacketType == RTCPPacketTypes::kRr)
- ? rtcpPacket.RR.SenderSSRC
- : rtcpPacket.SR.SenderSSRC;
+ const uint32_t remoteSSRC = rtcpPacket.SR.SenderSSRC;
rtcpPacketInformation.remoteSSRC = remoteSSRC;
@@ -401,38 +397,31 @@ void RTCPReceiver::HandleSenderReceiverReport(
return;
}
- if (rtcpPacketType == RTCPPacketTypes::kSr) {
- TRACE_EVENT_INSTANT2(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"), "SR",
- "remote_ssrc", remoteSSRC, "ssrc", main_ssrc_);
+ TRACE_EVENT_INSTANT2(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"), "SR",
+ "remote_ssrc", remoteSSRC, "ssrc", main_ssrc_);
- if (_remoteSSRC ==
- remoteSSRC) // have I received RTP packets from this party
- {
- // only signal that we have received a SR when we accept one
- rtcpPacketInformation.rtcpPacketTypeFlags |= kRtcpSr;
+ if (_remoteSSRC ==
+ remoteSSRC) // have I received RTP packets from this party
philipel 2016/09/15 11:58:19 format
danilchap 2016/09/15 12:17:30 Done.
+ {
+ // only signal that we have received a SR when we accept one
+ rtcpPacketInformation.rtcpPacketTypeFlags |= kRtcpSr;
- rtcpPacketInformation.ntp_secs = rtcpPacket.SR.NTPMostSignificant;
- rtcpPacketInformation.ntp_frac = rtcpPacket.SR.NTPLeastSignificant;
- rtcpPacketInformation.rtp_timestamp = rtcpPacket.SR.RTPTimestamp;
+ rtcpPacketInformation.ntp_secs = rtcpPacket.SR.NTPMostSignificant;
+ rtcpPacketInformation.ntp_frac = rtcpPacket.SR.NTPLeastSignificant;
+ rtcpPacketInformation.rtp_timestamp = rtcpPacket.SR.RTPTimestamp;
- // We will only store the send report from one source, but
- // we will store all the receive block
+ // We will only store the send report from one source, but
+ // we will store all the receive block
- // Save the NTP time of this report
- _remoteSenderInfo.NTPseconds = rtcpPacket.SR.NTPMostSignificant;
- _remoteSenderInfo.NTPfraction = rtcpPacket.SR.NTPLeastSignificant;
- _remoteSenderInfo.RTPtimeStamp = rtcpPacket.SR.RTPTimestamp;
- _remoteSenderInfo.sendPacketCount = rtcpPacket.SR.SenderPacketCount;
- _remoteSenderInfo.sendOctetCount = rtcpPacket.SR.SenderOctetCount;
+ // Save the NTP time of this report
+ _remoteSenderInfo.NTPseconds = rtcpPacket.SR.NTPMostSignificant;
+ _remoteSenderInfo.NTPfraction = rtcpPacket.SR.NTPLeastSignificant;
+ _remoteSenderInfo.RTPtimeStamp = rtcpPacket.SR.RTPTimestamp;
+ _remoteSenderInfo.sendPacketCount = rtcpPacket.SR.SenderPacketCount;
+ _remoteSenderInfo.sendOctetCount = rtcpPacket.SR.SenderOctetCount;
- _clock->CurrentNtp(_lastReceivedSRNTPsecs, _lastReceivedSRNTPfrac);
- } else {
- rtcpPacketInformation.rtcpPacketTypeFlags |= kRtcpRr;
- }
+ _clock->CurrentNtp(_lastReceivedSRNTPsecs, _lastReceivedSRNTPfrac);
} else {
- TRACE_EVENT_INSTANT2(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"), "RR",
- "remote_ssrc", remoteSSRC, "ssrc", main_ssrc_);
-
rtcpPacketInformation.rtcpPacketTypeFlags |= kRtcpRr;
philipel 2016/09/15 11:58:19 This line look suspicious, do we say that this rtc
danilchap 2016/09/15 12:17:30 This behavior is unchanged. Treat sender report as
}
// Update that this remote is alive.
@@ -446,6 +435,43 @@ void RTCPReceiver::HandleSenderReceiverReport(
}
}
+void RTCPReceiver::HandleReceiverReport(
+ RTCPUtility::RTCPParserV2& rtcpParser,
+ RTCPPacketInformation& rtcpPacketInformation) {
+ RTCPUtility::RTCPPacketTypes rtcpPacketType = rtcpParser.PacketType();
+ const RTCPUtility::RTCPPacket& rtcpPacket = rtcpParser.Packet();
+
+ RTC_DCHECK(rtcpPacketType == RTCPPacketTypes::kRr);
+
+ // rtcpPacket.RR.SenderSSRC
+ // The source of the packet sender, same as of SR? or is this a CE?
+
+ const uint32_t remoteSSRC = rtcpPacket.RR.SenderSSRC;
+
+ rtcpPacketInformation.remoteSSRC = remoteSSRC;
+
+ RTCPReceiveInformation* ptrReceiveInfo = CreateReceiveInformation(remoteSSRC);
+ if (!ptrReceiveInfo) {
+ rtcpParser.Iterate();
+ return;
+ }
+
+ TRACE_EVENT_INSTANT2(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"), "RR",
+ "remote_ssrc", remoteSSRC, "ssrc", main_ssrc_);
+
+ rtcpPacketInformation.rtcpPacketTypeFlags |= kRtcpRr;
+
+ // Update that this remote is alive.
+ ptrReceiveInfo->last_time_received_ms = _clock->TimeInMilliseconds();
+
+ rtcpPacketType = rtcpParser.Iterate();
+
+ while (rtcpPacketType == RTCPPacketTypes::kReportBlockItem) {
+ HandleReportBlock(rtcpPacket, rtcpPacketInformation, remoteSSRC);
+ rtcpPacketType = rtcpParser.Iterate();
+ }
+}
+
void RTCPReceiver::HandleReportBlock(
const RTCPUtility::RTCPPacket& rtcpPacket,
RTCPPacketInformation& rtcpPacketInformation,

Powered by Google App Engine
This is Rietveld 408576698