| Index: webrtc/ortc/rtptransportadapter.cc
|
| diff --git a/webrtc/ortc/rtptransportadapter.cc b/webrtc/ortc/rtptransportadapter.cc
|
| index 1154ff629b87367fadefdbe2fe527322d2465a95..10e5e8fefc911a985b94369ab75dab6efb0927d9 100644
|
| --- a/webrtc/ortc/rtptransportadapter.cc
|
| +++ b/webrtc/ortc/rtptransportadapter.cc
|
| @@ -24,8 +24,8 @@ BEGIN_OWNED_PROXY_MAP(RtpTransport)
|
| PROXY_SIGNALING_THREAD_DESTRUCTOR()
|
| PROXY_CONSTMETHOD0(PacketTransportInterface*, GetRtpPacketTransport)
|
| PROXY_CONSTMETHOD0(PacketTransportInterface*, GetRtcpPacketTransport)
|
| -PROXY_METHOD1(RTCError, SetRtcpParameters, const RtcpParameters&)
|
| -PROXY_CONSTMETHOD0(RtcpParameters, GetRtcpParameters)
|
| +PROXY_METHOD1(RTCError, SetParameters, const RtpTransportParameters&)
|
| +PROXY_CONSTMETHOD0(RtpTransportParameters, GetParameters)
|
| protected:
|
| RtpTransportAdapter* GetInternal() override {
|
| return internal();
|
| @@ -36,8 +36,8 @@ BEGIN_OWNED_PROXY_MAP(SrtpTransport)
|
| PROXY_SIGNALING_THREAD_DESTRUCTOR()
|
| PROXY_CONSTMETHOD0(PacketTransportInterface*, GetRtpPacketTransport)
|
| PROXY_CONSTMETHOD0(PacketTransportInterface*, GetRtcpPacketTransport)
|
| -PROXY_METHOD1(RTCError, SetRtcpParameters, const RtcpParameters&)
|
| -PROXY_CONSTMETHOD0(RtcpParameters, GetRtcpParameters)
|
| +PROXY_METHOD1(RTCError, SetParameters, const RtpTransportParameters&)
|
| +PROXY_CONSTMETHOD0(RtpTransportParameters, GetParameters)
|
| PROXY_METHOD1(RTCError, SetSrtpSendKey, const cricket::CryptoParams&)
|
| PROXY_METHOD1(RTCError, SetSrtpReceiveKey, const cricket::CryptoParams&)
|
| protected:
|
| @@ -49,7 +49,7 @@ END_PROXY_MAP()
|
| // static
|
| RTCErrorOr<std::unique_ptr<RtpTransportInterface>>
|
| RtpTransportAdapter::CreateProxied(
|
| - const RtcpParameters& rtcp_parameters,
|
| + const RtpTransportParameters& parameters,
|
| PacketTransportInterface* rtp,
|
| PacketTransportInterface* rtcp,
|
| RtpTransportControllerAdapter* rtp_transport_controller) {
|
| @@ -57,12 +57,12 @@ RtpTransportAdapter::CreateProxied(
|
| LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_PARAMETER,
|
| "Must provide an RTP packet transport.");
|
| }
|
| - if (!rtcp_parameters.mux && !rtcp) {
|
| + if (!parameters.rtcp.mux && !rtcp) {
|
| LOG_AND_RETURN_ERROR(
|
| RTCErrorType::INVALID_PARAMETER,
|
| "Must provide an RTCP packet transport when RTCP muxing is not used.");
|
| }
|
| - if (rtcp_parameters.mux && rtcp) {
|
| + if (parameters.rtcp.mux && rtcp) {
|
| LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_PARAMETER,
|
| "Creating an RtpTransport with RTCP muxing enabled, "
|
| "with a separate RTCP packet transport?");
|
| @@ -74,17 +74,23 @@ RtpTransportAdapter::CreateProxied(
|
| LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_PARAMETER,
|
| "Must provide an RTP transport controller.");
|
| }
|
| + std::unique_ptr<RtpTransportAdapter> transport_adapter(
|
| + new RtpTransportAdapter(parameters.rtcp, rtp, rtcp,
|
| + rtp_transport_controller,
|
| + false /*is_srtp_transport*/));
|
| + RTCError params_result = transport_adapter->SetParameters(parameters);
|
| + if (!params_result.ok()) {
|
| + return std::move(params_result);
|
| + }
|
| +
|
| return RtpTransportProxyWithInternal<RtpTransportAdapter>::Create(
|
| rtp_transport_controller->signaling_thread(),
|
| - rtp_transport_controller->worker_thread(),
|
| - std::unique_ptr<RtpTransportAdapter>(new RtpTransportAdapter(
|
| - rtcp_parameters, rtp, rtcp, rtp_transport_controller,
|
| - /*is_srtp_transport*/ false)));
|
| + rtp_transport_controller->worker_thread(), std::move(transport_adapter));
|
| }
|
|
|
| RTCErrorOr<std::unique_ptr<SrtpTransportInterface>>
|
| RtpTransportAdapter::CreateSrtpProxied(
|
| - const RtcpParameters& rtcp_parameters,
|
| + const RtpTransportParameters& parameters,
|
| PacketTransportInterface* rtp,
|
| PacketTransportInterface* rtcp,
|
| RtpTransportControllerAdapter* rtp_transport_controller) {
|
| @@ -92,12 +98,12 @@ RtpTransportAdapter::CreateSrtpProxied(
|
| LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_PARAMETER,
|
| "Must provide an RTP packet transport.");
|
| }
|
| - if (!rtcp_parameters.mux && !rtcp) {
|
| + if (!parameters.rtcp.mux && !rtcp) {
|
| LOG_AND_RETURN_ERROR(
|
| RTCErrorType::INVALID_PARAMETER,
|
| "Must provide an RTCP packet transport when RTCP muxing is not used.");
|
| }
|
| - if (rtcp_parameters.mux && rtcp) {
|
| + if (parameters.rtcp.mux && rtcp) {
|
| LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_PARAMETER,
|
| "Creating an RtpTransport with RTCP muxing enabled, "
|
| "with a separate RTCP packet transport?");
|
| @@ -109,12 +115,18 @@ RtpTransportAdapter::CreateSrtpProxied(
|
| LOG_AND_RETURN_ERROR(RTCErrorType::INVALID_PARAMETER,
|
| "Must provide an RTP transport controller.");
|
| }
|
| + std::unique_ptr<RtpTransportAdapter> transport_adapter(
|
| + new RtpTransportAdapter(parameters.rtcp, rtp, rtcp,
|
| + rtp_transport_controller,
|
| + true /*is_srtp_transport*/));
|
| + RTCError params_result = transport_adapter->SetParameters(parameters);
|
| + if (!params_result.ok()) {
|
| + return std::move(params_result);
|
| + }
|
| +
|
| return SrtpTransportProxyWithInternal<RtpTransportAdapter>::Create(
|
| rtp_transport_controller->signaling_thread(),
|
| - rtp_transport_controller->worker_thread(),
|
| - std::unique_ptr<RtpTransportAdapter>(new RtpTransportAdapter(
|
| - rtcp_parameters, rtp, rtcp, rtp_transport_controller,
|
| - /*is_srtp_transport*/ true)));
|
| + rtp_transport_controller->worker_thread(), std::move(transport_adapter));
|
| }
|
|
|
| void RtpTransportAdapter::TakeOwnershipOfRtpTransportController(
|
| @@ -125,7 +137,7 @@ void RtpTransportAdapter::TakeOwnershipOfRtpTransportController(
|
| }
|
|
|
| RtpTransportAdapter::RtpTransportAdapter(
|
| - const RtcpParameters& rtcp_parameters,
|
| + const RtcpParameters& rtcp_params,
|
| PacketTransportInterface* rtp,
|
| PacketTransportInterface* rtcp,
|
| RtpTransportControllerAdapter* rtp_transport_controller,
|
| @@ -133,11 +145,11 @@ RtpTransportAdapter::RtpTransportAdapter(
|
| : rtp_packet_transport_(rtp),
|
| rtcp_packet_transport_(rtcp),
|
| rtp_transport_controller_(rtp_transport_controller),
|
| - rtcp_parameters_(rtcp_parameters),
|
| is_srtp_transport_(is_srtp_transport) {
|
| - RTC_DCHECK(rtp_transport_controller);
|
| + parameters_.rtcp = rtcp_params;
|
| // CNAME should have been filled by OrtcFactory if empty.
|
| - RTC_DCHECK(!rtcp_parameters_.cname.empty());
|
| + RTC_DCHECK(!parameters_.rtcp.cname.empty());
|
| + RTC_DCHECK(rtp_transport_controller);
|
| }
|
|
|
| RtpTransportAdapter::~RtpTransportAdapter() {
|
| @@ -152,27 +164,29 @@ PacketTransportInterface* RtpTransportAdapter::GetRtcpPacketTransport() const {
|
| return rtcp_packet_transport_;
|
| }
|
|
|
| -RTCError RtpTransportAdapter::SetRtcpParameters(
|
| - const RtcpParameters& parameters) {
|
| - if (!parameters.mux && rtcp_parameters_.mux) {
|
| +RTCError RtpTransportAdapter::SetParameters(
|
| + const RtpTransportParameters& parameters) {
|
| + if (!parameters.rtcp.mux && parameters_.rtcp.mux) {
|
| LOG_AND_RETURN_ERROR(webrtc::RTCErrorType::INVALID_STATE,
|
| "Can't disable RTCP muxing after enabling.");
|
| }
|
| - if (!parameters.cname.empty() && parameters.cname != rtcp_parameters_.cname) {
|
| + if (!parameters.rtcp.cname.empty() &&
|
| + parameters.rtcp.cname != parameters_.rtcp.cname) {
|
| LOG_AND_RETURN_ERROR(webrtc::RTCErrorType::UNSUPPORTED_OPERATION,
|
| "Changing the RTCP CNAME is currently unsupported.");
|
| }
|
| // If the CNAME is empty, use the existing one.
|
| - RtcpParameters copy = parameters;
|
| - if (copy.cname.empty()) {
|
| - copy.cname = rtcp_parameters_.cname;
|
| + RtpTransportParameters copy = parameters;
|
| + if (copy.rtcp.cname.empty()) {
|
| + copy.rtcp.cname = parameters_.rtcp.cname;
|
| }
|
| - RTCError err = rtp_transport_controller_->SetRtcpParameters(copy, this);
|
| + RTCError err =
|
| + rtp_transport_controller_->SetRtpTransportParameters(copy, this);
|
| if (!err.ok()) {
|
| return err;
|
| }
|
| - rtcp_parameters_ = copy;
|
| - if (rtcp_parameters_.mux) {
|
| + parameters_ = copy;
|
| + if (parameters_.rtcp.mux) {
|
| rtcp_packet_transport_ = nullptr;
|
| }
|
| return RTCError::OK();
|
|
|