Index: webrtc/pc/rtptransport.cc |
diff --git a/webrtc/pc/rtptransport.cc b/webrtc/pc/rtptransport.cc |
index 76bc639cbcfb3685e40ef46bb605d1198225f4d3..1d5fb77eaf97bbfbc716fde8df55a8602adb1e5c 100644 |
--- a/webrtc/pc/rtptransport.cc |
+++ b/webrtc/pc/rtptransport.cc |
@@ -25,6 +25,38 @@ void RtpTransport::set_rtcp_packet_transport( |
rtcp_packet_transport_ = rtcp; |
} |
+void RtpTransport::Connect(bool rtcp) { |
+ rtc::PacketTransportInternal* transport = |
+ rtcp ? rtcp_packet_transport_ : rtp_packet_transport_; |
+ RTC_DCHECK(transport); |
+ transport->SignalReadyToSend.connect(this, &RtpTransport::OnReadyToSend); |
+} |
+ |
+void RtpTransport::Disconnect(bool rtcp) { |
+ rtc::PacketTransportInternal* transport = |
+ rtcp ? rtcp_packet_transport_ : rtp_packet_transport_; |
+ RTC_DCHECK(transport); |
+ transport->SignalReadyToSend.disconnect(this); |
+} |
+ |
+void RtpTransport::OnReadyToSend(rtc::PacketTransportInternal* transport) { |
+ SetReadyToSend(transport == rtcp_packet_transport_, true); |
+} |
+ |
+void RtpTransport::SetReadyToSend(bool rtcp, bool ready) { |
+ if (rtcp) { |
+ rtcp_ready_to_send_ = ready; |
+ } else { |
+ rtp_ready_to_send_ = ready; |
+ } |
+ |
+ // In the case of rtcp mux |rtcp_packet_transport_| will be null. |
+ // TODO(zstein): A better way to verify that rtcp mux is enabled. |
+ bool ready_to_send = |
+ rtp_ready_to_send_ && (rtcp_ready_to_send_ || !rtcp_packet_transport_); |
+ SignalReadyToSend(ready_to_send); |
+} |
+ |
PacketTransportInterface* RtpTransport::GetRtpPacketTransport() const { |
return rtp_packet_transport_; |
} |