mpdparser: fix escape sequence in URL template resolving
authorGianluca Gennari <gennarone@gmail.com>
Mon, 17 Dec 2012 14:46:32 +0000 (15:46 +0100)
committerThiago Santos <thiago.sousa.santos@collabora.com>
Wed, 8 May 2013 21:14:33 +0000 (18:14 -0300)
ext/dash/gstmpdparser.c

index a165d3eb0fc594177a3c9b9a03cade22e18c8925..1256b544771dbc1e8b58e549f145fc299fdf883d 100644 (file)
@@ -2205,6 +2205,7 @@ gst_mpdparser_build_URL_from_template (const gchar *url_template,
   static gchar default_format[] = "%01d";
   gchar **tokens, *token, *ret, *format;
   gint i, num_tokens;
+  gboolean last_token_par = TRUE; /* last token was a parameter */
 
   g_return_val_if_fail (url_template != NULL, NULL);
   tokens = g_strsplit_set (url_template, "$", -1);
@@ -2221,29 +2222,36 @@ gst_mpdparser_build_URL_from_template (const gchar *url_template,
     if (!g_strcmp0 (token, "RepresentationID")) {
       tokens[i] = g_strdup_printf ("%s", id);
       g_free (token);
+      last_token_par = TRUE;
     } else if (!strncmp (token, "Number", 6)) {
       if (strlen (token) > 6) {
         format = token + 6; /* format tag */
       }
       tokens[i] = g_strdup_printf (format, number);
       g_free (token);
+      last_token_par = TRUE;
     } else if (!strncmp (token, "Bandwidth", 9)) {
       if (strlen (token) > 9) {
         format = token + 9; /* format tag */
       }
       tokens[i] = g_strdup_printf (format, bandwidth);
       g_free (token);
+      last_token_par = TRUE;
     } else if (!strncmp (token, "Time", 4)) {
       if (strlen (token) > 4) {
         format = token + 4; /* format tag */
       }
       tokens[i] = g_strdup_printf (format, time);
       g_free (token);
+      last_token_par = TRUE;
     } else if (!g_strcmp0 (token, "")) {
-      if (i > 0) {
+      if (!last_token_par) {
         tokens[i] = g_strdup_printf ("%s", "$");
         g_free (token);
+        last_token_par = TRUE;
       }
+    } else {
+      last_token_par = FALSE;
     }
   }