summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog11
-rw-r--r--docs/libs/gst-plugins-base-libs-sections.txt3
-rw-r--r--gst-libs/gst/rtsp/gstrtspurl.c49
-rw-r--r--gst-libs/gst/rtsp/gstrtspurl.h6
-rw-r--r--win32/common/libgstrtsp.def2
5 files changed, 71 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 6a220912..c184ccb3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2009-01-08 Wim Taymans <wim.taymans@collabora.co.uk>
+
+ * docs/libs/gst-plugins-base-libs-sections.txt:
+ * gst-libs/gst/rtsp/gstrtspurl.c: (register_rtsp_url_type),
+ (gst_rtsp_url_get_type), (gst_rtsp_url_copy):
+ * gst-libs/gst/rtsp/gstrtspurl.h:
+ * win32/common/libgstrtsp.def:
+ Add GType for GstRTSPUrl and expose a copy function because we can.
+ API: gst_rtsp_url_copy()
+ Fixes #567027.
+
2009-01-07 Sebastian Dröge <sebastian.droege@collabora.co.uk>
* configure.ac:
diff --git a/docs/libs/gst-plugins-base-libs-sections.txt b/docs/libs/gst-plugins-base-libs-sections.txt
index 809a72bc..ef117f33 100644
--- a/docs/libs/gst-plugins-base-libs-sections.txt
+++ b/docs/libs/gst-plugins-base-libs-sections.txt
@@ -1242,10 +1242,13 @@ gst_rtsp_message_dump
GST_RTSP_DEFAULT_PORT
GstRTSPUrl
gst_rtsp_url_parse
+gst_rtsp_url_copy
gst_rtsp_url_free
gst_rtsp_url_get_request_uri
gst_rtsp_url_set_port
gst_rtsp_url_get_port
+<SUBSECTION Standard>
+gst_rtsp_url_get_type
</SECTION>
<SECTION>
diff --git a/gst-libs/gst/rtsp/gstrtspurl.c b/gst-libs/gst/rtsp/gstrtspurl.c
index 1a7a3e1f..4885160c 100644
--- a/gst-libs/gst/rtsp/gstrtspurl.c
+++ b/gst-libs/gst/rtsp/gstrtspurl.c
@@ -58,6 +58,24 @@
#include "gstrtspurl.h"
+static void
+register_rtsp_url_type (GType * id)
+{
+ *id = g_boxed_type_register_static ("GstRTSPUrl",
+ (GBoxedCopyFunc) gst_rtsp_url_copy, (GBoxedFreeFunc) gst_rtsp_url_free);
+}
+
+GType
+gst_rtsp_url_get_type (void)
+{
+ static GType id;
+ static GOnce once = G_ONCE_INIT;
+
+ g_once (&once, (GThreadFunc) register_rtsp_url_type, &id);
+ return id;
+}
+
+
#define RTSP_PROTO "rtsp://"
#define RTSP_PROTO_LEN 7
#define RTSPU_PROTO "rtspu://"
@@ -177,6 +195,37 @@ invalid:
}
/**
+ * gst_rtsp_url_copy:
+ * @url: a #GstRTSPUrl
+ *
+ * Make a copy of @url.
+ *
+ * Returns: a copy of @url. Free with gst_rtsp_url_free () after usage.
+ *
+ * Since: 0.10.22
+ */
+GstRTSPUrl *
+gst_rtsp_url_copy (GstRTSPUrl * url)
+{
+ GstRTSPUrl *res;
+
+ g_return_val_if_fail (url != NULL, NULL);
+
+ res = g_new0 (GstRTSPUrl, 1);
+
+ res->transports = url->transports;
+ res->family = url->family;
+ res->user = g_strdup (url->user);
+ res->passwd = g_strdup (url->passwd);
+ res->host = g_strdup (url->host);
+ res->port = url->port;
+ res->abspath = g_strdup (url->abspath);
+ res->query = g_strdup (url->query);
+
+ return res;
+}
+
+/**
* gst_rtsp_url_free:
* @url: a #GstRTSPUrl
*
diff --git a/gst-libs/gst/rtsp/gstrtspurl.h b/gst-libs/gst/rtsp/gstrtspurl.h
index 39ad316f..30764faf 100644
--- a/gst-libs/gst/rtsp/gstrtspurl.h
+++ b/gst-libs/gst/rtsp/gstrtspurl.h
@@ -44,6 +44,7 @@
#define __GST_RTSP_URL_H__
#include <glib.h>
+#include <glib-object.h>
#include <gst/rtsp/gstrtspdefs.h>
#include <gst/rtsp/gstrtsptransport.h>
@@ -57,6 +58,8 @@ G_BEGIN_DECLS
*/
#define GST_RTSP_DEFAULT_PORT 554
+#define GST_TYPE_RTSP_URL (gst_rtsp_url_get_type())
+
typedef struct _GstRTSPUrl GstRTSPUrl;
/**
@@ -83,7 +86,10 @@ struct _GstRTSPUrl {
gchar *query;
};
+GType gst_rtsp_url_get_type (void);
+
GstRTSPResult gst_rtsp_url_parse (const gchar *urlstr, GstRTSPUrl **url);
+GstRTSPUrl* gst_rtsp_url_copy (GstRTSPUrl *url);
void gst_rtsp_url_free (GstRTSPUrl *url);
gchar* gst_rtsp_url_get_request_uri (GstRTSPUrl *url);
diff --git a/win32/common/libgstrtsp.def b/win32/common/libgstrtsp.def
index b2273844..e621040d 100644
--- a/win32/common/libgstrtsp.def
+++ b/win32/common/libgstrtsp.def
@@ -75,9 +75,11 @@ EXPORTS
gst_rtsp_transport_init
gst_rtsp_transport_new
gst_rtsp_transport_parse
+ gst_rtsp_url_copy
gst_rtsp_url_free
gst_rtsp_url_get_port
gst_rtsp_url_get_request_uri
+ gst_rtsp_url_get_type
gst_rtsp_url_parse
gst_rtsp_url_set_port
gst_rtsp_version_as_text