Index: webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.cc |
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.cc b/webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.cc |
index 15fb3255757cb362a4b958623052bb6a58eaef97..19bc862a78482b1cdd1f975f0c933eb303d941f3 100644 |
--- a/webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.cc |
+++ b/webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.cc |
@@ -229,6 +229,10 @@ void ModuleRtpRtcpImpl::SetRtxSendPayloadType(int payload_type, |
rtp_sender_.SetRtxPayloadType(payload_type, associated_payload_type); |
} |
+rtc::Optional<uint32_t> ModuleRtpRtcpImpl::FlexfecSsrc() const { |
+ return rtp_sender_.FlexfecSsrc(); |
+} |
+ |
int32_t ModuleRtpRtcpImpl::IncomingRtcpPacket( |
const uint8_t* rtcp_packet, |
const size_t length) { |
@@ -400,8 +404,13 @@ bool ModuleRtpRtcpImpl::TimeToSendPacket(uint32_t ssrc, |
int64_t capture_time_ms, |
bool retransmission, |
int probe_cluster_id) { |
- if (SendingMedia() && ssrc == rtp_sender_.SSRC()) { |
- return rtp_sender_.TimeToSendPacket(sequence_number, capture_time_ms, |
+ if (!SendingMedia()) { |
+ return true; |
+ } |
+ uint32_t media_ssrc = rtp_sender_.SSRC(); |
+ rtc::Optional<uint32_t> flexfec_ssrc = rtp_sender_.FlexfecSsrc(); |
+ if (ssrc == media_ssrc || (flexfec_ssrc && ssrc == flexfec_ssrc)) { |
+ return rtp_sender_.TimeToSendPacket(ssrc, sequence_number, capture_time_ms, |
retransmission, probe_cluster_id); |
} |
// No RTP sender is interested in sending this packet. |