From 19391ae4c715cf35112496db90a9b3a6de82e19a Mon Sep 17 00:00:00 2001 From: Jakub Adam Date: Mon, 18 Nov 2019 16:15:21 +0100 Subject: [PATCH] srtobject: allow passing SRT Stream ID in stream URI Based on Stream ID, the application can accept or reject the connection, select the desired data stream, or set an appropriate passphrase for the connection. Example usage: srt://127.0.0.1:1234?streamid=mystream --- ext/srt/gstsrtobject.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/ext/srt/gstsrtobject.c b/ext/srt/gstsrtobject.c index 95c04c9..26bfe0b 100644 --- a/ext/srt/gstsrtobject.c +++ b/ext/srt/gstsrtobject.c @@ -174,6 +174,18 @@ gst_srt_object_set_common_params (SRTSOCKET sock, GstSRTObject * srtobject, } } + if (gst_structure_has_field (srtobject->parameters, "streamid")) { + const gchar *streamid; + + streamid = gst_structure_get_string (srtobject->parameters, "streamid"); + if (streamid != NULL && streamid[0] != '\0') { + if (srt_setsockopt (sock, 0, SRTO_STREAMID, streamid, strlen (streamid))) { + g_set_error (error, GST_LIBRARY_ERROR, GST_LIBRARY_ERROR_SETTINGS, + "failed to set stream ID (reason: %s)", srt_getlasterror_str ()); + } + } + } + return TRUE; } @@ -587,6 +599,8 @@ gst_srt_object_set_uri (GstSRTObject * srtobject, const gchar * uri, } else if (!g_strcmp0 ("pbkeylen", key)) { gst_srt_object_set_enum_value (srtobject->parameters, GST_TYPE_SRT_KEY_LENGTH, key, value); + } else if (!g_strcmp0 ("streamid", key)) { + gst_srt_object_set_string_value (srtobject->parameters, key, value); } } -- 2.7.4