Reland: Replaced the SignalSelectedCandidatePairChanged with a new signal.
|packet_overhead| field is added to rtc::NetworkRoute structure.
In PackTransportInternal:
1. network_route() is added which returns the current network route.
2. debug_name() is removed.
3. transport_name() is moved from DtlsTransportInternal and
IceTransportInternal to PacketTransportInternal.
When the selected candidate pair is changed, the P2PTransportChannel
will fire the SignalNetworkRouteChanged instead of
SignalSelectedCandidatePairChanged to upper layers.
The Rtp/SrtpTransport takes the responsibility of calculating the
transport overhead from the BaseChannel so that the BaseChannel
doesn't need to depend on P2P layer transports.
TBR=pthatcher@webrtc.org
Bug: webrtc:7013
Change-Id: If9928b25a7259544c2d9c42048b53ab24292fc67
Reviewed-on: https://webrtc-review.googlesource.com/22767
Reviewed-by: Zhi Huang <zhihuang@webrtc.org>
Commit-Queue: Zhi Huang <zhihuang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20664}
diff --git a/pc/srtptransport.cc b/pc/srtptransport.cc
index 1343fd0..bb42ad4 100644
--- a/pc/srtptransport.cc
+++ b/pc/srtptransport.cc
@@ -42,6 +42,8 @@
this, &SrtpTransport::OnPacketReceived);
rtp_transport_->SignalReadyToSend.connect(this,
&SrtpTransport::OnReadyToSend);
+ rtp_transport_->SignalNetworkRouteChanged.connect(
+ this, &SrtpTransport::OnNetworkRouteChanged);
}
bool SrtpTransport::SendRtpPacket(rtc::CopyOnWriteBuffer* packet,
@@ -170,6 +172,20 @@
SignalPacketReceived(rtcp, packet, packet_time);
}
+void SrtpTransport::OnNetworkRouteChanged(
+
+ rtc::Optional<rtc::NetworkRoute> network_route) {
+ // Only append the SRTP overhead when there is a selected network route.
+ if (network_route) {
+ int srtp_overhead = 0;
+ if (IsActive()) {
+ GetSrtpOverhead(&srtp_overhead);
+ }
+ network_route->packet_overhead += srtp_overhead;
+ }
+ SignalNetworkRouteChanged(network_route);
+}
+
bool SrtpTransport::SetRtpParams(int send_cs,
const uint8_t* send_key,
int send_key_len,