From 9680805bdb08076db1450ca717e6a0bb51fc468e Mon Sep 17 00:00:00 2001 From: Mathieu Duponchelle Date: Tue, 1 Aug 2023 00:28:52 +0200 Subject: [PATCH] webrtcsink: don't forget to setup encoders for discoveries The "encoder-setup" signal must also be emitted for the encoders used in discovery pipelines in order for the default settings to be applied. This otherwise meant that for instance the x264 encoder would use a 60 frames latency, greatly delaying startup. Part-of: --- net/webrtc/src/webrtcsink/imp.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/net/webrtc/src/webrtcsink/imp.rs b/net/webrtc/src/webrtcsink/imp.rs index e670e7bb..ed1ed0f0 100644 --- a/net/webrtc/src/webrtcsink/imp.rs +++ b/net/webrtc/src/webrtcsink/imp.rs @@ -2804,6 +2804,13 @@ impl BaseWebRTCSink { } let encoding_chain = encoding_chain_builder.build(&pipe.0, &encoding_chain_src)?; + if let Some(ref enc) = encoding_chain.encoder { + element.emit_by_name::( + "encoder-setup", + &[&"discovery".to_string(), &stream_name, &enc], + ); + } + let sink = gst_app::AppSink::builder() .callbacks( gst_app::AppSinkCallbacks::builder() @@ -3493,7 +3500,8 @@ impl ObjectImpl for BaseWebRTCSink { .build(), /** * RsBaseWebRTCSink::encoder-setup: - * @consumer_id: Identifier of the consumer + * @consumer_id: Identifier of the consumer, or "discovery" + * when the encoder is used in a discovery pipeline. * @pad_name: The name of the corresponding input pad * @encoder: The constructed encoder *