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 75c7eec47553604b513927044dd15d0c20ec22a6..d57432cea469365fa6b989725ced3ec23e6a8782 100644 |
--- a/webrtc/modules/rtp_rtcp/source/rtcp_receiver.cc |
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_receiver.cc |
@@ -195,29 +195,27 @@ bool RTCPReceiver::NTP(uint32_t* ReceivedNTPsecs, |
uint32_t* ReceivedNTPfrac, |
uint32_t* RTCPArrivalTimeSecs, |
uint32_t* RTCPArrivalTimeFrac, |
- uint32_t* rtcp_timestamp) const |
-{ |
- rtc::CritScope lock(&_criticalSectionRTCPReceiver); |
- if(ReceivedNTPsecs) |
- { |
- *ReceivedNTPsecs = _remoteSenderInfo.NTPseconds; // NTP from incoming SendReport |
- } |
- if(ReceivedNTPfrac) |
- { |
- *ReceivedNTPfrac = _remoteSenderInfo.NTPfraction; |
- } |
- if(RTCPArrivalTimeFrac) |
- { |
- *RTCPArrivalTimeFrac = _lastReceivedSRNTPfrac; // local NTP time when we received a RTCP packet with a send block |
- } |
- if(RTCPArrivalTimeSecs) |
- { |
- *RTCPArrivalTimeSecs = _lastReceivedSRNTPsecs; |
- } |
- if (rtcp_timestamp) { |
- *rtcp_timestamp = _remoteSenderInfo.RTPtimeStamp; |
- } |
- return true; |
+ uint32_t* rtcp_timestamp) const { |
+ rtc::CritScope lock(&_criticalSectionRTCPReceiver); |
+ if (ReceivedNTPsecs) { |
+ *ReceivedNTPsecs = |
+ _remoteSenderInfo.NTPseconds; // NTP from incoming SendReport |
+ } |
+ if (ReceivedNTPfrac) { |
+ *ReceivedNTPfrac = _remoteSenderInfo.NTPfraction; |
+ } |
+ if (RTCPArrivalTimeFrac) { |
+ *RTCPArrivalTimeFrac = _lastReceivedSRNTPfrac; // local NTP time when we |
+ // received a RTCP packet |
+ // with a send block |
+ } |
+ if (RTCPArrivalTimeSecs) { |
+ *RTCPArrivalTimeSecs = _lastReceivedSRNTPsecs; |
+ } |
+ if (rtcp_timestamp) { |
+ *rtcp_timestamp = _remoteSenderInfo.RTPtimeStamp; |
+ } |
+ return true; |
} |
bool RTCPReceiver::LastReceivedXrReferenceTimeInfo( |
@@ -232,8 +230,8 @@ bool RTCPReceiver::LastReceivedXrReferenceTimeInfo( |
info->lastRR = _remoteXRReceiveTimeInfo.lastRR; |
// Get the delay since last received report (RFC 3611). |
- uint32_t receive_time = RTCPUtility::MidNtp(_lastReceivedXRNTPsecs, |
- _lastReceivedXRNTPfrac); |
+ uint32_t receive_time = |
+ RTCPUtility::MidNtp(_lastReceivedXRNTPsecs, _lastReceivedXRNTPfrac); |
uint32_t ntp_sec = 0; |
uint32_t ntp_frac = 0; |
@@ -271,189 +269,182 @@ int32_t RTCPReceiver::StatisticsReceived( |
return 0; |
} |
-int32_t |
-RTCPReceiver::IncomingRTCPPacket(RTCPPacketInformation& rtcpPacketInformation, |
- RTCPUtility::RTCPParserV2* rtcpParser) |
-{ |
- rtc::CritScope lock(&_criticalSectionRTCPReceiver); |
- |
- _lastReceived = _clock->TimeInMilliseconds(); |
+int32_t RTCPReceiver::IncomingRTCPPacket( |
+ RTCPPacketInformation& rtcpPacketInformation, |
+ RTCPUtility::RTCPParserV2* rtcpParser) { |
+ rtc::CritScope lock(&_criticalSectionRTCPReceiver); |
- if (packet_type_counter_.first_packet_time_ms == -1) { |
- packet_type_counter_.first_packet_time_ms = _lastReceived; |
+ _lastReceived = _clock->TimeInMilliseconds(); |
+ |
+ if (packet_type_counter_.first_packet_time_ms == -1) { |
+ packet_type_counter_.first_packet_time_ms = _lastReceived; |
+ } |
+ |
+ RTCPUtility::RTCPPacketTypes pktType = rtcpParser->Begin(); |
+ while (pktType != RTCPPacketTypes::kInvalid) { |
+ // Each "case" is responsible for iterate the parser to the |
+ // next top level packet. |
+ switch (pktType) { |
+ case RTCPPacketTypes::kSr: |
+ case RTCPPacketTypes::kRr: |
+ HandleSenderReceiverReport(*rtcpParser, rtcpPacketInformation); |
+ break; |
+ case RTCPPacketTypes::kSdes: |
+ HandleSDES(*rtcpParser, rtcpPacketInformation); |
+ break; |
+ case RTCPPacketTypes::kXrHeader: |
+ HandleXrHeader(*rtcpParser, rtcpPacketInformation); |
+ break; |
+ case RTCPPacketTypes::kXrReceiverReferenceTime: |
+ HandleXrReceiveReferenceTime(*rtcpParser, rtcpPacketInformation); |
+ break; |
+ case RTCPPacketTypes::kXrDlrrReportBlock: |
+ HandleXrDlrrReportBlock(*rtcpParser, rtcpPacketInformation); |
+ break; |
+ case RTCPPacketTypes::kXrVoipMetric: |
+ HandleXRVOIPMetric(*rtcpParser, rtcpPacketInformation); |
+ break; |
+ case RTCPPacketTypes::kBye: |
+ HandleBYE(*rtcpParser); |
+ break; |
+ case RTCPPacketTypes::kRtpfbNack: |
+ HandleNACK(*rtcpParser, rtcpPacketInformation); |
+ break; |
+ case RTCPPacketTypes::kRtpfbTmmbr: |
+ HandleTMMBR(*rtcpParser, rtcpPacketInformation); |
+ break; |
+ case RTCPPacketTypes::kRtpfbTmmbn: |
+ HandleTMMBN(*rtcpParser, rtcpPacketInformation); |
+ break; |
+ case RTCPPacketTypes::kRtpfbSrReq: |
+ HandleSR_REQ(*rtcpParser, rtcpPacketInformation); |
+ break; |
+ case RTCPPacketTypes::kPsfbPli: |
+ HandlePLI(*rtcpParser, rtcpPacketInformation); |
+ break; |
+ case RTCPPacketTypes::kPsfbSli: |
+ HandleSLI(*rtcpParser, rtcpPacketInformation); |
+ break; |
+ case RTCPPacketTypes::kPsfbRpsi: |
+ HandleRPSI(*rtcpParser, rtcpPacketInformation); |
+ break; |
+ case RTCPPacketTypes::kExtendedIj: |
+ HandleIJ(*rtcpParser, rtcpPacketInformation); |
+ break; |
+ case RTCPPacketTypes::kPsfbFir: |
+ HandleFIR(*rtcpParser, rtcpPacketInformation); |
+ break; |
+ case RTCPPacketTypes::kPsfbApp: |
+ HandlePsfbApp(*rtcpParser, rtcpPacketInformation); |
+ break; |
+ case RTCPPacketTypes::kApp: |
+ // generic application messages |
+ HandleAPP(*rtcpParser, rtcpPacketInformation); |
+ break; |
+ case RTCPPacketTypes::kAppItem: |
+ // generic application messages |
+ HandleAPPItem(*rtcpParser, rtcpPacketInformation); |
+ break; |
+ case RTCPPacketTypes::kTransportFeedback: |
+ HandleTransportFeedback(rtcpParser, &rtcpPacketInformation); |
+ break; |
+ default: |
+ rtcpParser->Iterate(); |
+ break; |
} |
+ pktType = rtcpParser->PacketType(); |
+ } |
- RTCPUtility::RTCPPacketTypes pktType = rtcpParser->Begin(); |
- while (pktType != RTCPPacketTypes::kInvalid) { |
- // Each "case" is responsible for iterate the parser to the |
- // next top level packet. |
- switch (pktType) |
- { |
- case RTCPPacketTypes::kSr: |
- case RTCPPacketTypes::kRr: |
- HandleSenderReceiverReport(*rtcpParser, rtcpPacketInformation); |
- break; |
- case RTCPPacketTypes::kSdes: |
- HandleSDES(*rtcpParser, rtcpPacketInformation); |
- break; |
- case RTCPPacketTypes::kXrHeader: |
- HandleXrHeader(*rtcpParser, rtcpPacketInformation); |
- break; |
- case RTCPPacketTypes::kXrReceiverReferenceTime: |
- HandleXrReceiveReferenceTime(*rtcpParser, rtcpPacketInformation); |
- break; |
- case RTCPPacketTypes::kXrDlrrReportBlock: |
- HandleXrDlrrReportBlock(*rtcpParser, rtcpPacketInformation); |
- break; |
- case RTCPPacketTypes::kXrVoipMetric: |
- HandleXRVOIPMetric(*rtcpParser, rtcpPacketInformation); |
- break; |
- case RTCPPacketTypes::kBye: |
- HandleBYE(*rtcpParser); |
- break; |
- case RTCPPacketTypes::kRtpfbNack: |
- HandleNACK(*rtcpParser, rtcpPacketInformation); |
- break; |
- case RTCPPacketTypes::kRtpfbTmmbr: |
- HandleTMMBR(*rtcpParser, rtcpPacketInformation); |
- break; |
- case RTCPPacketTypes::kRtpfbTmmbn: |
- HandleTMMBN(*rtcpParser, rtcpPacketInformation); |
- break; |
- case RTCPPacketTypes::kRtpfbSrReq: |
- HandleSR_REQ(*rtcpParser, rtcpPacketInformation); |
- break; |
- case RTCPPacketTypes::kPsfbPli: |
- HandlePLI(*rtcpParser, rtcpPacketInformation); |
- break; |
- case RTCPPacketTypes::kPsfbSli: |
- HandleSLI(*rtcpParser, rtcpPacketInformation); |
- break; |
- case RTCPPacketTypes::kPsfbRpsi: |
- HandleRPSI(*rtcpParser, rtcpPacketInformation); |
- break; |
- case RTCPPacketTypes::kExtendedIj: |
- HandleIJ(*rtcpParser, rtcpPacketInformation); |
- break; |
- case RTCPPacketTypes::kPsfbFir: |
- HandleFIR(*rtcpParser, rtcpPacketInformation); |
- break; |
- case RTCPPacketTypes::kPsfbApp: |
- HandlePsfbApp(*rtcpParser, rtcpPacketInformation); |
- break; |
- case RTCPPacketTypes::kApp: |
- // generic application messages |
- HandleAPP(*rtcpParser, rtcpPacketInformation); |
- break; |
- case RTCPPacketTypes::kAppItem: |
- // generic application messages |
- HandleAPPItem(*rtcpParser, rtcpPacketInformation); |
- break; |
- case RTCPPacketTypes::kTransportFeedback: |
- HandleTransportFeedback(rtcpParser, &rtcpPacketInformation); |
- break; |
- default: |
- rtcpParser->Iterate(); |
- break; |
- } |
- pktType = rtcpParser->PacketType(); |
- } |
+ if (packet_type_counter_observer_ != NULL) { |
+ packet_type_counter_observer_->RtcpPacketTypesCounterUpdated( |
+ main_ssrc_, packet_type_counter_); |
+ } |
- if (packet_type_counter_observer_ != NULL) { |
- packet_type_counter_observer_->RtcpPacketTypesCounterUpdated( |
- main_ssrc_, packet_type_counter_); |
- } |
+ num_skipped_packets_ += rtcpParser->NumSkippedBlocks(); |
- num_skipped_packets_ += rtcpParser->NumSkippedBlocks(); |
- |
- int64_t now = _clock->TimeInMilliseconds(); |
- if (now - last_skipped_packets_warning_ >= kMaxWarningLogIntervalMs && |
- num_skipped_packets_ > 0) { |
- last_skipped_packets_warning_ = now; |
- LOG(LS_WARNING) |
- << num_skipped_packets_ |
- << " RTCP blocks were skipped due to being malformed or of " |
- "unrecognized/unsupported type, during the past " |
- << (kMaxWarningLogIntervalMs / 1000) << " second period."; |
- } |
+ int64_t now = _clock->TimeInMilliseconds(); |
+ if (now - last_skipped_packets_warning_ >= kMaxWarningLogIntervalMs && |
+ num_skipped_packets_ > 0) { |
+ last_skipped_packets_warning_ = now; |
+ LOG(LS_WARNING) << num_skipped_packets_ |
+ << " RTCP blocks were skipped due to being malformed or of " |
+ "unrecognized/unsupported type, during the past " |
+ << (kMaxWarningLogIntervalMs / 1000) << " second period."; |
+ } |
- return 0; |
+ return 0; |
} |
-void |
-RTCPReceiver::HandleSenderReceiverReport(RTCPUtility::RTCPParserV2& rtcpParser, |
- RTCPPacketInformation& rtcpPacketInformation) |
-{ |
- RTCPUtility::RTCPPacketTypes rtcpPacketType = rtcpParser.PacketType(); |
- const RTCPUtility::RTCPPacket& rtcpPacket = rtcpParser.Packet(); |
- |
- assert((rtcpPacketType == RTCPPacketTypes::kRr) || |
- (rtcpPacketType == RTCPPacketTypes::kSr)); |
+void RTCPReceiver::HandleSenderReceiverReport( |
+ RTCPUtility::RTCPParserV2& rtcpParser, |
+ RTCPPacketInformation& rtcpPacketInformation) { |
+ RTCPUtility::RTCPPacketTypes rtcpPacketType = rtcpParser.PacketType(); |
+ const RTCPUtility::RTCPPacket& rtcpPacket = rtcpParser.Packet(); |
- // SR.SenderSSRC |
- // The synchronization source identifier for the originator of this SR packet |
+ assert((rtcpPacketType == RTCPPacketTypes::kRr) || |
+ (rtcpPacketType == RTCPPacketTypes::kSr)); |
- // rtcpPacket.RR.SenderSSRC |
- // The source of the packet sender, same as of SR? or is this a CE? |
+ // SR.SenderSSRC |
+ // The synchronization source identifier for the originator of this SR packet |
- const uint32_t remoteSSRC = (rtcpPacketType == RTCPPacketTypes::kRr) |
- ? rtcpPacket.RR.SenderSSRC |
- : rtcpPacket.SR.SenderSSRC; |
+ // rtcpPacket.RR.SenderSSRC |
+ // The source of the packet sender, same as of SR? or is this a CE? |
- rtcpPacketInformation.remoteSSRC = remoteSSRC; |
+ const uint32_t remoteSSRC = (rtcpPacketType == RTCPPacketTypes::kRr) |
+ ? rtcpPacket.RR.SenderSSRC |
+ : rtcpPacket.SR.SenderSSRC; |
- RTCPReceiveInformation* ptrReceiveInfo = CreateReceiveInformation(remoteSSRC); |
- if (!ptrReceiveInfo) |
- { |
- rtcpParser.Iterate(); |
- return; |
- } |
+ rtcpPacketInformation.remoteSSRC = remoteSSRC; |
- if (rtcpPacketType == RTCPPacketTypes::kSr) { |
- TRACE_EVENT_INSTANT2(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"), "SR", |
- "remote_ssrc", remoteSSRC, "ssrc", main_ssrc_); |
+ RTCPReceiveInformation* ptrReceiveInfo = CreateReceiveInformation(remoteSSRC); |
+ if (!ptrReceiveInfo) { |
+ rtcpParser.Iterate(); |
+ return; |
+ } |
- 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 (rtcpPacketType == RTCPPacketTypes::kSr) { |
+ TRACE_EVENT_INSTANT2(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"), "SR", |
+ "remote_ssrc", remoteSSRC, "ssrc", main_ssrc_); |
- rtcpPacketInformation.ntp_secs = rtcpPacket.SR.NTPMostSignificant; |
- rtcpPacketInformation.ntp_frac = rtcpPacket.SR.NTPLeastSignificant; |
- rtcpPacketInformation.rtp_timestamp = rtcpPacket.SR.RTPTimestamp; |
+ 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; |
- // We will only store the send report from one source, but |
- // we will store all the receive block |
+ rtcpPacketInformation.ntp_secs = rtcpPacket.SR.NTPMostSignificant; |
+ rtcpPacketInformation.ntp_frac = rtcpPacket.SR.NTPLeastSignificant; |
+ rtcpPacketInformation.rtp_timestamp = rtcpPacket.SR.RTPTimestamp; |
- // 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; |
+ // We will only store the send report from one source, but |
+ // we will store all the receive block |
- _clock->CurrentNtp(_lastReceivedSRNTPsecs, _lastReceivedSRNTPfrac); |
- } |
- else |
- { |
- rtcpPacketInformation.rtcpPacketTypeFlags |= kRtcpRr; |
- } |
- } else |
- { |
- TRACE_EVENT_INSTANT2(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"), "RR", |
- "remote_ssrc", remoteSSRC, "ssrc", main_ssrc_); |
+ // 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; |
- rtcpPacketInformation.rtcpPacketTypeFlags |= kRtcpRr; |
+ _clock->CurrentNtp(_lastReceivedSRNTPsecs, _lastReceivedSRNTPfrac); |
+ } else { |
+ rtcpPacketInformation.rtcpPacketTypeFlags |= kRtcpRr; |
} |
- // Update that this remote is alive. |
- ptrReceiveInfo->last_time_received_ms = _clock->TimeInMilliseconds(); |
+ } else { |
+ TRACE_EVENT_INSTANT2(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"), "RR", |
+ "remote_ssrc", remoteSSRC, "ssrc", main_ssrc_); |
- rtcpPacketType = rtcpParser.Iterate(); |
+ rtcpPacketInformation.rtcpPacketTypeFlags |= kRtcpRr; |
+ } |
+ // Update that this remote is alive. |
+ ptrReceiveInfo->last_time_received_ms = _clock->TimeInMilliseconds(); |
- while (rtcpPacketType == RTCPPacketTypes::kReportBlockItem) { |
- HandleReportBlock(rtcpPacket, rtcpPacketInformation, remoteSSRC); |
- rtcpPacketType = rtcpParser.Iterate(); |
- } |
+ rtcpPacketType = rtcpParser.Iterate(); |
+ |
+ while (rtcpPacketType == RTCPPacketTypes::kReportBlockItem) { |
+ HandleReportBlock(rtcpPacket, rtcpPacketInformation, remoteSSRC); |
+ rtcpPacketType = rtcpParser.Iterate(); |
+ } |
} |
void RTCPReceiver::HandleReportBlock( |
@@ -477,12 +468,11 @@ void RTCPReceiver::HandleReportBlock( |
return; |
} |
- RTCPReportBlockInformation* reportBlock = |
- CreateOrGetReportBlockInformation(remoteSSRC, |
- rtcpPacket.ReportBlockItem.SSRC); |
+ RTCPReportBlockInformation* reportBlock = CreateOrGetReportBlockInformation( |
+ remoteSSRC, rtcpPacket.ReportBlockItem.SSRC); |
if (reportBlock == NULL) { |
- LOG(LS_WARNING) << "Failed to CreateReportBlockInformation(" |
- << remoteSSRC << ")"; |
+ LOG(LS_WARNING) << "Failed to CreateReportBlockInformation(" << remoteSSRC |
+ << ")"; |
return; |
} |
@@ -584,8 +574,8 @@ RTCPReportBlockInformation* RTCPReceiver::GetReportBlockInformation( |
return it_info->second; |
} |
-RTCPCnameInformation* |
-RTCPReceiver::CreateCnameInformation(uint32_t remoteSSRC) { |
+RTCPCnameInformation* RTCPReceiver::CreateCnameInformation( |
+ uint32_t remoteSSRC) { |
rtc::CritScope lock(&_criticalSectionRTCPReceiver); |
std::map<uint32_t, RTCPCnameInformation*>::iterator it = |
@@ -600,8 +590,8 @@ RTCPReceiver::CreateCnameInformation(uint32_t remoteSSRC) { |
return cnameInfo; |
} |
-RTCPCnameInformation* |
-RTCPReceiver::GetCnameInformation(uint32_t remoteSSRC) const { |
+RTCPCnameInformation* RTCPReceiver::GetCnameInformation( |
+ uint32_t remoteSSRC) const { |
rtc::CritScope lock(&_criticalSectionRTCPReceiver); |
std::map<uint32_t, RTCPCnameInformation*>::const_iterator it = |
@@ -613,8 +603,8 @@ RTCPReceiver::GetCnameInformation(uint32_t remoteSSRC) const { |
return it->second; |
} |
-RTCPReceiveInformation* |
-RTCPReceiver::CreateReceiveInformation(uint32_t remoteSSRC) { |
+RTCPReceiveInformation* RTCPReceiver::CreateReceiveInformation( |
+ uint32_t remoteSSRC) { |
rtc::CritScope lock(&_criticalSectionRTCPReceiver); |
std::map<uint32_t, RTCPReceiveInformation*>::iterator it = |
@@ -628,8 +618,8 @@ RTCPReceiver::CreateReceiveInformation(uint32_t remoteSSRC) { |
return receiveInfo; |
} |
-RTCPReceiveInformation* |
-RTCPReceiver::GetReceiveInformation(uint32_t remoteSSRC) { |
+RTCPReceiveInformation* RTCPReceiver::GetReceiveInformation( |
+ uint32_t remoteSSRC) { |
rtc::CritScope lock(&_criticalSectionRTCPReceiver); |
std::map<uint32_t, RTCPReceiveInformation*>::iterator it = |
@@ -660,8 +650,8 @@ bool RTCPReceiver::RtcpRrSequenceNumberTimeout(int64_t rtcp_interval_ms) { |
return false; |
int64_t time_out_ms = kRrTimeoutIntervals * rtcp_interval_ms; |
- if (_clock->TimeInMilliseconds() > _lastIncreasedSequenceNumberMs + |
- time_out_ms) { |
+ if (_clock->TimeInMilliseconds() > |
+ _lastIncreasedSequenceNumberMs + time_out_ms) { |
// Reset the timer to only trigger one log. |
_lastIncreasedSequenceNumberMs = 0; |
return true; |
@@ -702,7 +692,7 @@ bool RTCPReceiver::UpdateRTCPReceiveInformationTimers() { |
} else if (receiveInfo->ready_for_delete) { |
// store our current receiveInfoItem |
std::map<uint32_t, RTCPReceiveInformation*>::iterator |
- receiveInfoItemToBeErased = receiveInfoIt; |
+ receiveInfoItemToBeErased = receiveInfoIt; |
receiveInfoIt++; |
delete receiveInfoItemToBeErased->second; |
_receivedInfoMap.erase(receiveInfoItemToBeErased); |
@@ -779,20 +769,20 @@ void RTCPReceiver::HandleNACK(RTCPUtility::RTCPParserV2& rtcpParser, |
} |
} |
-void |
-RTCPReceiver::HandleNACKItem(const RTCPUtility::RTCPPacket& rtcpPacket, |
- RTCPPacketInformation& rtcpPacketInformation) { |
+void RTCPReceiver::HandleNACKItem( |
+ const RTCPUtility::RTCPPacket& rtcpPacket, |
+ RTCPPacketInformation& rtcpPacketInformation) { |
rtcpPacketInformation.AddNACKPacket(rtcpPacket.NACKItem.PacketID); |
nack_stats_.ReportRequest(rtcpPacket.NACKItem.PacketID); |
uint16_t bitMask = rtcpPacket.NACKItem.BitMask; |
if (bitMask) { |
- for (int i=1; i <= 16; ++i) { |
+ for (int i = 1; i <= 16; ++i) { |
if (bitMask & 0x01) { |
rtcpPacketInformation.AddNACKPacket(rtcpPacket.NACKItem.PacketID + i); |
nack_stats_.ReportRequest(rtcpPacket.NACKItem.PacketID + i); |
} |
- bitMask = bitMask >>1; |
+ bitMask = bitMask >> 1; |
} |
} |
rtcpPacketInformation.rtcpPacketTypeFlags |= kRtcpNack; |
@@ -805,8 +795,8 @@ void RTCPReceiver::HandleBYE(RTCPUtility::RTCPParserV2& rtcpParser) { |
ReportBlockMap::iterator it = _receivedReportBlockMap.begin(); |
for (; it != _receivedReportBlockMap.end(); ++it) { |
ReportBlockInfoMap* info_map = &(it->second); |
- ReportBlockInfoMap::iterator it_info = info_map->find( |
- rtcpPacket.BYE.SenderSSRC); |
+ ReportBlockInfoMap::iterator it_info = |
+ info_map->find(rtcpPacket.BYE.SenderSSRC); |
if (it_info != info_map->end()) { |
delete it_info->second; |
info_map->erase(it_info); |
@@ -906,45 +896,47 @@ void RTCPReceiver::HandleXrDlrrReportBlockItem( |
rtcpPacketInformation.rtcpPacketTypeFlags |= kRtcpXrDlrrReportBlock; |
} |
-void |
-RTCPReceiver::HandleXRVOIPMetric(RTCPUtility::RTCPParserV2& rtcpParser, |
- RTCPPacketInformation& rtcpPacketInformation) |
-{ |
- const RTCPUtility::RTCPPacket& rtcpPacket = rtcpParser.Packet(); |
+void RTCPReceiver::HandleXRVOIPMetric( |
+ RTCPUtility::RTCPParserV2& rtcpParser, |
+ RTCPPacketInformation& rtcpPacketInformation) { |
+ const RTCPUtility::RTCPPacket& rtcpPacket = rtcpParser.Packet(); |
- if(rtcpPacket.XRVOIPMetricItem.SSRC == main_ssrc_) |
- { |
- // Store VoIP metrics block if it's about me |
- // from OriginatorSSRC do we filter it? |
- // rtcpPacket.XR.OriginatorSSRC; |
- |
- RTCPVoIPMetric receivedVoIPMetrics; |
- receivedVoIPMetrics.burstDensity = rtcpPacket.XRVOIPMetricItem.burstDensity; |
- receivedVoIPMetrics.burstDuration = rtcpPacket.XRVOIPMetricItem.burstDuration; |
- receivedVoIPMetrics.discardRate = rtcpPacket.XRVOIPMetricItem.discardRate; |
- receivedVoIPMetrics.endSystemDelay = rtcpPacket.XRVOIPMetricItem.endSystemDelay; |
- receivedVoIPMetrics.extRfactor = rtcpPacket.XRVOIPMetricItem.extRfactor; |
- receivedVoIPMetrics.gapDensity = rtcpPacket.XRVOIPMetricItem.gapDensity; |
- receivedVoIPMetrics.gapDuration = rtcpPacket.XRVOIPMetricItem.gapDuration; |
- receivedVoIPMetrics.Gmin = rtcpPacket.XRVOIPMetricItem.Gmin; |
- receivedVoIPMetrics.JBabsMax = rtcpPacket.XRVOIPMetricItem.JBabsMax; |
- receivedVoIPMetrics.JBmax = rtcpPacket.XRVOIPMetricItem.JBmax; |
- receivedVoIPMetrics.JBnominal = rtcpPacket.XRVOIPMetricItem.JBnominal; |
- receivedVoIPMetrics.lossRate = rtcpPacket.XRVOIPMetricItem.lossRate; |
- receivedVoIPMetrics.MOSCQ = rtcpPacket.XRVOIPMetricItem.MOSCQ; |
- receivedVoIPMetrics.MOSLQ = rtcpPacket.XRVOIPMetricItem.MOSLQ; |
- receivedVoIPMetrics.noiseLevel = rtcpPacket.XRVOIPMetricItem.noiseLevel; |
- receivedVoIPMetrics.RERL = rtcpPacket.XRVOIPMetricItem.RERL; |
- receivedVoIPMetrics.Rfactor = rtcpPacket.XRVOIPMetricItem.Rfactor; |
- receivedVoIPMetrics.roundTripDelay = rtcpPacket.XRVOIPMetricItem.roundTripDelay; |
- receivedVoIPMetrics.RXconfig = rtcpPacket.XRVOIPMetricItem.RXconfig; |
- receivedVoIPMetrics.signalLevel = rtcpPacket.XRVOIPMetricItem.signalLevel; |
- |
- rtcpPacketInformation.AddVoIPMetric(&receivedVoIPMetrics); |
- |
- rtcpPacketInformation.rtcpPacketTypeFlags |= kRtcpXrVoipMetric; // received signal |
- } |
- rtcpParser.Iterate(); |
+ if (rtcpPacket.XRVOIPMetricItem.SSRC == main_ssrc_) { |
+ // Store VoIP metrics block if it's about me |
+ // from OriginatorSSRC do we filter it? |
+ // rtcpPacket.XR.OriginatorSSRC; |
+ |
+ RTCPVoIPMetric receivedVoIPMetrics; |
+ receivedVoIPMetrics.burstDensity = rtcpPacket.XRVOIPMetricItem.burstDensity; |
+ receivedVoIPMetrics.burstDuration = |
+ rtcpPacket.XRVOIPMetricItem.burstDuration; |
+ receivedVoIPMetrics.discardRate = rtcpPacket.XRVOIPMetricItem.discardRate; |
+ receivedVoIPMetrics.endSystemDelay = |
+ rtcpPacket.XRVOIPMetricItem.endSystemDelay; |
+ receivedVoIPMetrics.extRfactor = rtcpPacket.XRVOIPMetricItem.extRfactor; |
+ receivedVoIPMetrics.gapDensity = rtcpPacket.XRVOIPMetricItem.gapDensity; |
+ receivedVoIPMetrics.gapDuration = rtcpPacket.XRVOIPMetricItem.gapDuration; |
+ receivedVoIPMetrics.Gmin = rtcpPacket.XRVOIPMetricItem.Gmin; |
+ receivedVoIPMetrics.JBabsMax = rtcpPacket.XRVOIPMetricItem.JBabsMax; |
+ receivedVoIPMetrics.JBmax = rtcpPacket.XRVOIPMetricItem.JBmax; |
+ receivedVoIPMetrics.JBnominal = rtcpPacket.XRVOIPMetricItem.JBnominal; |
+ receivedVoIPMetrics.lossRate = rtcpPacket.XRVOIPMetricItem.lossRate; |
+ receivedVoIPMetrics.MOSCQ = rtcpPacket.XRVOIPMetricItem.MOSCQ; |
+ receivedVoIPMetrics.MOSLQ = rtcpPacket.XRVOIPMetricItem.MOSLQ; |
+ receivedVoIPMetrics.noiseLevel = rtcpPacket.XRVOIPMetricItem.noiseLevel; |
+ receivedVoIPMetrics.RERL = rtcpPacket.XRVOIPMetricItem.RERL; |
+ receivedVoIPMetrics.Rfactor = rtcpPacket.XRVOIPMetricItem.Rfactor; |
+ receivedVoIPMetrics.roundTripDelay = |
+ rtcpPacket.XRVOIPMetricItem.roundTripDelay; |
+ receivedVoIPMetrics.RXconfig = rtcpPacket.XRVOIPMetricItem.RXconfig; |
+ receivedVoIPMetrics.signalLevel = rtcpPacket.XRVOIPMetricItem.signalLevel; |
+ |
+ rtcpPacketInformation.AddVoIPMetric(&receivedVoIPMetrics); |
+ |
+ rtcpPacketInformation.rtcpPacketTypeFlags |= |
+ kRtcpXrVoipMetric; // received signal |
+ } |
+ rtcpParser.Iterate(); |
} |
void RTCPReceiver::HandlePLI(RTCPUtility::RTCPParserV2& rtcpParser, |
@@ -990,7 +982,8 @@ void RTCPReceiver::HandleTMMBR(RTCPUtility::RTCPParserV2& rtcpParser, |
RTCPUtility::RTCPPacketTypes pktType = rtcpParser.Iterate(); |
while (pktType == RTCPPacketTypes::kRtpfbTmmbrItem) { |
- HandleTMMBRItem(*ptrReceiveInfo, rtcpPacket, rtcpPacketInformation, senderSSRC); |
+ HandleTMMBRItem(*ptrReceiveInfo, rtcpPacket, rtcpPacketInformation, |
+ senderSSRC); |
pktType = rtcpParser.Iterate(); |
} |
} |
@@ -1014,8 +1007,8 @@ void RTCPReceiver::HandleTMMBRItem(RTCPReceiveInformation& receiveInfo, |
void RTCPReceiver::HandleTMMBN(RTCPUtility::RTCPParserV2& rtcpParser, |
RTCPPacketInformation& rtcpPacketInformation) { |
const RTCPUtility::RTCPPacket& rtcpPacket = rtcpParser.Packet(); |
- RTCPReceiveInformation* ptrReceiveInfo = GetReceiveInformation( |
- rtcpPacket.TMMBN.SenderSSRC); |
+ RTCPReceiveInformation* ptrReceiveInfo = |
+ GetReceiveInformation(rtcpPacket.TMMBN.SenderSSRC); |
if (ptrReceiveInfo == NULL) { |
// This remote SSRC must be saved before. |
rtcpParser.Iterate(); |
@@ -1067,37 +1060,37 @@ void RTCPReceiver::HandleSLI(RTCPUtility::RTCPParserV2& rtcpParser, |
void RTCPReceiver::HandleSLIItem(const RTCPUtility::RTCPPacket& rtcpPacket, |
RTCPPacketInformation& rtcpPacketInformation) { |
// in theory there could be multiple slices lost |
- rtcpPacketInformation.rtcpPacketTypeFlags |= kRtcpSli; // received signal that we need to refresh a slice |
+ rtcpPacketInformation.rtcpPacketTypeFlags |= |
+ kRtcpSli; // received signal that we need to refresh a slice |
rtcpPacketInformation.sliPictureId = rtcpPacket.SLIItem.PictureId; |
} |
-void |
-RTCPReceiver::HandleRPSI(RTCPUtility::RTCPParserV2& rtcpParser, |
- RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) |
-{ |
- const RTCPUtility::RTCPPacket& rtcpPacket = rtcpParser.Packet(); |
- RTCPUtility::RTCPPacketTypes pktType = rtcpParser.Iterate(); |
- if (pktType == RTCPPacketTypes::kPsfbRpsiItem) { |
- if(rtcpPacket.RPSI.NumberOfValidBits%8 != 0) |
- { |
- // to us unknown |
- // continue |
- rtcpParser.Iterate(); |
- return; |
- } |
- // Received signal that we have a confirmed reference picture. |
- rtcpPacketInformation.rtcpPacketTypeFlags |= kRtcpRpsi; |
- rtcpPacketInformation.rpsiPictureId = 0; |
- |
- // convert NativeBitString to rpsiPictureId |
- uint8_t numberOfBytes = rtcpPacket.RPSI.NumberOfValidBits /8; |
- for(uint8_t n = 0; n < (numberOfBytes-1); n++) |
- { |
- rtcpPacketInformation.rpsiPictureId += (rtcpPacket.RPSI.NativeBitString[n] & 0x7f); |
- rtcpPacketInformation.rpsiPictureId <<= 7; // prepare next |
- } |
- rtcpPacketInformation.rpsiPictureId += (rtcpPacket.RPSI.NativeBitString[numberOfBytes-1] & 0x7f); |
+void RTCPReceiver::HandleRPSI( |
+ RTCPUtility::RTCPParserV2& rtcpParser, |
+ RTCPHelp::RTCPPacketInformation& rtcpPacketInformation) { |
+ const RTCPUtility::RTCPPacket& rtcpPacket = rtcpParser.Packet(); |
+ RTCPUtility::RTCPPacketTypes pktType = rtcpParser.Iterate(); |
+ if (pktType == RTCPPacketTypes::kPsfbRpsiItem) { |
+ if (rtcpPacket.RPSI.NumberOfValidBits % 8 != 0) { |
+ // to us unknown |
+ // continue |
+ rtcpParser.Iterate(); |
+ return; |
} |
+ // Received signal that we have a confirmed reference picture. |
+ rtcpPacketInformation.rtcpPacketTypeFlags |= kRtcpRpsi; |
+ rtcpPacketInformation.rpsiPictureId = 0; |
+ |
+ // convert NativeBitString to rpsiPictureId |
+ uint8_t numberOfBytes = rtcpPacket.RPSI.NumberOfValidBits / 8; |
+ for (uint8_t n = 0; n < (numberOfBytes - 1); n++) { |
+ rtcpPacketInformation.rpsiPictureId += |
+ (rtcpPacket.RPSI.NativeBitString[n] & 0x7f); |
+ rtcpPacketInformation.rpsiPictureId <<= 7; // prepare next |
+ } |
+ rtcpPacketInformation.rpsiPictureId += |
+ (rtcpPacket.RPSI.NativeBitString[numberOfBytes - 1] & 0x7f); |
+ } |
} |
void RTCPReceiver::HandlePsfbApp(RTCPUtility::RTCPParserV2& rtcpParser, |
@@ -1127,7 +1120,7 @@ void RTCPReceiver::HandleIJItem(const RTCPUtility::RTCPPacket& rtcpPacket, |
RTCPPacketInformation& rtcpPacketInformation) { |
rtcpPacketInformation.rtcpPacketTypeFlags |= kRtcpTransmissionTimeOffset; |
rtcpPacketInformation.interArrivalJitter = |
- rtcpPacket.ExtendedJitterReportItem.Jitter; |
+ rtcpPacket.ExtendedJitterReportItem.Jitter; |
} |
void RTCPReceiver::HandleREMBItem( |
@@ -1199,7 +1192,8 @@ void RTCPReceiver::HandleAPPItem(RTCPUtility::RTCPParserV2& rtcpParser, |
RTCPPacketInformation& rtcpPacketInformation) { |
const RTCPUtility::RTCPPacket& rtcpPacket = rtcpParser.Packet(); |
- rtcpPacketInformation.AddApplicationData(rtcpPacket.APP.Data, rtcpPacket.APP.Size); |
+ rtcpPacketInformation.AddApplicationData(rtcpPacket.APP.Data, |
+ rtcpPacket.APP.Size); |
rtcpParser.Iterate(); |
} |
@@ -1276,7 +1270,7 @@ void RTCPReceiver::TriggerCallbacksFromRTCPPacket( |
(rtcpPacketInformation.rtcpPacketTypeFlags & kRtcpNack)) { |
if (rtcpPacketInformation.nackSequenceNumbers.size() > 0) { |
LOG(LS_VERBOSE) << "Incoming NACK length: " |
- << rtcpPacketInformation.nackSequenceNumbers.size(); |
+ << rtcpPacketInformation.nackSequenceNumbers.size(); |
_rtpRtcp.OnReceivedNACK(rtcpPacketInformation.nackSequenceNumbers); |
} |
} |
@@ -1319,8 +1313,7 @@ void RTCPReceiver::TriggerCallbacksFromRTCPPacket( |
(rtcpPacketInformation.rtcpPacketTypeFlags & kRtcpRr)) { |
int64_t now = _clock->TimeInMilliseconds(); |
_cbRtcpBandwidthObserver->OnReceivedRtcpReceiverReport( |
- rtcpPacketInformation.report_blocks, |
- rtcpPacketInformation.rtt, |
+ rtcpPacketInformation.report_blocks, rtcpPacketInformation.rtt, |
now); |
} |
} |
@@ -1345,9 +1338,8 @@ void RTCPReceiver::TriggerCallbacksFromRTCPPacket( |
rtc::CritScope cs(&_criticalSectionFeedbacks); |
if (stats_callback_) { |
for (ReportBlockList::const_iterator it = |
- rtcpPacketInformation.report_blocks.begin(); |
- it != rtcpPacketInformation.report_blocks.end(); |
- ++it) { |
+ rtcpPacketInformation.report_blocks.begin(); |
+ it != rtcpPacketInformation.report_blocks.end(); ++it) { |
RtcpStatistics stats; |
stats.cumulative_lost = it->cumulativeLost; |
stats.extended_max_sequence_number = it->extendedHighSeqNum; |