webrtcsink icon indicating copy to clipboard operation
webrtcsink copied to clipboard

Request: webrtcsink-custom-signaller, but plugin output, not executable

Open cameronelliott opened this issue 3 years ago • 2 comments
trafficstars

Hey guys, awesome work in creating webrtcsink! @MathieuDuponchelle @sdroege and all the other contribs.

I made a basic proof of concept WHIP+webrtcsink example, starting with: webrtcsink-custom-signaller

I've mentioned it here also: #40

It is an early proof of concept, but it works.

I spent a bit of time trying to see how I could create a plugin that combines webrtcsink and my custom WHIP signaller, but found doing so fairly complex given my limited knowledge of both Rust and GStreamer.

Without PRs to webrtcsink, the only thing that was obvious was to copy huge chunks of code from plugins/src/webrtcsink/imp.rs and try to create a new plugin that invokes WebRTCSink::with_signaller(...) as part of instantiation. But that doesn't seem like a good path to me

Please consider writing a different example like webrtcsink-custom-signaller, but showing how to create a new plugin with a custom signaller.

Let me know if you have any questions about WHIP or my proof of concept example.

cameronelliott avatar Jul 08 '22 20:07 cameronelliott

wow, I'm sorry @cameronelliott I somehow didn't pay attention to this issue, I'll make sure to take a look :)

MathieuDuponchelle avatar Aug 17 '22 16:08 MathieuDuponchelle

@cameronelliott I see, your signaller implementation probably needs a bit of work, but all in all it doesn't seem like too much code duplication tbh :)

I think the best way forward here would be to expose a whip signaller directly in webrtcsink, with the ability to pick either "default" or "whip" through a property.

MathieuDuponchelle avatar Aug 17 '22 16:08 MathieuDuponchelle

@cameronelliott we just had a GStreamer hackfest where we (@ford-prefect, @thiblahute) decided that we will expose one factory-name / element per signallable implementation :) Closing because what needs to be done will happen on a per-protocol basis :)

MathieuDuponchelle avatar Oct 24 '22 09:10 MathieuDuponchelle