soup: Handle icy and icyx URI schemes
authorBastien Nocera <hadess@hadess.net>
Wed, 11 Apr 2012 11:42:17 +0000 (12:42 +0100)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Mon, 23 Apr 2012 13:34:54 +0000 (15:34 +0200)
As handled by QuickTime (for icy), and Orban/Coding Technologies
AAC/aacPlus Player (for icyx). See also:
https://bugzilla.gnome.org/show_bug.cgi?id=394207
https://bugzilla.gnome.org/show_bug.cgi?id=403285

https://bugzilla.gnome.org/show_bug.cgi?id=673899

ext/soup/gstsouphttpsrc.c

index 8c84d67..e35e39a 100644 (file)
@@ -1362,10 +1362,25 @@ static gboolean
 gst_soup_http_src_set_location (GstSoupHTTPSrc * src, const gchar * uri,
     GError ** error)
 {
+  const char *alt_schemes[] = { "icy://", "icyx://" };
+  guint i;
+
   if (src->location) {
     g_free (src->location);
     src->location = NULL;
   }
+
+  if (uri == NULL)
+    return FALSE;
+
+  for (i = 0; i < G_N_ELEMENTS (alt_schemes); i++) {
+    if (g_str_has_prefix (uri, alt_schemes[i])) {
+      src->location =
+          g_strdup_printf ("http://%s", uri + strlen (alt_schemes[i]));
+      return TRUE;
+    }
+  }
+
   src->location = g_strdup (uri);
 
   return TRUE;
@@ -1399,7 +1414,7 @@ gst_soup_http_src_uri_get_type (GType type)
 static const gchar *const *
 gst_soup_http_src_uri_get_protocols (GType type)
 {
-  static const gchar *protocols[] = { "http", "https", NULL };
+  static const gchar *protocols[] = { "http", "https", "icy", "icyx", NULL };
 
   return protocols;
 }