rtsp: add method to parse options list
authorWim Taymans <wim.taymans@collabora.co.uk>
Tue, 27 Nov 2012 10:02:19 +0000 (11:02 +0100)
committerWim Taymans <wim.taymans@collabora.co.uk>
Tue, 27 Nov 2012 10:15:34 +0000 (11:15 +0100)
docs/libs/gst-plugins-base-libs-sections.txt
gst-libs/gst/rtsp/gstrtspdefs.c
gst-libs/gst/rtsp/gstrtspdefs.h

index 89e7cd9..c2d4632 100644 (file)
@@ -1275,6 +1275,7 @@ gst_rtsp_header_as_text
 gst_rtsp_header_allow_multiple
 gst_rtsp_status_as_text
 gst_rtsp_options_as_text
+gst_rtsp_options_from_text
 gst_rtsp_find_header_field
 gst_rtsp_find_method
 <SUBSECTION Standard>
index aaf15bf..2fdc9c9 100644 (file)
@@ -466,6 +466,46 @@ gst_rtsp_options_as_text (GstRTSPMethod options)
 }
 
 /**
+ * gst_rtsp_options_from_text:
+ * @options: a comma separated list of options
+ *
+ * Convert the comma separated list @options to a #GstRTSPMethod bitwise or
+ * of methods. This functions is the reverse of gst_rtsp_options_as_text().
+ *
+ * Returns: a #GstRTSPMethod
+ *
+ * Since: 1.1.1
+ */
+GstRTSPMethod
+gst_rtsp_options_from_text (const gchar * options)
+{
+  GstRTSPMethod methods;
+  gchar **ostr;
+  gint i;
+
+  /* The string is like:
+   * OPTIONS, DESCRIBE, ANNOUNCE, PLAY, SETUP, ...
+   */
+  ostr = g_strsplit (options, ",", 0);
+
+  methods = 0;
+  for (i = 0; ostr[i]; i++) {
+    gchar *stripped;
+    GstRTSPMethod method;
+
+    stripped = g_strstrip (ostr[i]);
+    method = gst_rtsp_find_method (stripped);
+
+    /* keep bitfield of supported methods */
+    if (method != GST_RTSP_INVALID)
+      methods |= method;
+  }
+  g_strfreev (ostr);
+
+  return methods;
+}
+
+/**
  * gst_rtsp_header_allow_multiple:
  * @field: a #GstRTSPHeaderField
  *
index 5246fd2..6a10ec3 100644 (file)
@@ -399,6 +399,7 @@ const gchar*       gst_rtsp_header_as_text     (GstRTSPHeaderField field);
 const gchar*       gst_rtsp_status_as_text     (GstRTSPStatusCode code);
 
 gchar*             gst_rtsp_options_as_text    (GstRTSPMethod options);
+GstRTSPMethod      gst_rtsp_options_from_text  (const gchar *options);
 
 GstRTSPHeaderField gst_rtsp_find_header_field  (const gchar *header);
 GstRTSPMethod      gst_rtsp_find_method        (const gchar *method);