| Index: webrtc/api/ortc/rtptransportinterface.h
 | 
| diff --git a/webrtc/api/ortc/rtptransportinterface.h b/webrtc/api/ortc/rtptransportinterface.h
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..8d1ca57de9ad74ac86684ae29edf4e0503ce9d02
 | 
| --- /dev/null
 | 
| +++ b/webrtc/api/ortc/rtptransportinterface.h
 | 
| @@ -0,0 +1,84 @@
 | 
| +/*
 | 
| + *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
 | 
| + *
 | 
| + *  Use of this source code is governed by a BSD-style license
 | 
| + *  that can be found in the LICENSE file in the root of the source
 | 
| + *  tree. An additional intellectual property rights grant can be found
 | 
| + *  in the file PATENTS.  All contributing project authors may
 | 
| + *  be found in the AUTHORS file in the root of the source tree.
 | 
| + */
 | 
| +
 | 
| +#ifndef WEBRTC_API_ORTC_RTPTRANSPORTINTERFACE_H_
 | 
| +#define WEBRTC_API_ORTC_RTPTRANSPORTINTERFACE_H_
 | 
| +
 | 
| +#include <string>
 | 
| +
 | 
| +#include "webrtc/api/ortc/packettransportinterface.h"
 | 
| +#include "webrtc/api/rtcerror.h"
 | 
| +#include "webrtc/base/optional.h"
 | 
| +
 | 
| +namespace webrtc {
 | 
| +
 | 
| +class RtpTransportAdapter;
 | 
| +
 | 
| +struct RtcpParameters {
 | 
| +  // The SSRC to be used in the "SSRC of packet sender" field.
 | 
| +  // If not set, one will be chosen by the implementation.
 | 
| +  // TODO(deadbeef): Not implemented.
 | 
| +  rtc::Optional<uint32_t> ssrc;
 | 
| +
 | 
| +  // RTCP CNAME; if empty in the construction of the RtpTransport, one will be
 | 
| +  // chosen by the implementation, and returned in GetRtcpParameters.
 | 
| +  //
 | 
| +  // If empty when passed into SetRtcpParameters, the CNAME simply won't be
 | 
| +  // modified.
 | 
| +  std::string cname;
 | 
| +
 | 
| +  // Send reduced-size RTCP?
 | 
| +  bool reduced_size = false;
 | 
| +
 | 
| +  // Send RTCP multiplexed on the RTP transport?
 | 
| +  bool mux = true;
 | 
| +
 | 
| +  bool operator==(const RtcpParameters& o) const {
 | 
| +    return ssrc == o.ssrc && cname == o.cname &&
 | 
| +           reduced_size == o.reduced_size && mux == o.mux;
 | 
| +  }
 | 
| +  bool operator!=(const RtcpParameters& o) const { return !(*this == o); }
 | 
| +};
 | 
| +
 | 
| +// Base class for different types of RTP transports that can be created by an
 | 
| +// OrtcFactory. Used by RtpSender/RtpReceivers.
 | 
| +class RtpTransportInterface {
 | 
| + public:
 | 
| +  virtual ~RtpTransportInterface() {}
 | 
| +
 | 
| +  // Returns packet transport that's used to send RTP packets.
 | 
| +  virtual PacketTransportInterface* GetRtpPacketTransport() const = 0;
 | 
| +
 | 
| +  // Returns separate packet transport that's used to send RTCP packets.
 | 
| +  // If RTCP multiplexing is being used, returns nullptr.
 | 
| +  virtual PacketTransportInterface* GetRtcpPacketTransport() const = 0;
 | 
| +
 | 
| +  // Set/get RTCP params. Changing |mux| from "true" to "false" is not allowed,
 | 
| +  // and changing the CNAME is currently unsupported. So this is expected to be
 | 
| +  // used to enable RTCP muxing or reduced-size RTCP if initially not enabled.
 | 
| +  virtual RTCError SetRtcpParameters(const RtcpParameters& parameters) = 0;
 | 
| +  virtual RtcpParameters GetRtcpParameters() const = 0;
 | 
| +
 | 
| + protected:
 | 
| +  // Only for internal use.
 | 
| +  // Returns a pointer to the internal (non-public) interface.
 | 
| +  virtual RtpTransportAdapter* GetInternal() = 0;
 | 
| +
 | 
| +  // Classes that can use this internal interface.
 | 
| +  friend class OrtcFactory;
 | 
| +  friend class OrtcRtpSenderAdapter;
 | 
| +  friend class OrtcRtpReceiverAdapter;
 | 
| +  friend class RtpTransportControllerAdapter;
 | 
| +  friend class RtpTransportAdapter;
 | 
| +};
 | 
| +
 | 
| +}  // namespace webrtc
 | 
| +
 | 
| +#endif  // WEBRTC_API_ORTC_RTPTRANSPORTINTERFACE_H_
 | 
| 
 |