mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 20:21:24 +00:00
webrtcbin: add get-transceiver signal
get-transceivers is not introspectable, and a method to get a transceiver by index is convenient.
This commit is contained in:
parent
dc0e95acab
commit
08858d753c
1 changed files with 37 additions and 1 deletions
|
@ -273,7 +273,8 @@ gst_webrtc_bin_pad_new (const gchar * name, GstPadDirection direction)
|
||||||
G_DEFINE_TYPE_WITH_CODE (GstWebRTCBin, gst_webrtc_bin, GST_TYPE_BIN,
|
G_DEFINE_TYPE_WITH_CODE (GstWebRTCBin, gst_webrtc_bin, GST_TYPE_BIN,
|
||||||
G_ADD_PRIVATE (GstWebRTCBin)
|
G_ADD_PRIVATE (GstWebRTCBin)
|
||||||
GST_DEBUG_CATEGORY_INIT (gst_webrtc_bin_debug, "webrtcbin", 0,
|
GST_DEBUG_CATEGORY_INIT (gst_webrtc_bin_debug, "webrtcbin", 0,
|
||||||
"webrtcbin element"););
|
"webrtcbin element");
|
||||||
|
);
|
||||||
|
|
||||||
static GstPad *_connect_input_stream (GstWebRTCBin * webrtc,
|
static GstPad *_connect_input_stream (GstWebRTCBin * webrtc,
|
||||||
GstWebRTCBinPad * pad);
|
GstWebRTCBinPad * pad);
|
||||||
|
@ -301,6 +302,7 @@ enum
|
||||||
ON_NEW_TRANSCEIVER_SIGNAL,
|
ON_NEW_TRANSCEIVER_SIGNAL,
|
||||||
GET_STATS_SIGNAL,
|
GET_STATS_SIGNAL,
|
||||||
ADD_TRANSCEIVER_SIGNAL,
|
ADD_TRANSCEIVER_SIGNAL,
|
||||||
|
GET_TRANSCEIVER_SIGNAL,
|
||||||
GET_TRANSCEIVERS_SIGNAL,
|
GET_TRANSCEIVERS_SIGNAL,
|
||||||
ADD_TURN_SERVER_SIGNAL,
|
ADD_TURN_SERVER_SIGNAL,
|
||||||
CREATE_DATA_CHANNEL_SIGNAL,
|
CREATE_DATA_CHANNEL_SIGNAL,
|
||||||
|
@ -4009,6 +4011,25 @@ gst_webrtc_bin_get_transceivers (GstWebRTCBin * webrtc)
|
||||||
return arr;
|
return arr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static GstWebRTCRTPTransceiver *
|
||||||
|
gst_webrtc_bin_get_transceiver (GstWebRTCBin * webrtc, guint idx)
|
||||||
|
{
|
||||||
|
GstWebRTCRTPTransceiver *trans = NULL;
|
||||||
|
|
||||||
|
if (idx >= webrtc->priv->transceivers->len) {
|
||||||
|
GST_ERROR_OBJECT (webrtc, "No transceiver for idx %d", idx);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
trans =
|
||||||
|
g_array_index (webrtc->priv->transceivers, GstWebRTCRTPTransceiver *,
|
||||||
|
idx);
|
||||||
|
gst_object_ref (trans);
|
||||||
|
|
||||||
|
done:
|
||||||
|
return trans;
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
gst_webrtc_bin_add_turn_server (GstWebRTCBin * webrtc, const gchar * uri)
|
gst_webrtc_bin_add_turn_server (GstWebRTCBin * webrtc, const gchar * uri)
|
||||||
{
|
{
|
||||||
|
@ -5194,6 +5215,21 @@ gst_webrtc_bin_class_init (GstWebRTCBinClass * klass)
|
||||||
G_CALLBACK (gst_webrtc_bin_get_transceivers), NULL, NULL,
|
G_CALLBACK (gst_webrtc_bin_get_transceivers), NULL, NULL,
|
||||||
g_cclosure_marshal_generic, G_TYPE_ARRAY, 0);
|
g_cclosure_marshal_generic, G_TYPE_ARRAY, 0);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GstWebRTCBin::get-transceiver:
|
||||||
|
* @object: the #GstWebRtcBin
|
||||||
|
* @idx: The index of the transceiver
|
||||||
|
*
|
||||||
|
* Returns: the #GstWebRTCRTPTransceiver, or %NULL
|
||||||
|
* Since: 1.16
|
||||||
|
*/
|
||||||
|
gst_webrtc_bin_signals[GET_TRANSCEIVER_SIGNAL] =
|
||||||
|
g_signal_new_class_handler ("get-transceiver", G_TYPE_FROM_CLASS (klass),
|
||||||
|
G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
|
||||||
|
G_CALLBACK (gst_webrtc_bin_get_transceiver), NULL, NULL,
|
||||||
|
g_cclosure_marshal_generic, GST_TYPE_WEBRTC_RTP_TRANSCEIVER, 1,
|
||||||
|
G_TYPE_INT);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GstWebRTCBin::add-turn-server:
|
* GstWebRTCBin::add-turn-server:
|
||||||
* @object: the #GstWebRtcBin
|
* @object: the #GstWebRtcBin
|
||||||
|
|
Loading…
Reference in a new issue