[0.11] gst-plugins-base: sdp: Port to GIO for multicast address detection

Sebastian Dröge slomo at kemper.freedesktop.org
Tue Jan 17 04:27:53 PST 2012


Module: gst-plugins-base
Branch: 0.11
Commit: cfa7083e946ad023ffed434278a84de3670a6389
URL:    http://cgit.freedesktop.org/gstreamer/gst-plugins-base/commit/?id=cfa7083e946ad023ffed434278a84de3670a6389

Author: Sebastian Dröge <sebastian.droege at collabora.co.uk>
Date:   Tue Jan 17 13:27:05 2012 +0100

sdp: Port to GIO for multicast address detection

---

 gst-libs/gst/sdp/Makefile.am              |    4 +-
 gst-libs/gst/sdp/gstsdpmessage.c          |   56 +++--------------------------
 gst-libs/gst/sdp/gstsdpmessage.h          |    2 +-
 pkgconfig/gstreamer-sdp-uninstalled.pc.in |    1 +
 pkgconfig/gstreamer-sdp.pc.in             |    1 +
 5 files changed, 10 insertions(+), 54 deletions(-)

diff --git a/gst-libs/gst/sdp/Makefile.am b/gst-libs/gst/sdp/Makefile.am
index 2f22899..a59815e 100644
--- a/gst-libs/gst/sdp/Makefile.am
+++ b/gst-libs/gst/sdp/Makefile.am
@@ -7,8 +7,8 @@ lib_LTLIBRARIES = libgstsdp- at GST_MAJORMINOR@.la
 
 libgstsdp_ at GST_MAJORMINOR@_la_SOURCES = gstsdpmessage.c
 
-libgstsdp_ at GST_MAJORMINOR@_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS)
-libgstsdp_ at GST_MAJORMINOR@_la_LIBADD = $(GST_LIBS) $(WIN32_LIBS)
+libgstsdp_ at GST_MAJORMINOR@_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(GIO_CFLAGS)
+libgstsdp_ at GST_MAJORMINOR@_la_LIBADD = $(GST_LIBS) $(GIO_LIBS)
 libgstsdp_ at GST_MAJORMINOR@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS) $(GST_LT_LDFLAGS)
 
 if HAVE_INTROSPECTION
diff --git a/gst-libs/gst/sdp/gstsdpmessage.c b/gst-libs/gst/sdp/gstsdpmessage.c
index cd95c7c..5f7540c 100644
--- a/gst-libs/gst/sdp/gstsdpmessage.c
+++ b/gst-libs/gst/sdp/gstsdpmessage.c
@@ -61,28 +61,7 @@
 #include <stdlib.h>
 #include <string.h>
 
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
-#include <glib.h>               /* for G_OS_WIN32 */
-#include <gst/gstinfo.h>        /* For GST_STR_NULL */
-
-#ifdef G_OS_WIN32
-/* ws2_32.dll has getaddrinfo and freeaddrinfo on Windows XP and later.
- * minwg32 headers check WINVER before allowing the use of these */
-#ifndef WINVER
-#define WINVER 0x0501
-#endif
-#ifdef _MSC_VER
-#include <Winsock2.h>
-#endif
-#include <ws2tcpip.h>
-#else
-#include <sys/socket.h>
-#include <netdb.h>
-#include <netinet/in.h>
-#endif
+#include <gio/gio.h>
 
 #include "gstsdpmessage.h"
 
@@ -338,10 +317,8 @@ gboolean
 gst_sdp_address_is_multicast (const gchar * nettype, const gchar * addrtype,
     const gchar * addr)
 {
-  struct addrinfo hints;
-  struct addrinfo *ai;
-  struct addrinfo *res;
   gboolean ret = FALSE;
+  GInetAddress *iaddr;
 
   g_return_val_if_fail (addr, FALSE);
 
@@ -349,32 +326,9 @@ gst_sdp_address_is_multicast (const gchar * nettype, const gchar * addrtype,
   if (nettype && strcmp (nettype, "IN") != 0)
     return FALSE;
 
-  memset (&hints, 0, sizeof (hints));
-  hints.ai_socktype = SOCK_DGRAM;
-
-  /* set the address type as a hint */
-  if (addrtype) {
-    if (!strcmp (addrtype, "IP4"))
-      hints.ai_family = AF_INET;
-    else if (!strcmp (addrtype, "IP6"))
-      hints.ai_family = AF_INET6;
-  }
-
-  if (getaddrinfo (addr, NULL, &hints, &res) < 0)
-    return FALSE;
-
-  for (ai = res; !ret && ai; ai = ai->ai_next) {
-    if (ai->ai_family == AF_INET)
-      ret =
-          IN_MULTICAST (ntohl (((struct sockaddr_in *) ai->ai_addr)->
-              sin_addr.s_addr));
-    else
-      ret =
-          IN6_IS_ADDR_MULTICAST (&((struct sockaddr_in6 *) ai->
-              ai_addr)->sin6_addr);
-  }
-
-  freeaddrinfo (res);
+  iaddr = g_inet_address_new_from_string (addr);
+  ret = g_inet_address_get_is_multicast (iaddr);
+  g_object_unref (iaddr);
 
   return ret;
 }
diff --git a/gst-libs/gst/sdp/gstsdpmessage.h b/gst-libs/gst/sdp/gstsdpmessage.h
index 069eb38..1b0ef97 100644
--- a/gst-libs/gst/sdp/gstsdpmessage.h
+++ b/gst-libs/gst/sdp/gstsdpmessage.h
@@ -44,7 +44,7 @@
 #define __GST_SDP_MESSAGE_H__
 
 #include <glib.h>
-
+#include <gst/gst.h>
 #include <gst/sdp/gstsdp.h>
 
 G_BEGIN_DECLS
diff --git a/pkgconfig/gstreamer-sdp-uninstalled.pc.in b/pkgconfig/gstreamer-sdp-uninstalled.pc.in
index bd1d89d..1cabc50 100644
--- a/pkgconfig/gstreamer-sdp-uninstalled.pc.in
+++ b/pkgconfig/gstreamer-sdp-uninstalled.pc.in
@@ -11,6 +11,7 @@ Name: GStreamer SDP Library, Uninstalled
 Description: SDP helper functions, uninstalled
 Version: @VERSION@
 Requires: glib-2.0
+Requires.private: gio-2.0
 Libs: @abs_top_builddir@/gst-libs/gst/sdp/libgstsdp- at GST_MAJORMINOR@.la
 Cflags: -I at abs_top_srcdir@/gst-libs -I at abs_top_builddir@/gst-libs
 
diff --git a/pkgconfig/gstreamer-sdp.pc.in b/pkgconfig/gstreamer-sdp.pc.in
index 9bb0f40..4ca4105 100644
--- a/pkgconfig/gstreamer-sdp.pc.in
+++ b/pkgconfig/gstreamer-sdp.pc.in
@@ -10,6 +10,7 @@ typelibdir=${libdir}/girepository-1.0
 Name: GStreamer SDP Library
 Description: SDP helper functions
 Requires: glib-2.0
+Requires.private: gio-2.0
 Version: @VERSION@
 Libs: -L${libdir} -lgstsdp- at GST_MAJORMINOR@
 Cflags: -I${includedir}



More information about the gstreamer-commits mailing list