| 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 fb1f9b2503768b1110cb49944f041462483998b4..abd822a4b9758edf9e559b64c22dc523e68c96af 100644
|
| --- a/webrtc/modules/rtp_rtcp/source/rtcp_receiver.cc
|
| +++ b/webrtc/modules/rtp_rtcp/source/rtcp_receiver.cc
|
| @@ -387,7 +387,6 @@ RTCPReceiver::IncomingRTCPPacket(RTCPPacketInformation& rtcpPacketInformation,
|
| return 0;
|
| }
|
|
|
| -// no need for critsect we have _criticalSectionRTCPReceiver
|
| void
|
| RTCPReceiver::HandleSenderReceiverReport(RTCPUtility::RTCPParserV2& rtcpParser,
|
| RTCPPacketInformation& rtcpPacketInformation)
|
| @@ -463,7 +462,6 @@ RTCPReceiver::HandleSenderReceiverReport(RTCPUtility::RTCPParserV2& rtcpParser,
|
| }
|
| }
|
|
|
| -// no need for critsect we have _criticalSectionRTCPReceiver
|
| void RTCPReceiver::HandleReportBlock(
|
| const RTCPUtility::RTCPPacket& rtcpPacket,
|
| RTCPPacketInformation& rtcpPacketInformation,
|
| @@ -775,7 +773,6 @@ int32_t RTCPReceiver::BoundingSet(bool &tmmbrOwner, TMMBRSet* boundingSetRec) {
|
| return receiveInfo->TmmbnBoundingSet.lengthOfSet();
|
| }
|
|
|
| -// no need for critsect we have _criticalSectionRTCPReceiver
|
| void RTCPReceiver::HandleSDES(RTCPUtility::RTCPParserV2& rtcpParser,
|
| RTCPPacketInformation& rtcpPacketInformation) {
|
| RTCPUtility::RTCPPacketTypes pktType = rtcpParser.Iterate();
|
| @@ -786,7 +783,6 @@ void RTCPReceiver::HandleSDES(RTCPUtility::RTCPParserV2& rtcpParser,
|
| rtcpPacketInformation.rtcpPacketTypeFlags |= kRtcpSdes;
|
| }
|
|
|
| -// no need for critsect we have _criticalSectionRTCPReceiver
|
| void RTCPReceiver::HandleSDESChunk(RTCPUtility::RTCPParserV2& rtcpParser) {
|
| const RTCPUtility::RTCPPacket& rtcpPacket = rtcpParser.Packet();
|
| RTCPCnameInformation* cnameInfo =
|
| @@ -804,7 +800,6 @@ void RTCPReceiver::HandleSDESChunk(RTCPUtility::RTCPParserV2& rtcpParser) {
|
| }
|
| }
|
|
|
| -// no need for critsect we have _criticalSectionRTCPReceiver
|
| void RTCPReceiver::HandleNACK(RTCPUtility::RTCPParserV2& rtcpParser,
|
| RTCPPacketInformation& rtcpPacketInformation) {
|
| const RTCPUtility::RTCPPacket& rtcpPacket = rtcpParser.Packet();
|
| @@ -828,7 +823,6 @@ void RTCPReceiver::HandleNACK(RTCPUtility::RTCPParserV2& rtcpParser,
|
| }
|
| }
|
|
|
| -// no need for critsect we have _criticalSectionRTCPReceiver
|
| void
|
| RTCPReceiver::HandleNACKItem(const RTCPUtility::RTCPPacket& rtcpPacket,
|
| RTCPPacketInformation& rtcpPacketInformation) {
|
| @@ -848,12 +842,10 @@ RTCPReceiver::HandleNACKItem(const RTCPUtility::RTCPPacket& rtcpPacket,
|
| rtcpPacketInformation.rtcpPacketTypeFlags |= kRtcpNack;
|
| }
|
|
|
| -// no need for critsect we have _criticalSectionRTCPReceiver
|
| void RTCPReceiver::HandleBYE(RTCPUtility::RTCPParserV2& rtcpParser) {
|
| const RTCPUtility::RTCPPacket& rtcpPacket = rtcpParser.Packet();
|
|
|
| // clear our lists
|
| - CriticalSectionScoped lock(_criticalSectionRTCPReceiver);
|
| ReportBlockMap::iterator it = _receivedReportBlockMap.begin();
|
| for (; it != _receivedReportBlockMap.end(); ++it) {
|
| ReportBlockInfoMap* info_map = &(it->second);
|
| @@ -964,15 +956,12 @@ void RTCPReceiver::HandleXrDlrrReportBlockItem(
|
| rtcpPacketInformation.rtcpPacketTypeFlags |= kRtcpXrDlrrReportBlock;
|
| }
|
|
|
| -// no need for critsect we have _criticalSectionRTCPReceiver
|
| void
|
| RTCPReceiver::HandleXRVOIPMetric(RTCPUtility::RTCPParserV2& rtcpParser,
|
| RTCPPacketInformation& rtcpPacketInformation)
|
| {
|
| const RTCPUtility::RTCPPacket& rtcpPacket = rtcpParser.Packet();
|
|
|
| - CriticalSectionScoped lock(_criticalSectionRTCPReceiver);
|
| -
|
| if(rtcpPacket.XRVOIPMetricItem.SSRC == main_ssrc_)
|
| {
|
| // Store VoIP metrics block if it's about me
|
| @@ -1008,7 +997,6 @@ RTCPReceiver::HandleXRVOIPMetric(RTCPUtility::RTCPParserV2& rtcpParser,
|
| rtcpParser.Iterate();
|
| }
|
|
|
| -// no need for critsect we have _criticalSectionRTCPReceiver
|
| void RTCPReceiver::HandlePLI(RTCPUtility::RTCPParserV2& rtcpParser,
|
| RTCPPacketInformation& rtcpPacketInformation) {
|
| const RTCPUtility::RTCPPacket& rtcpPacket = rtcpParser.Packet();
|
| @@ -1022,7 +1010,6 @@ void RTCPReceiver::HandlePLI(RTCPUtility::RTCPParserV2& rtcpParser,
|
| rtcpParser.Iterate();
|
| }
|
|
|
| -// no need for critsect we have _criticalSectionRTCPReceiver
|
| void RTCPReceiver::HandleTMMBR(RTCPUtility::RTCPParserV2& rtcpParser,
|
| RTCPPacketInformation& rtcpPacketInformation) {
|
| const RTCPUtility::RTCPPacket& rtcpPacket = rtcpParser.Packet();
|
| @@ -1059,7 +1046,6 @@ void RTCPReceiver::HandleTMMBR(RTCPUtility::RTCPParserV2& rtcpParser,
|
| }
|
| }
|
|
|
| -// no need for critsect we have _criticalSectionRTCPReceiver
|
| void RTCPReceiver::HandleTMMBRItem(RTCPReceiveInformation& receiveInfo,
|
| const RTCPUtility::RTCPPacket& rtcpPacket,
|
| RTCPPacketInformation& rtcpPacketInformation,
|
| @@ -1072,7 +1058,6 @@ void RTCPReceiver::HandleTMMBRItem(RTCPReceiveInformation& receiveInfo,
|
| }
|
| }
|
|
|
| -// no need for critsect we have _criticalSectionRTCPReceiver
|
| void RTCPReceiver::HandleTMMBN(RTCPUtility::RTCPParserV2& rtcpParser,
|
| RTCPPacketInformation& rtcpPacketInformation) {
|
| const RTCPUtility::RTCPPacket& rtcpPacket = rtcpParser.Packet();
|
| @@ -1104,14 +1089,12 @@ void RTCPReceiver::HandleTMMBN(RTCPUtility::RTCPParserV2& rtcpParser,
|
| }
|
| }
|
|
|
| -// no need for critsect we have _criticalSectionRTCPReceiver
|
| void RTCPReceiver::HandleSR_REQ(RTCPUtility::RTCPParserV2& rtcpParser,
|
| RTCPPacketInformation& rtcpPacketInformation) {
|
| rtcpPacketInformation.rtcpPacketTypeFlags |= kRtcpSrReq;
|
| rtcpParser.Iterate();
|
| }
|
|
|
| -// no need for critsect we have _criticalSectionRTCPReceiver
|
| void RTCPReceiver::HandleTMMBNItem(RTCPReceiveInformation& receiveInfo,
|
| const RTCPUtility::RTCPPacket& rtcpPacket) {
|
| receiveInfo.TmmbnBoundingSet.AddEntry(
|
| @@ -1120,7 +1103,6 @@ void RTCPReceiver::HandleTMMBNItem(RTCPReceiveInformation& receiveInfo,
|
| rtcpPacket.TMMBNItem.SSRC);
|
| }
|
|
|
| -// no need for critsect we have _criticalSectionRTCPReceiver
|
| void RTCPReceiver::HandleSLI(RTCPUtility::RTCPParserV2& rtcpParser,
|
| RTCPPacketInformation& rtcpPacketInformation) {
|
| const RTCPUtility::RTCPPacket& rtcpPacket = rtcpParser.Packet();
|
| @@ -1131,7 +1113,6 @@ void RTCPReceiver::HandleSLI(RTCPUtility::RTCPParserV2& rtcpParser,
|
| }
|
| }
|
|
|
| -// no need for critsect we have _criticalSectionRTCPReceiver
|
| void RTCPReceiver::HandleSLIItem(const RTCPUtility::RTCPPacket& rtcpPacket,
|
| RTCPPacketInformation& rtcpPacketInformation) {
|
| // in theory there could be multiple slices lost
|
| @@ -1167,7 +1148,6 @@ RTCPReceiver::HandleRPSI(RTCPUtility::RTCPParserV2& rtcpParser,
|
| }
|
| }
|
|
|
| -// no need for critsect we have _criticalSectionRTCPReceiver
|
| void RTCPReceiver::HandlePsfbApp(RTCPUtility::RTCPParserV2& rtcpParser,
|
| RTCPPacketInformation& rtcpPacketInformation) {
|
| RTCPUtility::RTCPPacketTypes pktType = rtcpParser.Iterate();
|
| @@ -1180,7 +1160,6 @@ void RTCPReceiver::HandlePsfbApp(RTCPUtility::RTCPParserV2& rtcpParser,
|
| }
|
| }
|
|
|
| -// no need for critsect we have _criticalSectionRTCPReceiver
|
| void RTCPReceiver::HandleIJ(RTCPUtility::RTCPParserV2& rtcpParser,
|
| RTCPPacketInformation& rtcpPacketInformation) {
|
| const RTCPUtility::RTCPPacket& rtcpPacket = rtcpParser.Packet();
|
| @@ -1208,7 +1187,6 @@ void RTCPReceiver::HandleREMBItem(
|
| rtcpPacket.REMBItem.BitRate;
|
| }
|
|
|
| -// no need for critsect we have _criticalSectionRTCPReceiver
|
| void RTCPReceiver::HandleFIR(RTCPUtility::RTCPParserV2& rtcpParser,
|
| RTCPPacketInformation& rtcpPacketInformation) {
|
| const RTCPUtility::RTCPPacket& rtcpPacket = rtcpParser.Packet();
|
| @@ -1222,7 +1200,6 @@ void RTCPReceiver::HandleFIR(RTCPUtility::RTCPParserV2& rtcpParser,
|
| }
|
| }
|
|
|
| -// no need for critsect we have _criticalSectionRTCPReceiver
|
| void RTCPReceiver::HandleFIRItem(RTCPReceiveInformation* receiveInfo,
|
| const RTCPUtility::RTCPPacket& rtcpPacket,
|
| RTCPPacketInformation& rtcpPacketInformation) {
|
| @@ -1348,11 +1325,13 @@ void RTCPReceiver::TriggerCallbacksFromRTCPPacket(
|
| // Might trigger a OnReceivedBandwidthEstimateUpdate.
|
| UpdateTMMBR();
|
| }
|
| - unsigned int local_ssrc;
|
| + uint32_t local_ssrc;
|
| + std::set<uint32_t> registered_ssrcs;
|
| {
|
| // We don't want to hold this critsect when triggering the callbacks below.
|
| CriticalSectionScoped lock(_criticalSectionRTCPReceiver);
|
| local_ssrc = main_ssrc_;
|
| + registered_ssrcs = registered_ssrcs_;
|
| }
|
| if (!receiver_only_ &&
|
| (rtcpPacketInformation.rtcpPacketTypeFlags & kRtcpSrReq)) {
|
| @@ -1414,9 +1393,8 @@ void RTCPReceiver::TriggerCallbacksFromRTCPPacket(
|
| (rtcpPacketInformation.rtcpPacketTypeFlags & kRtcpTransportFeedback)) {
|
| uint32_t media_source_ssrc =
|
| rtcpPacketInformation.transport_feedback_->GetMediaSourceSsrc();
|
| - if (media_source_ssrc == main_ssrc_ ||
|
| - registered_ssrcs_.find(media_source_ssrc) !=
|
| - registered_ssrcs_.end()) {
|
| + if (media_source_ssrc == local_ssrc ||
|
| + registered_ssrcs.find(media_source_ssrc) != registered_ssrcs.end()) {
|
| _cbTransportFeedbackObserver->OnTransportFeedback(
|
| *rtcpPacketInformation.transport_feedback_.get());
|
| }
|
|
|