diff options
author | Nicolas Dufresne <nicolas.dufresne@collabora.com> | 2020-07-11 15:40:40 -0400 |
---|---|---|
committer | GStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org> | 2020-07-14 20:48:04 +0000 |
commit | 19c632f4e89521a6bd2b4cb41f1680c6232279c5 (patch) | |
tree | c15ef1cb17b001748ac018ca85d81bc6976f3f4d /gst | |
parent | f6ac2e44bb4e3d6685268481c16abfb60191b93c (diff) | |
download | gstreamer-plugins-bad-19c632f4e89521a6bd2b4cb41f1680c6232279c5.tar.gz |
ristsrc: Add support for domain name
This add domain name resolution (similar to udpsrc does) to the ristsrc
element.
Fixes 1352
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1433>
Diffstat (limited to 'gst')
-rw-r--r-- | gst/rist/gstristsrc.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/gst/rist/gstristsrc.c b/gst/rist/gstristsrc.c index a9cbff9bd..0545faf0d 100644 --- a/gst/rist/gstristsrc.c +++ b/gst/rist/gstristsrc.c @@ -586,12 +586,30 @@ gst_rist_src_setup_rtcp_socket (GstRistSrc * src, RistReceiverBond * bond) GSocket *socket = NULL; GInetAddress *iaddr = NULL; guint port = bond->port + 1; + GError *error = NULL; g_object_get (bond->rtcp_src, "used-socket", &socket, NULL); if (!socket) return GST_STATE_CHANGE_FAILURE; iaddr = g_inet_address_new_from_string (bond->address); + if (!iaddr) { + GList *results; + GResolver *resolver = NULL; + + resolver = g_resolver_get_default (); + results = g_resolver_lookup_by_name (resolver, bond->address, NULL, &error); + + if (!results) { + g_object_unref (resolver); + goto dns_resolve_failed; + } + + iaddr = G_INET_ADDRESS (g_object_ref (results->data)); + + g_resolver_free_addresses (results); + g_object_unref (resolver); + } if (g_inet_address_get_is_multicast (iaddr)) { /* mc-ttl is not supported by dynudpsink */ @@ -636,6 +654,14 @@ gst_rist_src_setup_rtcp_socket (GstRistSrc * src, RistReceiverBond * bond) gst_element_sync_state_with_parent (bond->rtcp_sink); return GST_STATE_CHANGE_SUCCESS; + +dns_resolve_failed: + GST_ELEMENT_ERROR (src, RESOURCE, NOT_FOUND, + ("Could not resolve hostname '%s'", GST_STR_NULL (bond->address)), + ("DNS resolver reported: %s", error->message)); + g_error_free (error); + return GST_STATE_CHANGE_FAILURE; + } static GstStateChangeReturn |