| Index: webrtc/call/rtp_transport_controller_send.h | 
| diff --git a/webrtc/call/rtp_transport_controller_send.h b/webrtc/call/rtp_transport_controller_send.h | 
| index 117bca069c1a244f5de6862b0fd2fa226c327f42..2bbb547ffd117ddacc65ae3871154f7e7a15f457 100644 | 
| --- a/webrtc/call/rtp_transport_controller_send.h | 
| +++ b/webrtc/call/rtp_transport_controller_send.h | 
| @@ -11,46 +11,39 @@ | 
| #ifndef WEBRTC_CALL_RTP_TRANSPORT_CONTROLLER_SEND_H_ | 
| #define WEBRTC_CALL_RTP_TRANSPORT_CONTROLLER_SEND_H_ | 
|  | 
| +#include "webrtc/base/constructormagic.h" | 
| +#include "webrtc/call/rtp_transport_controller_send_interface.h" | 
| +#include "webrtc/modules/congestion_controller/include/send_side_congestion_controller.h" | 
| + | 
| namespace webrtc { | 
| +class Clock; | 
| +class RtcEventLog; | 
|  | 
| -class Module; | 
| -class PacketRouter; | 
| -class RtpPacketSender; | 
| -class SendSideCongestionController; | 
| -class TransportFeedbackObserver; | 
| - | 
| -// An RtpTransportController should own everything related to the RTP | 
| -// transport to/from a remote endpoint. We should have separate | 
| -// interfaces for send and receive side, even if they are implemented | 
| -// by the same class. This is an ongoing refactoring project. At some | 
| -// point, this class should be promoted to a public api under | 
| -// webrtc/api/rtp/. | 
| -// | 
| -// For a start, this object is just a collection of the objects needed | 
| -// by the VideoSendStream constructor. The plan is to move ownership | 
| -// of all RTP-related objects here, and add methods to create per-ssrc | 
| -// objects which would then be passed to VideoSendStream. Eventually, | 
| -// direct accessors like packet_router() should be removed. | 
| -// | 
| -// This should also have a reference to the underlying | 
| -// webrtc::Transport(s). Currently, webrtc::Transport is implemented by | 
| -// WebRtcVideoChannel2 and WebRtcVoiceMediaChannel, and owned by | 
| -// WebrtcSession. Video and audio always uses different transport | 
| -// objects, even in the common case where they are bundled over the | 
| -// same underlying transport. | 
| -// | 
| -// Extracting the logic of the webrtc::Transport from BaseChannel and | 
| -// subclasses into a separate class seems to be a prerequesite for | 
| -// moving the transport here. | 
| -class RtpTransportControllerSendInterface { | 
| +// TODO(nisse): When we get the underlying transports here, we should | 
| +// have one object implementing RtpTransportControllerSendInterface | 
| +// per transport, sharing the same congestion controller. | 
| +class RtpTransportControllerSend : public RtpTransportControllerSendInterface { | 
| public: | 
| -  virtual ~RtpTransportControllerSendInterface() {} | 
| -  virtual PacketRouter* packet_router() = 0; | 
| -  // Currently returning the same pointer, but with different types. | 
| -  virtual SendSideCongestionController* send_side_cc() = 0; | 
| -  virtual TransportFeedbackObserver* transport_feedback_observer() = 0; | 
| +  RtpTransportControllerSend(Clock* clock, webrtc::RtcEventLog* event_log); | 
| + | 
| +  void RegisterNetworkObserver( | 
| +      SendSideCongestionController::Observer* observer); | 
| + | 
| +  // Implements RtpTransportControllerSendInterface | 
| +  PacketRouter* packet_router() override { return &packet_router_; } | 
| +  SendSideCongestionController* send_side_cc() override { | 
| +    return &send_side_cc_; | 
| +  } | 
| +  TransportFeedbackObserver* transport_feedback_observer() override { | 
| +    return &send_side_cc_; | 
| +  } | 
| +  RtpPacketSender* packet_sender() override { return send_side_cc_.pacer(); } | 
| + | 
| + private: | 
| +  PacketRouter packet_router_; | 
| +  SendSideCongestionController send_side_cc_; | 
|  | 
| -  virtual RtpPacketSender* packet_sender() = 0; | 
| +  RTC_DISALLOW_COPY_AND_ASSIGN(RtpTransportControllerSend); | 
| }; | 
|  | 
| }  // namespace webrtc | 
|  |