webrtcsink: Port to the 'webrtcsrc' signaller object/interface take 2

Merged Matthew Waters requested to merge ystreet/gst-plugins-rs:webrtcsink-signaller-gobject into main

Supersedes !1119 (closed)

commit 92b7c226

webrtcsink: privatise the 'shutdown' function

The functionality is now access through the relevant signal instead.

commit 6c2557c8

webrtc/signaller: emit the relevant signals instead of the interface vtable

In order to support the use case of an external user providing their own
signalling mechanism, we want the signals to be used and only if nothing
is connected, fallback to the default handling.  Calling the interface
vtable directly will bypass the signal emission entirely.

Also ensure that the signals are defined properly for this case. i.e.
1. Signals the the application/external code is expected to emit are
   marked as an action signal.
2. Add accumulators to avoid calling the default class handler if
   another signal handler is connected.

commit cc9de595

webrtc/signaller: remove SignallableImplExt

This pattern is used for subclassing and calling parent class/interface functions.
However that is not useful for the signaller object.
1. The signals are the API contract and should instead be used by
   webrtcsrc/sink to ask or provide outside for/with information.
2. The default case (no signal attached)is instead handled by default class
   handlers that call directly using the relevant rust trait.  No parent
   (GObject) vfuncs necessary.

commit cbf23505

webrtcsink: expose signaller as a property

in the process move the signaller field to the settings struct

commit 7abf2af2

Author: Thibault Saunier tsaunier@igalia.com

webrtcsink: Port to the 'webrtcsrc' signaller object/interface

With contributions from:
Matthew Waters <matthew@centricular.com>

Merge request reports