diff --git a/net/webrtc/src/webrtcsink/imp.rs b/net/webrtc/src/webrtcsink/imp.rs index 262ad11b..e670e7bb 100644 --- a/net/webrtc/src/webrtcsink/imp.rs +++ b/net/webrtc/src/webrtcsink/imp.rs @@ -360,7 +360,7 @@ impl Default for State { } } -fn make_converter_for_video_caps(caps: &gst::Caps) -> Result { +fn make_converter_for_video_caps(caps: &gst::Caps, codec: &Codec) -> Result { assert!(caps.is_fixed()); let video_info = gst_video::VideoInfo::from_caps(caps)?; @@ -369,7 +369,27 @@ fn make_converter_for_video_caps(caps: &gst::Caps) -> Result Result make_converter_for_video_caps(&self.input_caps)?.upcast(), + true => make_converter_for_video_caps(&self.input_caps, &self.codec)?.upcast(), false => { gst::parse_bin_from_description("audioresample ! audioconvert", true)?.upcast() } @@ -2761,7 +2767,7 @@ impl BaseWebRTCSink { let src = discovery_info.create_src(); let mut elements = vec![src.clone().upcast::()]; let encoding_chain_src = if codec.is_video() && has_raw_input { - elements.push(make_converter_for_video_caps(&input_caps)?); + elements.push(make_converter_for_video_caps(&input_caps, &codec)?); let capsfilter = make_element("capsfilter", Some("raw_capsfilter"))?; elements.push(capsfilter.clone());