webrtcbin: Expose SCTP Transport

Being able to access the SCTP Transport object from the application
means the application can access the associated DTLS Transport object
and its ICE Transport object. This means we can observe the ICE state
also for a data-channel-only session. The collated
ice-connection-state on webrtcbin only includes the ICE Transport
objects that resides on the RTP transceivers (which is exactly how it
is specified in
https://w3c.github.io/webrtc-pc/#rtciceconnectionstate-enum).

For the consent freshness functionality (RFC 7675) to work the ICE
state must be accessible and consequently the SCTP transport must be
accessible for enabling consent freshness checking for a
data-channel-only session.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2214>
This commit is contained in:
Johan Sternerup 2021-05-03 10:45:42 +02:00 committed by GStreamer Marge Bot
parent 67a49be61f
commit 7f9bb15055
2 changed files with 29 additions and 1 deletions

View file

@ -227981,6 +227981,17 @@
"type": "GstWebRTCSessionDescription",
"writable": false
},
"sctp-transport": {
"blurb": "The WebRTC SCTP Transport",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"mutable": "null",
"readable": true,
"type": "GstObject",
"writable": false
},
"signaling-state": {
"blurb": "The signaling state of this element",
"conditionally-available": false,

View file

@ -467,7 +467,8 @@ enum
PROP_BUNDLE_POLICY,
PROP_ICE_TRANSPORT_POLICY,
PROP_ICE_AGENT,
PROP_LATENCY
PROP_LATENCY,
PROP_SCTP_TRANSPORT,
};
static guint gst_webrtc_bin_signals[LAST_SIGNAL] = { 0 };
@ -6914,6 +6915,9 @@ gst_webrtc_bin_get_property (GObject * object, guint prop_id,
case PROP_LATENCY:
g_value_set_uint (value, webrtc->priv->jb_latency);
break;
case PROP_SCTP_TRANSPORT:
g_value_set_object (value, webrtc->priv->sctp_transport);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@ -7191,6 +7195,19 @@ gst_webrtc_bin_class_init (GstWebRTCBinClass * klass)
0, G_MAXUINT, DEFAULT_JB_LATENCY,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
/**
* GstWebRTCBin:sctp-transport:
*
* The WebRTC SCTP Transport
*
* Since: 1.20
*/
g_object_class_install_property (gobject_class,
PROP_SCTP_TRANSPORT,
g_param_spec_object ("sctp-transport", "WebRTC SCTP Transport",
"The WebRTC SCTP Transport",
GST_TYPE_OBJECT, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
/**
* GstWebRTCBin::create-offer:
* @object: the #webrtcbin