Browse Source

RtcpSr and RtcpRr do not have the same header struct. Therefore they cannot be used in a single cast. Split these.

Tom de Brouwer 2 years ago
parent
commit
fb76fce9d3
1 changed files with 6 additions and 1 deletions
  1. 6 1
      src/impl/peerconnection.cpp

+ 6 - 1
src/impl/peerconnection.cpp

@@ -490,11 +490,16 @@ void PeerConnection::forwardMedia(message_ptr message) {
 				ssrcs.insert(rtcpfb->packetSenderSSRC());
 				ssrcs.insert(rtcpfb->packetSenderSSRC());
 				ssrcs.insert(rtcpfb->mediaSourceSSRC());
 				ssrcs.insert(rtcpfb->mediaSourceSSRC());
 
 
-			} else if (header->payloadType() == 200 || header->payloadType() == 201) {
+			} else if (header->payloadType() == 200) {
 				auto rtcpsr = reinterpret_cast<RtcpSr *>(header);
 				auto rtcpsr = reinterpret_cast<RtcpSr *>(header);
 				ssrcs.insert(rtcpsr->senderSSRC());
 				ssrcs.insert(rtcpsr->senderSSRC());
 				for (int i = 0; i < rtcpsr->header.reportCount(); ++i)
 				for (int i = 0; i < rtcpsr->header.reportCount(); ++i)
 					ssrcs.insert(rtcpsr->getReportBlock(i)->getSSRC());
 					ssrcs.insert(rtcpsr->getReportBlock(i)->getSSRC());
+			} else if (header->payloadType() == 201) {
+				auto rtcprr = reinterpret_cast<RtcpRr *>(header);
+				ssrcs.insert(rtcprr->senderSSRC());
+				for (int i = 0; i < rtcprr->header.reportCount(); ++i)
+					ssrcs.insert(rtcprr->getReportBlock(i)->getSSRC());
 			} else if (header->payloadType() == 202) {
 			} else if (header->payloadType() == 202) {
 				auto sdes = reinterpret_cast<RtcpSdes *>(header);
 				auto sdes = reinterpret_cast<RtcpSdes *>(header);
 				if (!sdes->isValid()) {
 				if (!sdes->isValid()) {