Use new TransportController implementation in PeerConnection.

The TransportController will be replaced by the JsepTransportController
and JsepTransport will be replace be JsepTransport2.

The JsepTransportController will take the entire SessionDescription
and handle the RtcpMux, Sdes and BUNDLE internally.

The ownership model is also changed. The P2P layer transports are not
ref-counted and will be owned by the JsepTransport2.

In ORTC aspect, RtpTransportAdapter is now a wrapper over RtpTransport
or SrtpTransport and it implements the public and internal interface
by calling the transport underneath.

Bug: webrtc:8587
Change-Id: Ia7fa61288a566f211f8560072ea0eecaf19e48df
Reviewed-on: https://webrtc-review.googlesource.com/59586
Commit-Queue: Zhi Huang <zhihuang@webrtc.org>
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22693}
diff --git a/pc/rtptransportinternal.h b/pc/rtptransportinternal.h
index 0665fd7..a354936 100644
--- a/pc/rtptransportinternal.h
+++ b/pc/rtptransportinternal.h
@@ -13,11 +13,12 @@
 
 #include <string>
 
-#include "api/ortc/rtptransportinterface.h"
+#include "api/ortc/srtptransportinterface.h"
 #include "api/umametrics.h"
 #include "p2p/base/icetransportinternal.h"
 #include "rtc_base/networkroute.h"
 #include "rtc_base/sigslot.h"
+#include "rtc_base/sslstreamadapter.h"
 
 namespace rtc {
 class CopyOnWriteBuffer;
@@ -27,11 +28,11 @@
 
 namespace webrtc {
 
-// This represents the internal interface beneath RtpTransportInterface;
+// This represents the internal interface beneath SrtpTransportInterface;
 // it is not accessible to API consumers but is accessible to internal classes
 // in order to send and receive RTP and RTCP packets belonging to a single RTP
 // session. Additional convenience and configuration methods are also provided.
-class RtpTransportInternal : public RtpTransportInterface,
+class RtpTransportInternal : public SrtpTransportInterface,
                              public sigslot::has_slots<> {
  public:
   virtual void SetRtcpMuxEnabled(bool enable) = 0;
@@ -47,6 +48,8 @@
   virtual rtc::PacketTransportInternal* rtcp_packet_transport() const = 0;
   virtual void SetRtcpPacketTransport(rtc::PacketTransportInternal* rtcp) = 0;
 
+  virtual bool IsReadyToSend() const = 0;
+
   // Called whenever a transport's ready-to-send state changes. The argument
   // is true if all used transports are ready to send. This is more specific
   // than just "writable"; it means the last send didn't return ENOTCONN.
@@ -80,9 +83,7 @@
                               const rtc::PacketOptions& options,
                               int flags) = 0;
 
-  virtual bool HandlesPayloadType(int payload_type) const = 0;
-
-  virtual void AddHandledPayloadType(int payload_type) = 0;
+  virtual bool IsSrtpActive() const = 0;
 
   virtual void SetMetricsObserver(
       rtc::scoped_refptr<MetricsObserverInterface> metrics_observer) = 0;