Chromium Code Reviews| Index: webrtc/ortc/rtptransportadapter.cc |
| diff --git a/webrtc/ortc/rtptransportadapter.cc b/webrtc/ortc/rtptransportadapter.cc |
| index 1154ff629b87367fadefdbe2fe527322d2465a95..44e1560e64d3734f617a113c62f9d33d108c707e 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,24 @@ 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 RTCErrorOr<std::unique_ptr<RtpTransportInterface>>( |
| + std::move(params_result)); |
|
Taylor Brandstetter
2017/08/07 19:59:36
nit: I think you should be able to just return "st
sprang_webrtc
2017/08/08 08:15:13
Right, thanks!
|
| + } |
| + |
| 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 +99,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 +116,19 @@ 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 RTCErrorOr<std::unique_ptr<SrtpTransportInterface>>( |
| + 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 +139,7 @@ void RtpTransportAdapter::TakeOwnershipOfRtpTransportController( |
| } |
| RtpTransportAdapter::RtpTransportAdapter( |
| - const RtcpParameters& rtcp_parameters, |
| + const RtcpParameters& rtcp_params, |
| PacketTransportInterface* rtp, |
| PacketTransportInterface* rtcp, |
| RtpTransportControllerAdapter* rtp_transport_controller, |
| @@ -133,11 +147,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 +166,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(); |