diff --git a/rust/src/router/transport.rs b/rust/src/router/transport.rs index b49f73a9e6..feb1d5d012 100644 --- a/rust/src/router/transport.rs +++ b/rust/src/router/transport.rs @@ -494,20 +494,17 @@ pub(super) trait TransportImpl: TransportGeneric { let ProducerOptions { id, kind, - rtp_parameters, + mut rtp_parameters, paused, key_frame_request_delay, app_data, } = producer_options; - // Clone given RTP parameters to not modify inout data. - let mut cloned_rtp_parameters = rtp_parameters.clone(); - - ortc::validate_rtp_parameters(&cloned_rtp_parameters) + ortc::validate_rtp_parameters(&rtp_parameters) .map_err(ProduceError::IncorrectRtpParameters)?; - if cloned_rtp_parameters.encodings.is_empty() { - cloned_rtp_parameters + if rtp_parameters.encodings.is_empty() { + rtp_parameters .encodings .push(RtpEncodingParameters::default()); } @@ -516,8 +513,8 @@ pub(super) trait TransportImpl: TransportGeneric { if transport_type != TransportType::Pipe { let mut cname_for_producers = self.cname_for_producers().lock(); if let Some(cname_for_producers) = cname_for_producers.as_ref() { - cloned_rtp_parameters.rtcp.cname = Some(cname_for_producers.clone()); - } else if let Some(cname) = cloned_rtp_parameters.rtcp.cname.as_ref() { + rtp_parameters.rtcp.cname = Some(cname_for_producers.clone()); + } else if let Some(cname) = rtp_parameters.rtcp.cname.as_ref() { // If CNAME is given and we don't have yet a CNAME for Producers in this // Transport, take it. cname_for_producers.replace(cname.clone()); @@ -528,21 +525,19 @@ pub(super) trait TransportImpl: TransportGeneric { cname_for_producers.replace(cname.clone()); // Override Producer's CNAME. - cloned_rtp_parameters.rtcp.cname = Some(cname); + rtp_parameters.rtcp.cname = Some(cname); } } let router_rtp_capabilities = self.router().rtp_capabilities(); - let rtp_mapping = ortc::get_producer_rtp_parameters_mapping( - &cloned_rtp_parameters, - router_rtp_capabilities, - ) - .map_err(ProduceError::FailedRtpParametersMapping)?; + let rtp_mapping = + ortc::get_producer_rtp_parameters_mapping(&rtp_parameters, router_rtp_capabilities) + .map_err(ProduceError::FailedRtpParametersMapping)?; let consumable_rtp_parameters = ortc::get_consumable_rtp_parameters( kind, - &cloned_rtp_parameters, + &rtp_parameters, router_rtp_capabilities, &rtp_mapping, ); @@ -558,7 +553,7 @@ pub(super) trait TransportImpl: TransportGeneric { TransportProduceRequest { producer_id, kind, - rtp_parameters: cloned_rtp_parameters.clone(), + rtp_parameters: rtp_parameters.clone(), rtp_mapping, key_frame_request_delay, paused, @@ -571,7 +566,7 @@ pub(super) trait TransportImpl: TransportGeneric { producer_id, kind, response.r#type, - cloned_rtp_parameters, + rtp_parameters, consumable_rtp_parameters, paused, Arc::clone(self.executor()), diff --git a/rust/src/worker.rs b/rust/src/worker.rs index cbf2212eea..632cb08750 100644 --- a/rust/src/worker.rs +++ b/rust/src/worker.rs @@ -712,10 +712,7 @@ impl Worker { media_codecs, } = router_options; - // Clone given RTP parameters to not modify inout data. - let cloned_media_codecs = media_codecs.clone(); - - let rtp_capabilities = ortc::generate_router_rtp_capabilities(cloned_media_codecs) + let rtp_capabilities = ortc::generate_router_rtp_capabilities(media_codecs) .map_err(CreateRouterError::FailedRtpCapabilitiesGeneration)?; let router_id = RouterId::new();