title: Streaming mp3 on Android via gstreamer, unable to create pipeline with dynamic location
body: <p>I am having some trouble creating a pipeline for remote mp3 playback. If I construct the pipeline like this:</p>
  
  <pre><code>data-&gt;pipeline = gst_parse_launch("souphttpsrc location=https://xxxx ! mad ! autoaudiosink", &amp;error);
  </code></pre>
  
  <p>It plays fine. However, I have to have a dynamic location, so I have to keep a reference to the source pad. This is what I have</p>
  
  <pre><code>data-&gt;source = gst_element_factory_make("souphttpsrc", "source"); 
  decoder = gst_element_factory_make ("mad","decoder");
  sink = gst_element_factory_make ("autoaudiosink", "sink");
  
  data-&gt;pipeline = gst_pipeline_new ("mp3-player");
  if (!data-&gt;pipeline || !data-&gt;source || !decoder || !sink) {
      g_printerr ("Not all elements could be created.\n");
      return NULL;
  }
  
  gst_bin_add_many (GST_BIN (data-&gt;pipeline), data-&gt;source, decoder, sink, NULL);
  if (!gst_element_link_many (data-&gt;source, decoder, sink, NULL)) {
      gchar *message = g_strdup_printf("Unable to build pipeline: %s", error-&gt;message);
      g_clear_error (&amp;error);
      set_ui_message(message, data);
      g_free (message);
      return NULL;
  }
  </code></pre>
  
  <p>Then I set the location via</p>
  
  <pre><code>g_object_set(data-&gt;source, "location", char_uri, NULL);
  </code></pre>
  
  <p>However nothing plays. I also see the following output:</p>
  
  <blockquote>
    <p>ERROR/GStreamer+opensles_sink(17065): 0:00:00.401251335 0x6f43f520 openslessink.c:152:_opensles_query_capabilities: engine.GetInterface(IODeviceCapabilities) failed(0x0000000c)</p>
  </blockquote>
  
  <p>Anyone had experience with this before? The only solution I can think of is to rebuild the pipeline everytime I want to change the source location, but that seems like overkill.</p>